Cave Converter Change Log
-------------------------
27 May 2014
- Issued updated regressions tests with the same source as the 2013117-beta release to support 
  building on Java 8 for Debian package update
17 Nov. 2013
- Fixed a bug in LRUD data generation which caused LRUD data at stations only appearing as the 'to
  station' in a pair of legs to be calculated using the bearing of only one of the two legs 
  (i.e. When two legs are measured to the same station as typically happens when the instruments 
  are read at alternate stations 'leap frogging' stations).
- Fixed a bug in Survex Writer passage data block generation which meant it could get the left and
  right measurements reversed when the first leg in a block is in a forward direction but the second
  leg is in reverse.
16 Oct. 2013
- Fixed bugs in Survex Writer passage data block generation which meant it only generated sensible
  data if all survey legs were measured in the direction the survey was travelling. Now legs measured
  in the reverse direction are handled, and legs do not have immediately follow from the previous 
  'to' station of the last leg for the passage data to be structured sensibly.
- Fixed bug in PocketTopo parser which repeated the station name given to the 'to' station for a splay
  leg when the splays were not all located together in the survey.
21 Sep. 2013 (beta)
- Moved code to generate LRUD (left, right, up, down) passage dimensions from the PocketTopo parser 
  into the Survey Series class.
- Added additional command line options: 
  - splays/nosplays: Survex writer and Toporobot writer now have option to not output splays.
  - lrud: Option to generate LRUD data from splays (can be used on any conversion).
- Added rounding of LRUD values to 2 decimal places in Survex file writer.
- Changed LRUD generation to better select the best splay for each dimension, and to calculate 
  the distance for the LRUD dimensions based on the angle of the splay to the passage direction
  instead of using the total length of the splay. The splay selected when there is a choice is now
  the splay giving the biggest dimension in the direction of the LRUD measurement rather than using
  the splay closest to the compass bearing of the passage dimension measurement direction. Passage 
  direction is now calculated from the average bearing of the forward leg and the previous leg 
  arriving at the station. When more than two legs join at a station then the previous leg will be
  the one with the closest bearing to the bearing of the onward leg.
- Splays fired as back shots are now excluded from LRUD generation.
- Splays are no longer removed from the output when used to generate LRUD dimensions.
- The Survex writer now groups passage data from LRUD dimensions into blocks of readings corresponding
  to the survey legs in the file (previously one block of passage data was output per series with all
  stations listed with no respect for their connectivity).
- Fixed bug where compass calibration was used instead of declination calibration in PocketTopo parser, 
  Survex parser and Survex writer.
- Added duplicate and surface flags to leg class, and added reading of flags to Survex parser and writing 
  them to Survex writer.
- Added date reading to Survex parser.
- Fixed bug in utility function to calculate the average of a set of compass bearings (thanks to Peter Kellaway
  for pointing me to a much more robust and elegant solution). This bug does not affect the use of the function
  in previous versions (where it was only used to convert PocketTopo triple leg readings into one average leg)
  but it did show up in the new LRUD generation code when calculating the average bearing of two legs either
  side of a station when the passage went round a sharp bend.
- Fixed bug in Toporobot Writer which caused passage dimensions data to be output on the wrong station
  (LRUD values for the 'from' station of each leg were being put on the 'to' station of each leg).
- PocketTopo file reader no longer reorders the splay legs for each station (something which used to happen
  due to the old code which sorted splays into groups for L,R,U,D measurements in this reader).
- Made the logging output less verbose, and fixed the survey summary details log output to include inner series.
16 Mar. 2013
- Fixed bug in Toporobot writer which left survey series unlinked when two series crossed over
  each other in the middle of each series (i.e. Not joined at the start or end of either series).
05 Mar. 2013
- Added support for nested series in the data model. Survex reader and writer no longer flatten
  the survey series hierarchy when series are inside other series.
- Fixed issue where Survex output files put data inside duplicated begin/end blocks.
- Improved series naming in PocketTopo converted data. Series now have the series number as 
  their name rather than the full cave name and series number, so the name is not duplicated
  in the outer series name and inner series names. The outer series name is now the full name
  from the input file (previously any numbers on the end of the name were removed).
- PocketTopo converted data links to series not included in the PocketTopo file now use the
  correct series number and station number for the linked external series instead of dummy data.
- Toporobot format generation is much faster, and handles more complex cave surveys which
  could crash the converter in previous versions.
- Fixed crash in Toporobot writer when converting directly from PocketTopo format.

31 Dec. 2012
- Major refactoring of internal data model of converter. All code changes are now tested using 
  an automated test framework to ensure conversions still produce the same output as previous
  releases of the converter.
- Renamed main class and jar file to 'CaveConverter' and attempted to use this name consistently
  in code and documentation.
- Added support for trip comments in PocketTopo txt export format file reader. Previous versions 
  threw an error if files contained trip comments.
- Added support for stations having more than 26 splays. Previous versions generated invalid
  survey station names in output files for splays when there were more than 26 splays off a 
  single station. Now the first 26 stations are numbered a-z, then the sequence of generated
  'to' station names will continue aa, ab, ac .. az, ba, bb, etc.
- Fixed output file line endings issue where previous versions always generated Unix style line
  endings. Now files will have the line endings applicable to the platform the converter is
  being run on. So on Windows the output files will have Windows style line endings.

09 Aug. 2011
- Changed PocketTopo txt file reader to keep all the splay shots at any station where more 
  than just a single left, right, up and down dimension was measured. Previously the code
  picked one of the shots to be converted into an LRUD dimension and only retained the others
  as splays. Now it retains all of them in case the user did not agree with the one which the
  code picked as the best match for a passage dimension number. If there is just one splay for
  each of the left, right, up, down directions then these are converted to LRUD data and no
  splays are output for that station.

04 Oct. 2010
- Fixed DXF file reading code to handle a wider range of dxf files. Specifically files that 
  do not contain either 'Centreline' or 'AcDbEntity' headings in LINE definitions. Now it 
  will just try to locate the '10', '20', '30' headers in the LINE definition.
  
15 Aug. 2010
- Fixed bug where zero length legs to equate a station with one in a survey series not in the 
  Pocket Topo txt file being converted would crash the converter if the station in the series 
  not in the file was the second station in the leg. i.e. When in Pocket Topo you had tied in 
  to another survey part way along the survey of new passages, or surveyed back from the end
  point in a new passage to tie in to a known passage at the end of the survey.
  
- The Survex writer will now output survey dates so that survex can process the date and 
  allow the survey to be viewed by date in Aven.
  
- The Survex writer will now put SPLAY and NOT SPLAY flags around splay legs so that they do 
  not get counted in the total length calculated by Survex.
