view flys-backend/ChangeLog @ 1235:47ce1fab8464

Added a static function that returns all CrossSectionTracks of a specific river. flys-backend/trunk@2611 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 30 Aug 2011 15:14:59 +0000
parents c5c48f52dc7b
children 324cb486db9f
line wrap: on
line source
2011-08-30  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/CrossSectionTrack.java: New
	  static function to retrieve all CrossSectionTracks of a specific river.

2011-08-25  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/utils/FileTools.java: Moved to
	  artifacts-common module.

	* src/main/java/de/intevation/flys/importer/parsers/PegelGltParser.java,
	  src/main/java/de/intevation/flys/importer/parsers/PRFParser.java,
	  src/main/java/de/intevation/flys/importer/parsers/HYKParser.java,
	  src/main/java/de/intevation/flys/importer/parsers/AnnotationsParser.java,
	  src/main/java/de/intevation/flys/importer/parsers/InfoGewParser.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java,
	  src/main/java/de/intevation/flys/importer/ImportGauge.java: Adjusted
	  imports of FileTools.

2011-08-25  Felix Wolfsteller <felix.wolfsteller@intevation.de>

	* src/main/java/de/intevation/flys/model/Gauge.java (getMainValues)
	  (setMainValues):
	  New method and mapping to get/set MainValues of a Gauge. Essentially
	  developed by Sascha L. Teichmann.

2011-08-22  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Reverted the default db dialect to PostgreSQL - this has been changed to
	  PostGIS by accident.
	  Configure the dialect "org.hibernatespatial.postgis.PostgisDialect" to
	  use the PostGIS stuff.

2011-08-22  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/RiverAxis.java: Added a function
	  that returns the RiverAxis for a given River.

	* src/main/java/de/intevation/flys/backend/SpatialInfo.java: Use the new
	  function of RiverAxis to retrieve the RiverAxis.

2011-08-18  Ingo Weinzierl <ingo@intevation.de>

	* doc/schema/postgresql-spatial.sql: The PostGIS database schema for
	  FLYS spatial data.

	* src/main/java/de/intevation/flys/model/CrossSectionTrack.java,
	  src/main/java/de/intevation/flys/model/RiverAxis.java,
	  src/main/java/de/intevation/flys/model/Line.java,
	  src/main/java/de/intevation/flys/model/Building.java,
	  src/main/java/de/intevation/flys/model/Fixpoint.java: Model classes that
	  represent FLYS spatial data.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Registered model classes.

	* pom.xml: Added dependencies to HibernateSpatial and PostGIS.

	* src/main/java/de/intevation/flys/backend/SpatialInfo.java,
	  contrib/spatial-info.sh: A small demo application that prints out some
	  information about spatial data of specific rivers. Modify the system
	  property -Dflys.backend.spatial.river to get information of a river of
	  your choice.

2011-07-31	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	Re-enabled Hibernate schema dumps.

	* src/main/java/de/intevation/flys/App.java: Removed old code
	  and use new SessionFactoryProvider infrastructure.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Added methods to create db configurations without opening them.
	  Useful for introspection only purposes.

2011-07-31	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* pom.xml: Bumped Apache DBCP up to 1.4 to use the same version
	  as artifact database.

2011-07-28	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  Make use of the LRU cache from artifacts common.

2011-07-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added missing foreign key contraint on hyks table.
	  To update existing databases:

	  ALTER TABLE hyks ADD CONSTRAINT hyks_river_id_fkey FOREIGN KEY (river_id) REFERENCES rivers(id);

2011-07-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/parsers/HYKParser.java:
	  Check if zone coordinates in HYKs are swapped and warn the user.

2011-07-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/HYK.java
	  src/main/java/de/intevation/flys/importer/parsers/HYKParser.java,
	  src/main/java/de/intevation/flys/importer/ImportHYKFormation.java,
	  src/main/java/de/intevation/flys/importer/ImportHYKEntry.java,
	  src/main/java/de/intevation/flys/importer/ImportHYK.java:
	  Various small fixes and some extra logging.

2011-07-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/Config.java: New.
	  Central singleton to configure the Importer.
	  Uses system properties by now:

	  flys.backend.importer.dry.run: boolean
	      default false. true: don't write to database.

	  flys.backend.importer.annotation.types: String
	      default unset. Filename of annotation type classifications.

	  flys.backend.importer.skip.gauges: boolean
	      default: false. true: don't parse/store *.glt, *.sta files

	  flys.backend.importer.skip.annotations: boolean
	      default: false. true: don't parse/store *.km files

	  flys.backend.importer.skip.prfs: boolean
	      default: false. true: don't parse/store *.prf files

	  flys.backend.importer.skip.hyks: boolean
	      default: false. true: don't parse/store *.hyk files

	  flys.backend.importer.skip.wst: boolean
	      default: false. true: don't parse/store river wst files

	  flys.backend.importer.skip.extra.wsts: boolean
	      default: false. true: don't parse/store extra *.zus, *.wst files

	  flys.backend.importer.skip.fixations: boolean
	      default: false. true: don't parse/store fixation *.wst files

	  flys.backend.importer.skip.official.lines: boolean
	      default: false. true: don't parse/store 'amtliche Linien' *.wst files

	  flys.backend.importer.skip.flood.water: boolean
	      default: false. true: don't parse/store 'HW-Marken' *.wst files

	  flys.backend.importer.skip.flood.protection: boolean
	      default: false. true: don't parse/store 'HW-Schutzanlagen' *.wst files

2011-07-18  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/HYKEntry.java: Fixed OrderBy
	  clause.

2011-07-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportHYKFormation.java,
	  src/main/java/de/intevation/flys/importer/ImportHYKFlowZone.java,
	  src/main/java/de/intevation/flys/importer/ImportHYKEntry.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java,
	  src/main/java/de/intevation/flys/importer/ImportHYK.java:
	  Store HYK data structures to database. Needs testing.

2011-07-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Parse the HYKs from the importer. TODO: Store them in database.

2011-07-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/parsers/HYKParser.java:
	  Create data structures while parsing.

	* src/main/java/de/intevation/flys/importer/ImportHYKFormation.java,
	  src/main/java/de/intevation/flys/importer/ImportHYK.java: Added
	  getters/setters to ease model wiring.

2011-07-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportHYKFormation.java,
	  src/main/java/de/intevation/flys/importer/ImportHYKFlowZone.java,
	  src/main/java/de/intevation/flys/importer/ImportHYKEntry.java,
	  src/main/java/de/intevation/flys/importer/ImportHYK.java: New.
	  Importer models for HYKs.

2011-07-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Each entry in a HYK can have
	  an optional 'Peilungsjahr' (measure) not only the whole HYK.
	  To update existing databases:
	  BEGIN;
	    ALTER TABLE hyks DROP COLUMN measure;
	    ALTER TABLE hyk_entries ADD COLUMN measure TIMESTAMP;
	  COMMIT;

	  * src/main/java/de/intevation/flys/model/HYKEntry.java,
	    src/main/java/de/intevation/flys/model/HYK.java:
	    Adjusted Hibernate models.

2011-07-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/parsers/HYKParser.java:
	  Added callback mechanism and recursive file search like in the PRF parser.
	  All BfG-HYK files seem to parse correctly now. TODO: Build the data structures.

	* src/main/java/de/intevation/flys/importer/parsers/PRFParser.java:
	  Added x.canRead() before accepting files for parsing.

2011-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/parsers/HYKParser.java:
	  Initial version of the HYK parser. Not ready, yet.

	* src/main/java/de/intevation/flys/importer/ImportHYKFlowZoneType.java:
	  Importer model for HYK flow zone types.

2011-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Argh! Added distance_{vl|hf|vr} to
	  wrong table.
	  To update existing databases:
	  BEGIN;
	    ALTER TABLE hyk_entries DROP COLUMN distance_vl;
	    ALTER TABLE hyk_entries DROP COLUMN distance_hf;
	    ALTER TABLE hyk_entries DROP COLUMN distance_vr;
	    ALTER TABLE hyk_formations ADD COLUMN distance_vl NUMERIC NOT NULL;
	    ALTER TABLE hyk_formations ADD COLUMN distance_hf NUMERIC NOT NULL;
	    ALTER TABLE hyk_formations ADD COLUMN distance_vr NUMERIC NOT NULL;
	  COMMIT;

	* src/main/java/de/intevation/flys/model/HYKFormation.java,
	  src/main/java/de/intevation/flys/model/HYKEntry.java:
	  Adjusted Hibernate models.

2011-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/utils/FileTools.java: Added method
	  walkTree() to traverse a directory tree. To be reused in HYK parser.

	* src/main/java/de/intevation/flys/importer/parsers/PRFParser.java:
	  Uses the FileTools.walkTree() method now to find all PRF file.

2011-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added missing columns.
	  To update existing databases:
	  BEGIN;
	    ALTER TABLE hyks ADD COLUMN measure TIMESTAMP;
	    ALTER TABLE hyk_entries ADD COLUMN distance_vl NUMERIC NOT NULL;
	    ALTER TABLE hyk_entries ADD COLUMN distance_hf NUMERIC NOT NULL;
	    ALTER TABLE hyk_entries ADD COLUMN distance_vr NUMERIC NOT NULL;
	  COMMIT;

	* src/main/java/de/intevation/flys/model/HYKEntry.java,
	  src/main/java/de/intevation/flys/model/HYK.java:
	  Adjusted Hibernate models.

2011-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/parsers/*.java:
	  New package. Moved the file parsers (*.gew, *.sta, *.at, *.glt, *.prf, *.km, *.wst)
	  into this package.

	* src/main/java/de/intevation/flys/importer/*.java: Adjusted the imports.

2011-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/HYKFormation.java,
	  src/main/java/de/intevation/flys/model/HYKEntry.java,
	  src/main/java/de/intevation/flys/model/HYKFlowZone.java,
	  src/main/java/de/intevation/flys/model/HYKFlowZoneType.java,
	  src/main/java/de/intevation/flys/model/HYK.java: New. The hibernate models
	  for the HYK structures.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Registered new models.

	* src/main/java/de/intevation/flys/model/CrossSection.java: Added
	  'order by' annotation for fetching the cross section lines.

2011-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added structures for HYKs "Hydraulische Kenngroessen"
	  To update existing databases:

	  BEGIN;
	    CREATE SEQUENCE HYKS_ID_SEQ;
	    CREATE TABLE hyks (
	        id          int PRIMARY KEY NOT NULL,
	        river_id    int             NOT NULL,
	        description VARCHAR(256)    NOT NULL
	    );
	    
	    CREATE SEQUENCE HYK_ENTRIES_ID_SEQ;
	    CREATE TABLE hyk_entries (
	        id     int PRIMARY KEY NOT NULL,
	        hyk_id int             NOT NULL REFERENCES hyks(id),
	        km     NUMERIC         NOT NULL,
	        UNIQUE (hyk_id, km)
	    );
	    
	    CREATE SEQUENCE HYK_FORMATIONS_ID_SEQ;
	    CREATE TABLE hyk_formations (
	        id            int PRIMARY KEY NOT NULL,
	        formation_num int             NOT NULL DEFAULT 0,
	        hyk_entry_id  int             NOT NULL REFERENCES hyk_entries(id),
	        top           NUMERIC         NOT NULL,
	        bottom        NUMERIC         NOT NULL,
	        UNIQUE (hyk_entry_id, formation_num)
	    );
	    
	    CREATE SEQUENCE HYK_FLOW_ZONE_TYPES_ID_SEQ;
	    CREATE TABLE hyk_flow_zone_types (
	        id          int PRIMARY KEY NOT NULL,
	        name        VARCHAR(50)     NOT NULL UNIQUE,
	        description VARCHAR(256)
	    );
	    
	    CREATE SEQUENCE HYK_FLOW_ZONES_ID_SEQ;
	    CREATE TABLE hyk_flow_zones (
	        id           int PRIMARY KEY NOT NULL,
	        formation_id int             NOT NULL REFERENCES hyk_formations(id),
	        type_id      int             NOT NULL REFERENCES hyk_flow_zone_types(id),
	        a            NUMERIC         NOT NULL,
	        b            NUMERIC         NOT NULL,
	        CHECK (a <= b)
	    );
	  COMMIT;

2011-07-13	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* pom.xml: Bumped Hibernate up to 3.6.5.

2011-07-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/utils/FileTools.java: Argh!
	  Forget to call the file hashing so only the file lengths were
	  compared.

2011-07-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/utils/FileTools.java:
	  Added a class HashedFile to compare files by there length
	  and a message digest. Digest can be set with system property
	  "flys.backend.file.cmp.digest" and defaults to MD5. Useful to
	  detect file duplicates.

	* src/main/java/de/intevation/flys/importer/PRFParser.java: Added
	  method prfAccept(File) to callback to check if a found PRF file
	  should be parsed. Useful to prevent parsing file duplicates.

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Use the HashedFile and the PRFParser.Callback to prevent
	  parsing of PRF duplicates.

2011-07-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Misspelled sequence.
	  To update existing databases:

	    DROP SEQUENCE CROSS_SECTION_LINES_SEQ;
		CREATE SEQUENCE CROSS_SECTION_LINES_ID_SEQ;

	* src/main/java/de/intevation/flys/importer/ImportCrossSection.java:
	  Added some logging because importing is slow.

	* src/main/java/de/intevation/flys/importer/ImportCrossSectionLine.java:
	  Prevent NPE if a cross section line from db has no points.

2011-07-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	Parse all PRFs in all subfolders of a river and store them
	as cross sections into the database. Needs testing!

	* src/main/java/de/intevation/flys/importer/ImportCrossSection.java,
	  src/main/java/de/intevation/flys/importer/ImportCrossSectionLine.java:
	  New. Importer models for cross sections.

	* src/main/java/de/intevation/flys/importer/XY.java:
	  New. Made top level class from inner PRFParser.XY.

	* src/main/java/de/intevation/flys/importer/PRFParser.java:
	  Moved out XY class. Renamed callback.

	* src/main/java/de/intevation/flys/model/CrossSection.java,
	  src/main/java/de/intevation/flys/model/CrossSectionLine.java,
	  src/main/java/de/intevation/flys/model/CrossSectionPoint.java,
	  src/main/java/de/intevation/flys/importer/ImportTimeInterval.java:
	  Added convinience constructors.

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Parse and store cross sections into database.

2011-07-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Introduced a new table cross_section_line
	  holding the km of a set of points.

	* src/main/java/de/intevation/flys/model/CrossSectionLine.java:
	  New. Model for a single line of a "Querprofil".

	* src/main/java/de/intevation/flys/model/CrossSection.java: Removed
	  'km' and 'points' they are part of the line now.

	* src/main/java/de/intevation/flys/model/CrossSectionPoint.java:
	  They reference to the containing line now.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Registered new model.

	  To update existing databases:
	  BEGIN;
	      DROP SEQUENCE CROSS_SECTIONS_ID_SEQ;
	      DROP SEQUENCE CROSS_SECTION_POINTS_ID_SEQ;
	      DROP TABLE cross_section_points;
	      DROP TABLE cross_sections;
	      CREATE SEQUENCE CROSS_SECTIONS_ID_SEQ;
	      CREATE TABLE cross_sections (
	          id               int PRIMARY KEY NOT NULL,
	          river_id         int             NOT NULL REFERENCES rivers(id),
	          time_interval_id int                      REFERENCES time_intervals(id),
	          description      VARCHAR(256)
	      );
	      CREATE SEQUENCE CROSS_SECTION_LINES_SEQ;
	      CREATE TABLE cross_section_lines (
	          id               int PRIMARY KEY NOT NULL,
	          km               NUMERIC         NOT NULL,
	          cross_section_id int             NOT NULL REFERENCES cross_sections(id),
	          UNIQUE (km, cross_section_id)
	      );
	      CREATE SEQUENCE CROSS_SECTION_POINTS_ID_SEQ;
	      CREATE TABLE cross_section_points (
	          id                    int PRIMARY KEY NOT NULL,
	          cross_section_line_id int             NOT NULL REFERENCES cross_section_lines(id),
	          col_pos               int             NOT NULL,
	          x                     NUMERIC         NOT NULL,
	          y                     NUMERIC         NOT NULL,
	          UNIQUE (cross_section_line_id, col_pos)
	      );
	  COMMIT;

2011-07-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Dropped constraint that enforces the
	  uniqueness of km and river. This is violated because there are
	  more than one sounding in different year at the same km of a river.
	  Added column 'description' to the cross section table to make it
	  human readable.

	  To update existing databases:

		ALTER TABLE cross_sections DROP CONSTRAINT cross_sections_km_key;
		ALTER TABLE cross_sections ADD COLUMN description VARCHAR(256);

	* src/main/java/de/intevation/flys/model/CrossSection.java:
	  Added the description column to the Hibernate model.
	
2011-07-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Dropped constraint that enforces the
	  uniqueness of x in a "Querprofil-Spur". There are vertical lines
	  in the soundings so this constraint is violated.

	  To update existing databases:
	
		ALTER TABLE cross_section_points DROP CONSTRAINT cross_section_points_cross_section_id_key2;

2011-07-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/PRFParser.java:
	  Added a callback to be called from parsePRFs() if
	  a PRF was parsed successfully. Useful to scan whole
	  sub directories for PRF files.

2011-07-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/PRFParser.java:
	  Extract the year of sounding from file names. If not found
	  from the name of th containing directory. Description is made
	  of file name and parent directory file name.

2011-07-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/PRFParser.java:
	  Extracted the data. All BfG PRFs are parsed correctly, now.

2011-07-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/PRFParser.java:
	  Extract km from lines. TODO: extract data.

2011-07-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/PRFParser.java: New.
	  Parser for PRF files. TODO extra data and station from data lines.

2011-07-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Point3d.java: Deleted.
	  Not needed (braindead).

	* src/main/java/de/intevation/flys/model/CrossSectionPoint.java:
	  Directly store the x/y values now.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Removed registration of Point3d.

	To update existing databases:

	BEGIN;
	  ALTER TABLE cross_section_points DROP COLUMN point3d_id;
	  DROP SEQUENCE POINTS3D_ID_SEQ;
	  DROP TABLE points3d;
	  ALTER TABLE cross_section_points ADD COLUMN x NUMERIC NOT NULL;
	  ALTER TABLE cross_section_points ADD COLUMN y NUMERIC NOT NULL;
	  ALTER TABLE cross_section_points ADD CONSTRAINT
		cross_section_points_cross_section_id_key2 UNIQUE (cross_section_id, x);
	COMMIT;

2011-07-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/CrossSection.java,
	  src/main/java/de/intevation/flys/model/CrossSectionPoint.java:
	  New. Hibernate models for cross-sections and their forming points.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Registered the new models.

2011-07-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Point3d.java: New. point3d model
	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Registered point3d model.

2011-07-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Add relations for cross sections.
	  To update existing databases:
	     BEGIN;
	     	
	     CREATE SEQUENCE CROSS_SECTIONS_ID_SEQ;
	     CREATE TABLE cross_sections (
	         id               int PRIMARY KEY NOT NULL,
	         km               NUMERIC         NOT NULL,
	         river_id         int             NOT NULL REFERENCES rivers(id),
	         time_interval_id int             REFERENCES time_intervals(id),
	         UNIQUE (km, river_id)
	     );
	     
	     CREATE SEQUENCE POINTS3D_ID_SEQ;
	     CREATE TABLE points3d (
	         id int     PRIMARY KEY NOT NULL,
	         x  NUMERIC NOT NULL,
	         y  NUMERIC NOT NULL,
	         z  NUMERIC NOT NULL
	     );
	     
	     CREATE SEQUENCE CROSS_SECTION_POINTS_ID_SEQ;
	     CREATE TABLE cross_section_points (
	         id               int PRIMARY KEY NOT NULL,
	         cross_section_id int NOT NULL REFERENCES cross_sections(id),
	         point3d_id       int NOT NULL REFERENCES points3d(id),
	         col_pos          int NOT NULL,
	         UNIQUE (cross_section_id, point3d_id, col_pos),
	         UNIQUE (cross_section_id, col_pos)
	     );
	     
	     COMMIT;

2011-06-28  Ingo Weinzierl <ingo@intevation.de>

	Tagged RELEASE 2.4

2011-06-27  Ingo Weinzierl <ingo@intevation.de>

	* Changes: Prepared changes for the upcoming release.

2011-06-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/AnnotationsParser.java,
	  src/main/java/de/intevation/flys/importer/AnnotationClassifier.java,
	  src/main/java/de/intevation/flys/importer/AtFileParser.java,
	  src/main/java/de/intevation/flys/importer/ValueKey.java,
	  src/main/java/de/intevation/flys/importer/WstParser.java:
	  Removed trailing whitespace.

2011-06-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/AnnotationClassifier.java:
	  Removed superfluous imports.

2011-06-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java:
	  Added a method maxOverlap to determine the gauge which has
	  the max common length to a given interval. This is for
	  numerical stability in slightly overlapping gauge ranges.

2011-06-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java: When
	looking up a gauge by km containment use precision of 1e-6.

2011-06-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java:
	  Added method to find gauge by its name.

2011-06-19	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/annotation-types.xml: Fixed some rules.

	* src/main/java/de/intevation/flys/importer/Importer.java,
	  src/main/java/de/intevation/flys/importer/InfoGewParser.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Call the right constructors now.

	* src/main/java/de/intevation/flys/importer/ImportAnnotationType.java:
	  Added getter/setter for name property.

	* src/main/java/de/intevation/flys/importer/AnnotationsParser.java:
	  Print duplicated at WARN level not as DEBUG.

	* src/main/java/de/intevation/flys/importer/AnnotationClassifier.java:
	  Fixed XPath expression to build the internal lookup structures
	  correctly.

2011-06-19	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	Added classification of annotation types. Needs testing!

	* doc/annotation-types.xml: New. Rules to classify the different
	  types of annotations. The classification works like this:

	  There are unique types like 'Bruecke', 'Pegel' and so on.
	  They are defined in the /annotation/type section and
	  identified by their name. One of the types can be set 
	  as the default type if no rule applies.

	  In the /annotation/pattern section are two types of pattern.

	  1 - file pattern: If a KM file is opened its filename is
	      matched against the regular expressions of these
		  patterns. If a match is found the corresponding type
		  is used as the default type in the open file.
		  If no match is found the global default type is used
		  as the default type.

	  2 - line patterns: For each line of an open KM file these
	      patterns are applied to find a match. If a match is
		  found the corresponding type is used as the type of
		  the annotation. If no match is found the default
		  file default is assumed to be the right type. For
		  the file default see 1.

	* src/main/java/de/intevation/flys/importer/Importer.java:
	  To activate the annotation type classification set
	  the system property

	      'flys.backend.importer.annotation.types'

	  to the path of a XML looking like the annotation-types.xml
	  file. If the system property is not set no classification
	  is done.

	* src/main/java/de/intevation/flys/importer/AnnotationClassifier.java:
	  New. Implements the classification.
	  
	* src/main/java/de/intevation/flys/importer/AnnotationsParser.java,
	  src/main/java/de/intevation/flys/importer/InfoGewParser.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Looped through the annotation type classification.

2011-06-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java:
	  Added method to find gauge by a position lying in its range.

2011-06-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	First part of flys/issue18

	* doc/schema/postgresql.sql: Add new table 'annotation_types'.
	  To update existing databases:
	    BEGIN;
	      CREATE SEQUENCE ANNOTATION_TYPES_ID_SEQ;
	      CREATE TABLE annotation_types (
	          id    int PRIMARY KEY NOT NULL,
	          name  VARCHAR(256)    NOT NULL UNIQUE
	      );
		  ALTER TABLE annotations ADD COLUMN type_id int REFERENCES annotation_types(id);
	    COMMIT;

	* doc/schema/postgresql-cleanup.sql: Removed. Hopeless out-dated.

	* src/main/java/de/intevation/flys/model/AnnotationType.java:
	  New. Hibernate model to access the type.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Register the new backend type.

	* src/main/java/de/intevation/flys/model/Annotation.java:
	  References the annotation type.

	* src/main/java/de/intevation/flys/importer/ImportAnnotationType.java:
	  New. Model to help import the annotation type.

	* src/main/java/de/intevation/flys/importer/ImportAnnotation.java:
	  Uses the import type.

	* src/main/java/de/intevation/flys/importer/AnnotationsParser.java:
	  Set the annotation type to 'null'. TODO: Do the classification!

2011-06-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/AtFileParser.java:
	  Fix for flys/issue110. start index was shifted by one.

2011-06-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportAnnotation.java:
	  Forgot to store reference to edge.

2011-06-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	 * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	   Register backend model.

	 * src/main/java/de/intevation/flys/importer/ImportEdge.java: New. Model
	   for importing the edges.

	 * src/main/java/de/intevation/flys/importer/AnnotationsParser.java:
	   Parses the edges of an annotation, too.

2011-06-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added table edges to model 'Kanten' of an annotation.
	  To update existing databases:
	    BEGIN;
	      CREATE SEQUENCE EDGES_ID_SEQ;
	      CREATE TABLE edges (
	        id     int PRIMARY KEY NOT NULL,
	        top    NUMERIC,
	        bottom NUMERIC);
	      ALTER TABLE annotations ADD COLUMN edge_id int REFERENCES edges(id);
	    COMMIT;

	* src/main/java/de/intevation/flys/model/Edge.java: New. A 'Kanten'-Model.
	* src/main/java/de/intevation/flys/model/Annotation.java: References the
	  edges.
	
2011-06-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java:
	  Added method to find gauge only by station position.

2011-05-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java:
	  Make search for gauges independent of from/to order.

2011-05-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added a new view to select qs of a WST.
	  To update existing databases:

	    CREATE VIEW wst_q_values AS
	        SELECT wc.position AS column_pos,
	               wqr.q       AS q, 
	               r.a         AS a, 
	               r.b         AS b,
	               wc.wst_id   AS wst_id
	        FROM wst_column_q_ranges wcqr
	        JOIN wst_q_ranges wqr ON wcqr.wst_q_range_id = wqr.id
	        JOIN ranges r         ON wqr.range_id        = r.id
	        JOIN wst_columns wc   ON wcqr.wst_column_id  = wc.id
	        ORDER BY wc.position, wcqr.wst_column_id, r.a;	  

2011-05-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added a new view to select ws of a WST.
	  To update existing databases:

	    CREATE VIEW wst_w_values AS
	        SELECT wcv."position" AS km, 
	               wcv.w          AS w,  
	               wc."position"  AS column_pos, 
	               w.id           AS wst_id
	            FROM wst_column_values wcv
	            JOIN wst_columns wc ON wcv.wst_column_id = wc.id
	            JOIN wsts w         ON wc.wst_id = w.id
	        ORDER BY wcv."position", wc."position";

2011-05-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	 flys/issue76

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  Close gaps between q ranges.

2011-05-20  Ingo Weinzierl <ingo@intevation.de>

	Tagged RELEASE 2.3.1

2011-05-13  Ingo Weinzierl <ingo@intevation.de>

	Tagged RELEASE 2.3

2011-05-13  Ingo Weinzierl <ingo@intevation.de>

	* Changes: Changes for release 2.3 - see Changes file to get to know about
	  the version numbers of this software.

2011-05-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added a column which tells
	  if a river counts its km up or downwards.
	  To update existing databases:

	    ALTER TABLE rivers ADD COLUMN km_up BOOLEAN NOT NULL DEFAULT true;

	* src/main/java/de/intevation/flys/model/River.java:
	  Adjust Hibernate mapping of new column.

2011-05-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/AtFileParser.java:
	  Fixed flys/issue11 and flys51.

2011-05-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ValueKey.java:
	  Add some unsharp comparison (eps = 1e-6) to avoid 
	  numerical problems.

	* src/main/java/de/intevation/flys/importer/IdValueKey.java:
	  Removed. Not need any longer.

	* src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  Use unsharp lookup.

	* src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Flush more often. Hopefully this reduces hibernate sync
	  problems?!

2011-05-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  Fixed silly bug. Set flush mode back to auto because
	  manual flushing causes some undetermined problems.

2011-05-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  Do not load _all_ values from discharge tables and
	  wst columns. This is extremly slow and will lead
	  to OOM if more rivers are imported. Now only the
	  last 20 columns und discharge tables are cached.

	* src/main/java/de/intevation/flys/importer/ValueKey.java:
	  New. Key for caching discharge table values and wst
	  column values.

	* src/main/java/de/intevation/flys/importer/IdValueKey.java:
	  Fixed bug in equals().

	* src/main/java/de/intevation/flys/importer/ImportWstColumn.java:
	  Removed too eloquent debug output.

2011-05-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/IdValueKey.java:
	  Use BigDecimals as representation for the numeric components
	  which prevents running into unique constraint problems
	  caused by imprecision.

	* src/main/java/de/intevation/flys/importer/ImportRange.java,
	  src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  Ranges are now cached globally, too.

	* src/main/java/de/intevation/flys/importer/ImportWstColumn.java:
	  Improved logging.

	* src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java:
	  Removed superfluous imports.

2011-05-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/StaFileParser.java:
	  Only accept main value types 'Q', 'W', 'D' and 'T' by default.
	  '-' is not handled any more because it causes too much constraint
	  problems. You can overwrite the imported type with the
	  system property flys.backend.main.value.types" (default "QWTD")
	  
	* src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  Set session flush mode to manual. Hopefully this improves the
	  performance a bit.

	* src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/ImportGauge.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumn.java,
	  src/main/java/de/intevation/flys/importer/ImportRange.java,
	  src/main/java/de/intevation/flys/importer/ImportDischargeTable.java:
	  Improved logging.

2011-05-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstColumnValueKey.java: Deleted
	* src/main/java/de/intevation/flys/importer/IdValueKey.java: Reinserted
	  here in a more generalized form.

	* src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  Cache the discharge table value, too.

	* src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java:
	  Use the global cache.

2011-05-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImporterSession.java:
	  New. Centralized caching in the thread local context. Importing
	  the Elbe leads to OOM because the column values of the
	  WST files where loaded separately for every file.

	* src/main/java/de/intevation/flys/importer/ImportPosition.java,
	  src/main/java/de/intevation/flys/importer/Importer.java,
	  src/main/java/de/intevation/flys/importer/ImportAnnotation.java,
	  src/main/java/de/intevation/flys/importer/ImportWstQRange.java,
	  src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/ImportMainValue.java,
	  src/main/java/de/intevation/flys/importer/ImportMainValueType.java,
	  src/main/java/de/intevation/flys/importer/ImportNamedMainValue.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java,
	  src/main/java/de/intevation/flys/importer/ImportGauge.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumnQRange.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumn.java,
	  src/main/java/de/intevation/flys/importer/ImportRange.java,
	  src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java,
	  src/main/java/de/intevation/flys/importer/ImportDischargeTable.java,
	  src/main/java/de/intevation/flys/importer/ImportAttribute.java,
	  src/main/java/de/intevation/flys/importer/ImportTimeInterval.java:
	  Adjusted to use the new global context.

2011-05-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Dropped constraint which
	  forces discharge tables to have a unique time interval
	  for a given gauge and kind.

	  There are AT files (historical Mosel/Perl/Perl/1967-1981.at
	  and Mosel/Perl/1967-1981-1.at) which violate this
	  constraint. Its a technical question to the customer
	  how to handle these cases.

	  To adjust existing databases:

	    ALTER TABLE discharge_tables DROP CONSTRAINT discharge_tables_gauge_id_key;

2011-05-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  There are wst files where column names are not unique.
	  Make them unique by appending (1), (2) and so on.

2011-05-05	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Import the "HW-Schutzanlagen", too.

2011-05-05	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	Make import of historical discharge tables work.

	* doc/schema/postgresql.sql: Added forgotten column 'description'.

	  !!! You have to drop your database !!!

	* src/main/java/de/intevation/flys/importer/ImportDischargeTable.java:
	  src/main/java/de/intevation/flys/model/DischargeTable.java:
	  Add the forgotten description property.

	* src/main/java/de/intevation/flys/importer/AtFileParser.java:
	  Fixed problems with date recognition.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Prefix the description of the historical discharge tables 
	  with "Histor.Abflusstafeln".

	* src/main/java/de/intevation/flys/importer/ImportTimeInterval.java:
	  Fixed silly programming error.

2011-05-05	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/AtFileParser.java:
	  Inject 'kind' attribute.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Traverse the "Histor.Abflusstafeln" for the historical
	  discharge tables. too. TODO: Store them in the database.

	* src/main/java/de/intevation/flys/importer/ImportDischargeTable.java:
	  Added convinience constructor to set the kind of the
	  discharge table.
	  
2011-05-05	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Prefix "Zusätzliche Längsschnitte" with "Zus.Längsschnitte"
	  in description.

2011-05-05	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Import 'Hochwasser-Marken', too.

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  Removed superfluous import.

2011-05-05	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  Ignore lines that contain km positions which were found
	  before in the same file.

2011-05-05  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java: Added a method that
	  returns all gauges of the river intersected by a given start and end
	  point.

2011-05-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportTimeInterval.java:
	  Forgot to fetch peer from result set.

2011-05-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportTimeInterval.java:
	  New. Importer model help fetching the database peer.

	* src/main/java/de/intevation/flys/model/TimeInterval.java:
	  Add convinience constructor with start and stop time.

	* src/main/java/de/intevation/flys/importer/AtFileParser.java:
	  Attach a time interval to a discharge table if we find one.

	* src/main/java/de/intevation/flys/importer/ImportDischargeTable.java:
	  Store the reference to the importer model of the 
	  time interval of the discharge table.

2011-05-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/AtFileParser.java:
	  Try to extract time ranges from at files.

2011-05-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Parse and store "amtliche Linien" wst files.

2011-05-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Parse and store fixation wst files as well.

2011-05-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Parse the "zusaetzliche Laengsschnitte", too.

	* src/main/java/de/intevation/flys/importer/ImportWst.java:
	  Add getter/setter for column 'kind'.

2011-05-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  Fixed flys/issue19: Do not take km column in wst file as a water level.

2011-05-02  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/Gauge.java: Introduced a 'scale'
	  that is used to adjust the range of min/max W values.

2011-05-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  Removed superfluous import.

2011-04-20  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstColumnValueKey.java:
	  New. This class is used as distinct key of a WstColumnValue - e.g. as
	  key in a map.

	* src/main/java/de/intevation/flys/importer/ImportWst.java: A
	  WstColumnValue cache is build up while initialization. This cache
	  contains all WstColumnValues that exist in the database.

	* src/main/java/de/intevation/flys/importer/ImportWstColumn.java: New
	  constructor that takes the WstColumnValues cache. It is used to
	  initialize new ImportWstColumnValue objects.

	* src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java:
	  Speedup: A ImportWstColumnValue has a WstColumnValues cache that
	  contains all WstColumnValues existing in the database. This makes it
	  unnecessary to call an sql statement for each WstColumnValue to
	  determine its existence in the database.

2011-04-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql, doc/schema/postgresql-cleanup.sql:
	  Added a view 'wst_value_table' which aggregates the data
	  to build w/q value tables.

	  To update existing databases:

	  BEGIN;
	    CREATE VIEW wst_value_table AS
	        SELECT wcv.position AS position,
	               w,
	               (SELECT q
	                FROM   wst_column_q_ranges wcqr
	                       JOIN wst_q_ranges wqr
	                         ON wcqr.wst_q_range_id = wqr.id
	                       JOIN ranges r
	                         ON r.id = wqr.range_id
	                WHERE  wcqr.wst_column_id = wc.id
	                       AND wcv.position BETWEEN r.a AND r.b) AS q,
	               wc.position                                   AS column_pos,
	               w.id                                          AS wst_id
	        FROM   wst_column_values wcv
	               JOIN wst_columns wc
	                 ON wcv.wst_column_id = wc.id
	               JOIN wsts w
	                 ON wc.wst_id = w.id
	        ORDER  BY wcv.position ASC,
	              wc.position DESC;
	  COMMIT;

2011-04-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Wst.java:
	  Add forgotten one to many relation Wst -> WstColumn.

2011-04-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/WstParser.java:
	  Import of q ranges of wst files was totally broken. :-/
	  You have to reimport all your data.

2011-04-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportDischargeTable.java:
	  Forgot kind parameter in peer fetching query.
	  
2011-04-18  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java::
	  Added a new method to determine the gauge based on a given start and end
	  point of the river.

2011-04-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added 'position' column to wst_columns
	  to allow order them by there column position in the original
	  wst file.
	
	  Update existing database with:

	    BEGIN;
	      ALTER TABLE wst_columns ADD COLUMN position int;
	      UPDATE wst_columns w SET 
	        position = id - (SELECT min(id) FROM wst_columns WHERE wst_id = w.wst_id);
	      ALTER TABLE wst_columns ADD CONSTRAINT wst_columns_wst_id_position_key
	        UNIQUE (wst_id, position);
	    COMMIT;

	* src/main/java/de/intevation/flys/model/Wst.java,
	  src/main/java/de/intevation/flys/model/WstColumn.java:
	  Adjusted models.

	* src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumn.java:
	  Adjusted importer.

2011-04-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Forget ',' in schema.

2011-04-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Wst.java (determineMinMaxQ): 
	  Fixed index problem when an empty list is returned.

2011-04-15  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/Wst.java: A Wst is now able to
	  return its min and max Q values.

	* src/main/java/de/intevation/flys/model/Gauge.java: A Gauge is now able
	  to return its min and max W values.

2011-04-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Added new column 'kind' in
	  discharge tables and wst to distinguish between different
	  kinds like 'Haupt-WST', 'zusaetzliche Laengsschnitte',
	  'amtliche Daten' and so on.

	  Update existing databases with:
	    BEGIN;
	      ALTER TABLE discharge_tables ADD COLUMN kind int NOT NULL DEFAULT 0;
	      ALTER TABLE wsts             ADD COLUMN kind int NOT NULL DEFAULT 0;
	    COMMIT;

	* src/main/java/de/intevation/flys/model/DischargeTable.java
	  src/main/java/de/intevation/flys/model/Wst.java,
	  src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/ImportDischargeTable.java:
	  Adjusted the models.

2011-04-15  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/backend/SessionHolder.java: Moved to
	  this module from flys-artifacts. This is necessary to get access to the
	  current session in this module as well.

2011-04-14  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/River.java: Added a method that
	  returns the min and max distance of a river.

2011-04-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/**/*.java: Removed trailing whitespace.

2011-03-30  Ingo Weinzierl <ingo@intevation.de>

	Tagged RELEASE 0.1

2011-03-28	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Range.java:
	  Forgot to save the last change before commit.

2011-03-28	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Range.java:
	  Added methods to find out if two ranges intersects.

2011-03-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Gauge.java:
	  Added an one to many relation to the discharge tables of a gauge.

2011-03-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	Finished import of WSTs.

	TODO 1: Speed it up! It takes on a high end machine over 7(!)
	        minutes only for the data of the Saar.
	TODO 2: Double precision floating point representations produced
	        by the the parsers leed to unique constraint violations
			in the backend on a second run. So the import is currently
			only working on freshly initialized data bases.
			More consequent working with BigDecimal and some
			rounding may be of help here.

	* src/main/java/de/intevation/flys/model/WstColumnValue.java:
	  Added convinience constructors.

	* src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java:
	  Added getPeer() method.

	* src/main/java/de/intevation/flys/importer/ImportWstColumn.java:
	  Add a list of the ImportWstColumnValues produced by the WST parser.

	* src/main/java/de/intevation/flys/importer/WstParser.java: Add
	  the (km, w) values to the ImportWstColumns.

2011-03-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  Build models for wsts, wst columns and q ranges and
	  store them in the backend. TODO: store the w values.

	* src/main/java/de/intevation/flys/model/WstQRange.java
	  src/main/java/de/intevation/flys/model/Wst.java,
	  src/main/java/de/intevation/flys/model/Range.java,
	  src/main/java/de/intevation/flys/model/WstColumnQRange.java,
	  src/main/java/de/intevation/flys/model/WstColumn.java:
	  Added convinience constructors.

	* src/main/java/de/intevation/flys/importer/ImportWstQRange.java,
	  src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumnQRange.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumn.java,
	  src/main/java/de/intevation/flys/importer/ImportRange.java:
	  Added getPeer() methods.

2011-03-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  The unit extraction in the WST parser of desktop FLYS
	  is broken! Add a hack here to repair this for our
	  importer. Desktop FLYS needs a fix, too!

2011-03-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java:
	  Ported some stuff ver from WSTSource.java of desktop flys to
	  parse WST files. TODO: create instances of the import models.

	* src/main/java/de/intevation/flys/utils/StringUtil.java:
	  Copied from desktop flys. Used for some string operations
	  in WST parser.

	* src/main/java/de/intevation/flys/importer/Importer.java:
	  Added system property 'flys.backend.importer.dry.run'.
	  Set to true only the parsing is done and no writing
	  to the backend. Default: false.

	*  src/main/java/de/intevation/flys/App.java,
	   src/main/java/de/intevation/flys/model/MainValueType.java:
	   Removed needless imports.

2011-03-22  Ingo Weinzierl <ingo@intevation.de>

	* src/main/java/de/intevation/flys/model/DischargeTableValue.java,
	  src/main/java/de/intevation/flys/model/DischargeTable.java: Added new
	  constructors.

	* src/main/java/de/intevation/flys/importer/AtFileParser.java: New. This
	  parser is used to '*.at' files.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java: Added code to
	  import discharge tables.

	* src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java,
	  src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: New.
	  Helper models for import discharge tables.

2011-03-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/WstParser.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Added stub for WST parser.

2011-03-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportWstQRange.java,
	  src/main/java/de/intevation/flys/importer/ImportWst.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumnQRange.java,
	  src/main/java/de/intevation/flys/importer/ImportWstColumn.java:
	  Added importer helper model stubs for WST imports.
	
2011-03-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	Second part of parsing/storing main values. Should be finished now.

	* src/main/java/de/intevation/flys/importer/ImportNamedMainValue.java,
	  src/main/java/de/intevation/flys/importer/ImportMainValue.java:
	  New. Helper models for import main values,

	* src/main/java/de/intevation/flys/model/MainValue.java,
	  src/main/java/de/intevation/flys/model/NamedMainValue.java:
	  Added convinience constructors.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Write main values to backend, too.

	* src/main/java/de/intevation/flys/importer/StaFileParser.java:
	  Build importer models for main values.

	* src/main/java/de/intevation/flys/importer/ImportMainValueType.java:
	  Data was called 'value'. Now it is 'name' to fit the
	  schema.

2011-03-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Fixed wrong unique constraint.

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Added some logging when storing gauges.

2011-03-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Gauge.java:
	  Add forgotten column river_id.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Small HQL fix.

2011-03-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Gauge.java:
	  Added convinience contructor.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Fixed getPeer() method.

	* src/main/java/de/intevation/flys/importer/StaFileParser.java:
	  Fixed parsing of STA files.

2011-03-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportRiver.java,
	  src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Propagate river into storing of gauges.

2011-03-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/Importer.java:
	  Added code to store rivers not only annotations.

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Added stub code to write gauges.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	First part of parsing main values.

	* src/main/java/de/intevation/flys/App.java: Commented out
	  creation of dummy rivers.

	* src/main/java/de/intevation/flys/model/NamedMainValues.java:
	  Moved to NamedMainValue.

	* src/main/java/de/intevation/flys/model/NamedMainValue.java:
	  New. Formerly NamedMainValues.

	* src/main/java/de/intevation/flys/model/MainValue.java:
	  New. Forgotten part of the model.

	* src/main/java/de/intevation/flys/model/MainValueType.java:
	  Data is String not BigDecimal

	* src/main/java/de/intevation/flys/model/Range.java: Removed
	  contructor with double arguments. Using BigDecimal now.

	* src/main/java/de/intevation/flys/importer/PegelGltParser.java:
	  Propagate BigDecimal usage.

	* src/main/java/de/intevation/flys/importer/Importer.java:
	  Removed needless import. Added TODO

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Parse the dependencies of the gauges, too.

	* src/main/java/de/intevation/flys/importer/StaFileParser.java:
	  New. Parser for STA files.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Call STA file parser.

	* src/main/java/de/intevation/flys/importer/AnnotationsParser.java,
	  src/main/java/de/intevation/flys/importer/ImportRange.java:
	  Uses BigDecimal now.

	* src/main/java/de/intevation/flys/importer/ImportAttribute.java:
	  Fixed wrong type cast in equals.

	* src/main/java/de/intevation/flys/importer/ImportMainValueType.java:
	  New. Helper model for importing main value types.

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Register forgotten MainValue model.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	Store annotations in backend.

	* src/main/java/de/intevation/flys/model/Annotation.java:
	  New convinience constructor.

	* src/main/java/de/intevation/flys/model/River.java:
	  Added toString() method.

	* src/main/java/de/intevation/flys/model/Range.java:
	  Fixed nasty mistake in @OneToOne annotatation.
	  New convinience constructors.

	* src/main/java/de/intevation/flys/importer/ImportPosition.java
	  src/main/java/de/intevation/flys/importer/ImportAnnotation.java,
	  src/main/java/de/intevation/flys/importer/ImportRange.java
	  src/main/java/de/intevation/flys/importer/ImportAttribute.java:
	  Make storing to backend work. It's a bit too slow. :-/

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Fetch peer from backend. Added method to store annotations.
	* src/main/java/de/intevation/flys/importer/Importer.java:
	  Stored annotations into backend. More eloquent SQL exception
	  handling.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/Attribute.java,
	  src/main/java/de/intevation/flys/model/Position.java:
	  Added convinience constructors.

	* src/main/java/de/intevation/flys/importer/ImportPosition.java,
	  src/main/java/de/intevation/flys/importer/ImportAttribute.java:
	  Bound them to there backend peers.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/AnnotationsParser.java:
	  New. Added parser to read *.KM files.

	* src/main/java/de/intevation/flys/importer/ImportPosition.java,
	  src/main/java/de/intevation/flys/importer/PegelGltParser.java,
	  src/main/java/de/intevation/flys/importer/ImportRiver.java,
	  src/main/java/de/intevation/flys/importer/ImportAnnotation.java,
	  src/main/java/de/intevation/flys/importer/ImportRange.java,
	  src/main/java/de/intevation/flys/importer/InfoGewParser.java,
	  src/main/java/de/intevation/flys/importer/ImportAttribute.java:
	  Adjusted to load the annotations from *.KM files.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/ImportPosition.java,
	  src/main/java/de/intevation/flys/importer/ImportRange.java,
	  src/main/java/de/intevation/flys/importer/ImportAttribute.java,
	  src/main/java/de/intevation/flys/importer/ImportAnnotation.java:
	  New helper models for import.

	* src/main/java/de/intevation/flys/importer/PegelGltParser.java,
	  src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  Use new models.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/PegelGltParser.java:
	  New. Parser for PEGEL.GLT files.

	* src/main/java/de/intevation/flys/importer/ImportGauge.java:
	  New. Import model for gauges.

	* src/main/java/de/intevation/flys/utils/DBCPConnectionProvider.java:
	  Removed needless imports.

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Added method to parse the gauges.

	* src/main/java/de/intevation/flys/importer/InfoGewParser.java:
	  Trigger pegel glt file parsing.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/Importer.java:
	  Used thread local pattern to make sharing of session easier.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/Importer.java:
	  Fixed error in HQL statement.

2011-03-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/utils/DBCPConnectionProvider.java:
	  Commented out a debug block because it leaks the db password.

2011-03-16	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/importer/InfoGewParser.java:
	  Expose imported rivers.

	* src/main/java/de/intevation/flys/importer/InfoGewParser.java:
	  Store imported rivers into database. Needs testing!

2011-03-16	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Default connection parameters are now overwritable with
	  system properties (defaults in brackets):
	  - user name:     flys.backend.user     (flys)
	  - user password: flys.backend.password (flys)
	  - db dialect:    flys.backend.dialect  (org.hibernate.dialect.PostgreSQLDialect)
	  - db driver:     flys.backend.driver   (org.postgresql.Driver)
	  - db url:        flys.backend.url      (jdbc:postgresql://localhost:5432/flys)

2011-03-16	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  Expose createSessionFactory() as public to be usable without
	  a artifact database running.

2011-03-16	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/utils/FileTools.java: 
	  Tools for handling with filenames. Currently there is
	  a repair(File) method with repairs letter case errors
	  which is useful when reading windows filenames on a
	  un*x platform.

	* src/main/java/de/intevation/flys/importer/Importer.java:
	  Standalone app to read data from the file system and
	  store it in a database. Currently it does not store 
	  anything. It only loads info gew files.

	* src/main/java/de/intevation/flys/importer/InfoGewParser.java:
	  Info gew parser.

	* src/main/java/de/intevation/flys/importer/ImportRiver.java:
	  Helper model of a river used produced by parsing the
	  info gew files.

2011-03-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java:
	  New. SessionFactoryProvider.getSessionFactory() provides a
	  SessionFactory to use the Hibernate O/R mapper for the FLYS backend.

2011-03-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* pom.xml: Added dependency to artifacts-commons to
	  be able to use the global configuration of the artifact database.

2011-03-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/App.java: Wire all POJOs
	  to corresponding factory.

	* src/main/java/de/intevation/flys/model/*.java: Generate
	  all foreign key constraints. TODO: name them correctly
	  because the machine generated names are ugly and do
	  not fit the PostgreSQL names.

	* doc/schema/postgresql.sql: Small quantifier fix in descriptions
	  of wst columns.

2011-03-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql: Fixed wrong spelled 
	  column references in foreign keys introduces with
	  last change.

2011-03-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* src/main/java/de/intevation/flys/model/*.java: Added
	  column annotations for simple fields. TODO: foreign keys.

2011-03-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql, doc/schema/postgresql-cleanup.sql:
	  Fixed inconsistent table names.

	* src/main/java/de/intevation/flys/model/*.java: Added
	  entity and id annotations.

2011-03-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql.sql, doc/schema/postgresql-cleanup.sql:
	  Added missing sequences.

	* doc/schema/sqlite.sql: Deleted. Not longer supported.

2011-03-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql-cleanup.sql: Forgot to add.

	* src/main/java/de/intevation/flys/App.java: Use
	  Apache Commons DBCP as Hibernate connection provide.

	* src/main/java/de/intevation/flys/model/River.java:
	  Added a constructor with string argument. Set the
	  sequence increment to 1 (eat up 100 at a time before).

	* pom.xml: Added PostgreSQL 8.4 driver as runtime dependency.

2011-03-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/postgresql-cleanup.sql: New. Tear down schema
	  for a postgres database.

	* doc/schema/postgresql.sql: Added squence for 
	  auto generating ids in river table. Cleaned up schema.

	* src/main/java/de/intevation/flys/App.java: Simple
	  test app to interact with hibernate. Needs to be removed
	  because its only a toy.

	* src/main/java/de/intevation/flys/utils/DBCPConnectionProvider.java:
	  New. Binds Apache Commons to Hibernate.

	* pom.xml: Added dependencies to log4j, commons dbcp,
	  JPA of hibernate.

	* src/main/java/de/intevation/flys/model/River.java: Added
	  JPA annotations.

	* src/main/java/de/intevation/flys/model/*.java: Replaced
	  Long with Integer because column ids are only four bytes wide.

2011-03-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/sqlite.sql, doc/schema/postgresql.sql: Fixed
	  smaller issues in ddl.

	* src/main/java/de/intevation/flys/model/*.java: Added POJOs
	  of to be mapped. TODO: Map them!

	* pom.xml: Added plugin config for hibernate.

2011-03-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* pom.xml: Added dependency (and corresponding repository) to
	  Hibernate Core 3.6.1 Final

2011-03-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* pom.xml, src/**: Created a new empty maven project:
	  $ mvn archetype:create         \
	    -DgroupId=de.intevation.flys \
		-DartifactId=flys-backend

2011-03-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* README: New. Some setup instructions.

	* doc/schema/postgresql.sql: New. Schema converted to PostgreSQL

	* doc/schema/sqlite.sql: Fixed defect foreign key constraints.

2011-03-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* doc/schema/sqlite.sql: Factorized time intervals out into
	  a separated table.

2011-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* contrib/import-kms.py, contrib/import-gew.py: Initial scripts
	to import data into SQLite database. They still need some work.

2011-02-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>:

	* doc/schema/sqlite.sql: Added initial schema for
	FLYS database.

http://dive4elements.wald.intevation.org