sascha@1211: 2011-07-15 Sascha L. Teichmann sascha@1211: sascha@1211: * src/main/java/de/intevation/flys/importer/parsers/*.java: sascha@1211: New package. Moved the file parsers (*.gew, *.sta, *.at, *.glt, *.prf, *.km, *.wst) sascha@1211: into this package. sascha@1211: sascha@1211: * src/main/java/de/intevation/flys/importer/*.java: Adjusted the imports. sascha@1211: sascha@1210: 2011-07-15 Sascha L. Teichmann sascha@1210: sascha@1210: * src/main/java/de/intevation/flys/model/HYKFormation.java, sascha@1210: src/main/java/de/intevation/flys/model/HYKEntry.java, sascha@1210: src/main/java/de/intevation/flys/model/HYKFlowZone.java, sascha@1210: src/main/java/de/intevation/flys/model/HYKFlowZoneType.java, sascha@1210: src/main/java/de/intevation/flys/model/HYK.java: New. The hibernate models sascha@1210: for the HYK structures. sascha@1210: sascha@1210: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@1210: Registered new models. sascha@1210: sascha@1210: * src/main/java/de/intevation/flys/model/CrossSection.java: Added sascha@1210: 'order by' annotation for fetching the cross section lines. sascha@1210: sascha@1209: 2011-07-15 Sascha L. Teichmann sascha@1209: sascha@1209: * doc/schema/postgresql.sql: Added structures for HYKs "Hydraulische Kenngroessen" sascha@1209: To update existing databases: sascha@1209: sascha@1209: BEGIN; sascha@1209: CREATE SEQUENCE HYKS_ID_SEQ; sascha@1209: CREATE TABLE hyks ( sascha@1209: id int PRIMARY KEY NOT NULL, sascha@1209: river_id int NOT NULL, sascha@1209: description VARCHAR(256) NOT NULL sascha@1209: ); sascha@1209: sascha@1209: CREATE SEQUENCE HYK_ENTRIES_ID_SEQ; sascha@1209: CREATE TABLE hyk_entries ( sascha@1209: id int PRIMARY KEY NOT NULL, sascha@1209: hyk_id int NOT NULL REFERENCES hyks(id), sascha@1209: km NUMERIC NOT NULL, sascha@1209: UNIQUE (hyk_id, km) sascha@1209: ); sascha@1209: sascha@1209: CREATE SEQUENCE HYK_FORMATIONS_ID_SEQ; sascha@1209: CREATE TABLE hyk_formations ( sascha@1209: id int PRIMARY KEY NOT NULL, sascha@1209: formation_num int NOT NULL DEFAULT 0, sascha@1209: hyk_entry_id int NOT NULL REFERENCES hyk_entries(id), sascha@1209: top NUMERIC NOT NULL, sascha@1209: bottom NUMERIC NOT NULL, sascha@1209: UNIQUE (hyk_entry_id, formation_num) sascha@1209: ); sascha@1209: sascha@1209: CREATE SEQUENCE HYK_FLOW_ZONE_TYPES_ID_SEQ; sascha@1209: CREATE TABLE hyk_flow_zone_types ( sascha@1209: id int PRIMARY KEY NOT NULL, sascha@1209: name VARCHAR(50) NOT NULL UNIQUE, sascha@1209: description VARCHAR(256) sascha@1209: ); sascha@1209: sascha@1209: CREATE SEQUENCE HYK_FLOW_ZONES_ID_SEQ; sascha@1209: CREATE TABLE hyk_flow_zones ( sascha@1209: id int PRIMARY KEY NOT NULL, sascha@1209: formation_id int NOT NULL REFERENCES hyk_formations(id), sascha@1209: type_id int NOT NULL REFERENCES hyk_flow_zone_types(id), sascha@1209: a NUMERIC NOT NULL, sascha@1209: b NUMERIC NOT NULL, sascha@1209: CHECK (a <= b) sascha@1209: ); sascha@1209: COMMIT; sascha@1209: sascha@1208: 2011-07-13 Sascha L. Teichmann sascha@1208: sascha@1208: * pom.xml: Bumped Hibernate up to 3.6.5. sascha@1208: sascha@1207: 2011-07-11 Sascha L. Teichmann sascha@1207: sascha@1207: * src/main/java/de/intevation/flys/utils/FileTools.java: Argh! sascha@1207: Forget to call the file hashing so only the file lengths were sascha@1207: compared. sascha@1207: sascha@1207: 2011-07-11 Sascha L. Teichmann sascha@1206: sascha@1206: * src/main/java/de/intevation/flys/utils/FileTools.java: sascha@1206: Added a class HashedFile to compare files by there length sascha@1206: and a message digest. Digest can be set with system property sascha@1206: "flys.backend.file.cmp.digest" and defaults to MD5. Useful to sascha@1206: detect file duplicates. sascha@1206: sascha@1206: * src/main/java/de/intevation/flys/importer/PRFParser.java: Added sascha@1206: method prfAccept(File) to callback to check if a found PRF file sascha@1206: should be parsed. Useful to prevent parsing file duplicates. sascha@1206: sascha@1206: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@1206: Use the HashedFile and the PRFParser.Callback to prevent sascha@1206: parsing of PRF duplicates. sascha@1206: sascha@1205: 2011-07-08 Sascha L. Teichmann sascha@1205: sascha@1205: * doc/schema/postgresql.sql: Misspelled sequence. sascha@1205: To update existing databases: sascha@1205: sascha@1205: DROP SEQUENCE CROSS_SECTION_LINES_SEQ; sascha@1205: CREATE SEQUENCE CROSS_SECTION_LINES_ID_SEQ; sascha@1205: sascha@1205: * src/main/java/de/intevation/flys/importer/ImportCrossSection.java: sascha@1205: Added some logging because importing is slow. sascha@1205: sascha@1205: * src/main/java/de/intevation/flys/importer/ImportCrossSectionLine.java: sascha@1205: Prevent NPE if a cross section line from db has no points. sascha@1205: sascha@1204: 2011-07-08 Sascha L. Teichmann sascha@1204: sascha@1204: Parse all PRFs in all subfolders of a river and store them sascha@1204: as cross sections into the database. Needs testing! sascha@1204: sascha@1204: * src/main/java/de/intevation/flys/importer/ImportCrossSection.java, sascha@1204: src/main/java/de/intevation/flys/importer/ImportCrossSectionLine.java: sascha@1204: New. Importer models for cross sections. sascha@1204: sascha@1204: * src/main/java/de/intevation/flys/importer/XY.java: sascha@1204: New. Made top level class from inner PRFParser.XY. sascha@1204: sascha@1204: * src/main/java/de/intevation/flys/importer/PRFParser.java: sascha@1204: Moved out XY class. Renamed callback. sascha@1204: sascha@1204: * src/main/java/de/intevation/flys/model/CrossSection.java, sascha@1204: src/main/java/de/intevation/flys/model/CrossSectionLine.java, sascha@1204: src/main/java/de/intevation/flys/model/CrossSectionPoint.java, sascha@1204: src/main/java/de/intevation/flys/importer/ImportTimeInterval.java: sascha@1204: Added convinience constructors. sascha@1204: sascha@1204: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@1204: Parse and store cross sections into database. sascha@1204: sascha@1203: 2011-07-07 Sascha L. Teichmann sascha@1203: sascha@1203: * doc/schema/postgresql.sql: Introduced a new table cross_section_line sascha@1203: holding the km of a set of points. sascha@1203: sascha@1203: * src/main/java/de/intevation/flys/model/CrossSectionLine.java: sascha@1203: New. Model for a single line of a "Querprofil". sascha@1203: sascha@1203: * src/main/java/de/intevation/flys/model/CrossSection.java: Removed sascha@1203: 'km' and 'points' they are part of the line now. sascha@1203: sascha@1203: * src/main/java/de/intevation/flys/model/CrossSectionPoint.java: sascha@1203: They reference to the containing line now. sascha@1203: sascha@1203: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@1203: Registered new model. sascha@1203: sascha@1203: To update existing databases: sascha@1203: BEGIN; sascha@1203: DROP SEQUENCE CROSS_SECTIONS_ID_SEQ; sascha@1203: DROP SEQUENCE CROSS_SECTION_POINTS_ID_SEQ; sascha@1203: DROP TABLE cross_section_points; sascha@1203: DROP TABLE cross_sections; sascha@1203: CREATE SEQUENCE CROSS_SECTIONS_ID_SEQ; sascha@1203: CREATE TABLE cross_sections ( sascha@1203: id int PRIMARY KEY NOT NULL, sascha@1203: river_id int NOT NULL REFERENCES rivers(id), sascha@1203: time_interval_id int REFERENCES time_intervals(id), sascha@1203: description VARCHAR(256) sascha@1203: ); sascha@1203: CREATE SEQUENCE CROSS_SECTION_LINES_SEQ; sascha@1203: CREATE TABLE cross_section_lines ( sascha@1203: id int PRIMARY KEY NOT NULL, sascha@1203: km NUMERIC NOT NULL, sascha@1203: cross_section_id int NOT NULL REFERENCES cross_sections(id), sascha@1203: UNIQUE (km, cross_section_id) sascha@1203: ); sascha@1203: CREATE SEQUENCE CROSS_SECTION_POINTS_ID_SEQ; sascha@1203: CREATE TABLE cross_section_points ( sascha@1203: id int PRIMARY KEY NOT NULL, sascha@1203: cross_section_line_id int NOT NULL REFERENCES cross_section_lines(id), sascha@1203: col_pos int NOT NULL, sascha@1203: x NUMERIC NOT NULL, sascha@1203: y NUMERIC NOT NULL, sascha@1203: UNIQUE (cross_section_line_id, col_pos) sascha@1203: ); sascha@1203: COMMIT; sascha@1203: sascha@1202: 2011-07-07 Sascha L. Teichmann sascha@1202: sascha@1202: * doc/schema/postgresql.sql: Dropped constraint that enforces the sascha@1203: uniqueness of km and river. This is violated because there are sascha@1202: more than one sounding in different year at the same km of a river. sascha@1202: Added column 'description' to the cross section table to make it sascha@1202: human readable. sascha@1202: sascha@1202: To update existing databases: sascha@1202: sascha@1202: ALTER TABLE cross_sections DROP CONSTRAINT cross_sections_km_key; sascha@1202: ALTER TABLE cross_sections ADD COLUMN description VARCHAR(256); sascha@1202: sascha@1202: * src/main/java/de/intevation/flys/model/CrossSection.java: sascha@1202: Added the description column to the Hibernate model. sascha@1202: sascha@1201: 2011-07-07 Sascha L. Teichmann sascha@1201: sascha@1201: * doc/schema/postgresql.sql: Dropped constraint that enforces the sascha@1203: uniqueness of x in a "Querprofil-Spur". There are vertical lines sascha@1201: in the soundings so this constraint is violated. sascha@1201: sascha@1201: To update existing databases: sascha@1201: sascha@1201: ALTER TABLE cross_section_points DROP CONSTRAINT cross_section_points_cross_section_id_key2; sascha@1201: sascha@1200: 2011-07-07 Sascha L. Teichmann sascha@1200: sascha@1200: * src/main/java/de/intevation/flys/importer/PRFParser.java: sascha@1200: Added a callback to be called from parsePRFs() if sascha@1200: a PRF was parsed successfully. Useful to scan whole sascha@1200: sub directories for PRF files. sascha@1200: sascha@1199: 2011-07-07 Sascha L. Teichmann sascha@1199: sascha@1199: * src/main/java/de/intevation/flys/importer/PRFParser.java: sascha@1199: Extract the year of sounding from file names. If not found sascha@1199: from the name of th containing directory. Description is made sascha@1199: of file name and parent directory file name. sascha@1199: sascha@1198: 2011-07-07 Sascha L. Teichmann sascha@1198: sascha@1198: * src/main/java/de/intevation/flys/importer/PRFParser.java: sascha@1198: Extracted the data. All BfG PRFs are parsed correctly, now. sascha@1198: sascha@1197: 2011-07-07 Sascha L. Teichmann sascha@1197: sascha@1197: * src/main/java/de/intevation/flys/importer/PRFParser.java: sascha@1197: Extract km from lines. TODO: extract data. sascha@1197: sascha@1196: 2011-07-06 Sascha L. Teichmann sascha@1196: sascha@1196: * src/main/java/de/intevation/flys/importer/PRFParser.java: New. sascha@1196: Parser for PRF files. TODO extra data and station from data lines. sascha@1196: sascha@1195: 2011-07-06 Sascha L. Teichmann sascha@1195: sascha@1195: * src/main/java/de/intevation/flys/model/Point3d.java: Deleted. sascha@1195: Not needed (braindead). sascha@1195: sascha@1195: * src/main/java/de/intevation/flys/model/CrossSectionPoint.java: sascha@1195: Directly store the x/y values now. sascha@1195: sascha@1195: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@1195: Removed registration of Point3d. sascha@1195: sascha@1195: To update existing databases: sascha@1195: sascha@1195: BEGIN; sascha@1195: ALTER TABLE cross_section_points DROP COLUMN point3d_id; sascha@1195: DROP SEQUENCE POINTS3D_ID_SEQ; sascha@1195: DROP TABLE points3d; sascha@1195: ALTER TABLE cross_section_points ADD COLUMN x NUMERIC NOT NULL; sascha@1195: ALTER TABLE cross_section_points ADD COLUMN y NUMERIC NOT NULL; sascha@1195: ALTER TABLE cross_section_points ADD CONSTRAINT sascha@1195: cross_section_points_cross_section_id_key2 UNIQUE (cross_section_id, x); sascha@1195: COMMIT; sascha@1195: sascha@1194: 2011-07-06 Sascha L. Teichmann sascha@1194: sascha@1194: * src/main/java/de/intevation/flys/model/CrossSection.java, sascha@1194: src/main/java/de/intevation/flys/model/CrossSectionPoint.java: sascha@1194: New. Hibernate models for cross-sections and their forming points. sascha@1194: sascha@1194: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@1194: Registered the new models. sascha@1194: sascha@1193: 2011-07-06 Sascha L. Teichmann sascha@1193: sascha@1193: * src/main/java/de/intevation/flys/model/Point3d.java: New. point3d model sascha@1193: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@1193: Registered point3d model. sascha@1193: sascha@1192: 2011-07-06 Sascha L. Teichmann sascha@1192: sascha@1192: * doc/schema/postgresql.sql: Add relations for cross sections. sascha@1192: To update existing databases: sascha@1192: BEGIN; sascha@1192: sascha@1192: CREATE SEQUENCE CROSS_SECTIONS_ID_SEQ; sascha@1192: CREATE TABLE cross_sections ( sascha@1192: id int PRIMARY KEY NOT NULL, sascha@1192: km NUMERIC NOT NULL, sascha@1192: river_id int NOT NULL REFERENCES rivers(id), sascha@1192: time_interval_id int REFERENCES time_intervals(id), sascha@1192: UNIQUE (km, river_id) sascha@1192: ); sascha@1192: sascha@1192: CREATE SEQUENCE POINTS3D_ID_SEQ; sascha@1192: CREATE TABLE points3d ( sascha@1192: id int PRIMARY KEY NOT NULL, sascha@1192: x NUMERIC NOT NULL, sascha@1192: y NUMERIC NOT NULL, sascha@1192: z NUMERIC NOT NULL sascha@1192: ); sascha@1192: sascha@1192: CREATE SEQUENCE CROSS_SECTION_POINTS_ID_SEQ; sascha@1192: CREATE TABLE cross_section_points ( sascha@1192: id int PRIMARY KEY NOT NULL, sascha@1192: cross_section_id int NOT NULL REFERENCES cross_sections(id), sascha@1192: point3d_id int NOT NULL REFERENCES points3d(id), sascha@1192: col_pos int NOT NULL, sascha@1192: UNIQUE (cross_section_id, point3d_id, col_pos), sascha@1192: UNIQUE (cross_section_id, col_pos) sascha@1192: ); sascha@1192: sascha@1192: COMMIT; sascha@1192: ingo@1191: 2011-06-28 Ingo Weinzierl ingo@1191: ingo@1191: Tagged RELEASE 2.4 ingo@1191: ingo@772: 2011-06-27 Ingo Weinzierl ingo@772: ingo@772: * Changes: Prepared changes for the upcoming release. ingo@772: sascha@771: 2011-06-26 Sascha L. Teichmann sascha@771: sascha@771: * src/main/java/de/intevation/flys/importer/AnnotationsParser.java, sascha@771: src/main/java/de/intevation/flys/importer/AnnotationClassifier.java, sascha@771: src/main/java/de/intevation/flys/importer/AtFileParser.java, sascha@771: src/main/java/de/intevation/flys/importer/ValueKey.java, sascha@771: src/main/java/de/intevation/flys/importer/WstParser.java: sascha@771: Removed trailing whitespace. sascha@771: sascha@770: 2011-06-26 Sascha L. Teichmann sascha@770: sascha@770: * src/main/java/de/intevation/flys/importer/AnnotationClassifier.java: sascha@770: Removed superfluous imports. sascha@770: sascha@769: 2011-06-26 Sascha L. Teichmann sascha@769: sascha@769: * src/main/java/de/intevation/flys/model/River.java: sascha@769: Added a method maxOverlap to determine the gauge which has sascha@769: the max common length to a given interval. This is for sascha@769: numerical stability in slightly overlapping gauge ranges. sascha@769: sascha@768: 2011-06-26 Sascha L. Teichmann sascha@768: sascha@768: * src/main/java/de/intevation/flys/model/River.java: When sascha@768: looking up a gauge by km containment use precision of 1e-6. sascha@768: sascha@767: 2011-06-22 Sascha L. Teichmann sascha@767: sascha@767: * src/main/java/de/intevation/flys/model/River.java: sascha@767: Added method to find gauge by its name. sascha@767: sascha@766: 2011-06-19 Sascha L. Teichmann sascha@766: sascha@766: * doc/annotation-types.xml: Fixed some rules. sascha@766: sascha@766: * src/main/java/de/intevation/flys/importer/Importer.java, sascha@766: src/main/java/de/intevation/flys/importer/InfoGewParser.java, sascha@766: src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@766: Call the right constructors now. sascha@766: sascha@766: * src/main/java/de/intevation/flys/importer/ImportAnnotationType.java: sascha@766: Added getter/setter for name property. sascha@766: sascha@766: * src/main/java/de/intevation/flys/importer/AnnotationsParser.java: sascha@766: Print duplicated at WARN level not as DEBUG. sascha@766: sascha@766: * src/main/java/de/intevation/flys/importer/AnnotationClassifier.java: sascha@766: Fixed XPath expression to build the internal lookup structures sascha@766: correctly. sascha@766: sascha@765: 2011-06-19 Sascha L. Teichmann sascha@765: sascha@765: Added classification of annotation types. Needs testing! sascha@765: sascha@765: * doc/annotation-types.xml: New. Rules to classify the different sascha@765: types of annotations. The classification works like this: sascha@765: sascha@765: There are unique types like 'Bruecke', 'Pegel' and so on. sascha@765: They are defined in the /annotation/type section and sascha@765: identified by their name. One of the types can be set sascha@765: as the default type if no rule applies. sascha@765: sascha@765: In the /annotation/pattern section are two types of pattern. sascha@765: sascha@765: 1 - file pattern: If a KM file is opened its filename is sascha@765: matched against the regular expressions of these sascha@765: patterns. If a match is found the corresponding type sascha@765: is used as the default type in the open file. sascha@765: If no match is found the global default type is used sascha@765: as the default type. sascha@765: sascha@765: 2 - line patterns: For each line of an open KM file these sascha@765: patterns are applied to find a match. If a match is sascha@765: found the corresponding type is used as the type of sascha@765: the annotation. If no match is found the default sascha@765: file default is assumed to be the right type. For sascha@765: the file default see 1. sascha@765: sascha@765: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@765: To activate the annotation type classification set sascha@765: the system property sascha@765: sascha@765: 'flys.backend.importer.annotation.types' sascha@765: sascha@765: to the path of a XML looking like the annotation-types.xml sascha@765: file. If the system property is not set no classification sascha@765: is done. sascha@765: sascha@765: * src/main/java/de/intevation/flys/importer/AnnotationClassifier.java: sascha@765: New. Implements the classification. sascha@765: sascha@765: * src/main/java/de/intevation/flys/importer/AnnotationsParser.java, sascha@765: src/main/java/de/intevation/flys/importer/InfoGewParser.java, sascha@765: src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@765: Looped through the annotation type classification. sascha@765: sascha@765: 2011-06-18 Sascha L. Teichmann sascha@764: sascha@764: * src/main/java/de/intevation/flys/model/River.java: sascha@764: Added method to find gauge by a position lying in its range. sascha@764: sascha@763: 2011-06-14 Sascha L. Teichmann sascha@763: sascha@763: First part of flys/issue18 sascha@763: sascha@763: * doc/schema/postgresql.sql: Add new table 'annotation_types'. sascha@763: To update existing databases: sascha@763: BEGIN; sascha@763: CREATE SEQUENCE ANNOTATION_TYPES_ID_SEQ; sascha@763: CREATE TABLE annotation_types ( sascha@763: id int PRIMARY KEY NOT NULL, sascha@763: name VARCHAR(256) NOT NULL UNIQUE sascha@763: ); sascha@763: ALTER TABLE annotations ADD COLUMN type_id int REFERENCES annotation_types(id); sascha@763: COMMIT; sascha@763: sascha@763: * doc/schema/postgresql-cleanup.sql: Removed. Hopeless out-dated. sascha@763: sascha@763: * src/main/java/de/intevation/flys/model/AnnotationType.java: sascha@763: New. Hibernate model to access the type. sascha@763: sascha@763: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@763: Register the new backend type. sascha@763: sascha@763: * src/main/java/de/intevation/flys/model/Annotation.java: sascha@763: References the annotation type. sascha@763: sascha@763: * src/main/java/de/intevation/flys/importer/ImportAnnotationType.java: sascha@763: New. Model to help import the annotation type. sascha@763: sascha@763: * src/main/java/de/intevation/flys/importer/ImportAnnotation.java: sascha@763: Uses the import type. sascha@763: sascha@763: * src/main/java/de/intevation/flys/importer/AnnotationsParser.java: sascha@763: Set the annotation type to 'null'. TODO: Do the classification! sascha@763: sascha@762: 2011-06-14 Sascha L. Teichmann sascha@762: sascha@762: * src/main/java/de/intevation/flys/importer/AtFileParser.java: sascha@762: Fix for flys/issue110. start index was shifted by one. sascha@762: sascha@761: 2011-06-14 Sascha L. Teichmann sascha@761: sascha@761: * src/main/java/de/intevation/flys/importer/ImportAnnotation.java: sascha@761: Forgot to store reference to edge. sascha@761: sascha@760: 2011-06-14 Sascha L. Teichmann sascha@760: sascha@760: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@760: Register backend model. sascha@760: sascha@760: * src/main/java/de/intevation/flys/importer/ImportEdge.java: New. Model sascha@760: for importing the edges. sascha@760: sascha@760: * src/main/java/de/intevation/flys/importer/AnnotationsParser.java: sascha@760: Parses the edges of an annotation, too. sascha@760: sascha@758: 2011-06-14 Sascha L. Teichmann sascha@758: sascha@758: * doc/schema/postgresql.sql: Added table edges to model 'Kanten' of an annotation. sascha@758: To update existing databases: sascha@758: BEGIN; sascha@758: CREATE SEQUENCE EDGES_ID_SEQ; sascha@758: CREATE TABLE edges ( sascha@758: id int PRIMARY KEY NOT NULL, sascha@758: top NUMERIC, sascha@758: bottom NUMERIC); sascha@758: ALTER TABLE annotations ADD COLUMN edge_id int REFERENCES edges(id); sascha@758: COMMIT; sascha@758: sascha@758: * src/main/java/de/intevation/flys/model/Edge.java: New. A 'Kanten'-Model. sascha@758: * src/main/java/de/intevation/flys/model/Annotation.java: References the sascha@758: edges. sascha@758: sascha@757: 2011-06-08 Sascha L. Teichmann sascha@757: sascha@757: * src/main/java/de/intevation/flys/model/River.java: sascha@757: Added method to find gauge only by station position. sascha@757: sascha@756: 2011-05-24 Sascha L. Teichmann sascha@756: sascha@756: * src/main/java/de/intevation/flys/model/River.java: sascha@756: Make search for gauges independent of from/to order. sascha@756: sascha@755: 2011-05-24 Sascha L. Teichmann sascha@755: sascha@755: * doc/schema/postgresql.sql: Added a new view to select qs of a WST. sascha@755: To update existing databases: sascha@755: sascha@755: CREATE VIEW wst_q_values AS sascha@755: SELECT wc.position AS column_pos, sascha@755: wqr.q AS q, sascha@755: r.a AS a, sascha@755: r.b AS b, sascha@755: wc.wst_id AS wst_id sascha@755: FROM wst_column_q_ranges wcqr sascha@755: JOIN wst_q_ranges wqr ON wcqr.wst_q_range_id = wqr.id sascha@755: JOIN ranges r ON wqr.range_id = r.id sascha@755: JOIN wst_columns wc ON wcqr.wst_column_id = wc.id sascha@755: ORDER BY wc.position, wcqr.wst_column_id, r.a; sascha@755: sascha@754: 2011-05-24 Sascha L. Teichmann sascha@754: sascha@754: * doc/schema/postgresql.sql: Added a new view to select ws of a WST. sascha@754: To update existing databases: sascha@754: sascha@754: CREATE VIEW wst_w_values AS sascha@754: SELECT wcv."position" AS km, sascha@754: wcv.w AS w, sascha@754: wc."position" AS column_pos, sascha@754: w.id AS wst_id sascha@754: FROM wst_column_values wcv sascha@754: JOIN wst_columns wc ON wcv.wst_column_id = wc.id sascha@754: JOIN wsts w ON wc.wst_id = w.id sascha@754: ORDER BY wcv."position", wc."position"; sascha@754: sascha@753: 2011-05-23 Sascha L. Teichmann sascha@753: sascha@753: flys/issue76 sascha@753: sascha@753: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@753: Close gaps between q ranges. sascha@753: ingo@752: 2011-05-20 Ingo Weinzierl ingo@752: ingo@752: Tagged RELEASE 2.3.1 ingo@752: ingo@752: 2011-05-13 Ingo Weinzierl ingo@752: ingo@752: Tagged RELEASE 2.3 ingo@752: ingo@506: 2011-05-13 Ingo Weinzierl ingo@506: ingo@506: * Changes: Changes for release 2.3 - see Changes file to get to know about ingo@506: the version numbers of this software. ingo@506: sascha@505: 2011-05-10 Sascha L. Teichmann sascha@505: sascha@505: * doc/schema/postgresql.sql: Added a column which tells sascha@505: if a river counts its km up or downwards. sascha@505: To update existing databases: sascha@505: sascha@505: ALTER TABLE rivers ADD COLUMN km_up BOOLEAN NOT NULL DEFAULT true; sascha@505: sascha@505: * src/main/java/de/intevation/flys/model/River.java: sascha@505: Adjust Hibernate mapping of new column. sascha@505: sascha@504: 2011-05-10 Sascha L. Teichmann sascha@504: sascha@504: * src/main/java/de/intevation/flys/importer/AtFileParser.java: sascha@504: Fixed flys/issue11 and flys51. sascha@504: sascha@503: 2011-05-09 Sascha L. Teichmann sascha@503: sascha@503: * src/main/java/de/intevation/flys/importer/ValueKey.java: sascha@503: Add some unsharp comparison (eps = 1e-6) to avoid sascha@503: numerical problems. sascha@503: sascha@503: * src/main/java/de/intevation/flys/importer/IdValueKey.java: sascha@503: Removed. Not need any longer. sascha@503: sascha@503: * src/main/java/de/intevation/flys/importer/ImporterSession.java: sascha@503: Use unsharp lookup. sascha@503: sascha@503: * src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@503: src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@503: Flush more often. Hopefully this reduces hibernate sync sascha@503: problems?! sascha@503: sascha@502: 2011-05-09 Sascha L. Teichmann sascha@502: sascha@502: * src/main/java/de/intevation/flys/importer/ImporterSession.java: sascha@502: Fixed silly bug. Set flush mode back to auto because sascha@502: manual flushing causes some undetermined problems. sascha@502: sascha@501: 2011-05-09 Sascha L. Teichmann sascha@501: sascha@501: * src/main/java/de/intevation/flys/importer/ImporterSession.java: sascha@501: Do not load _all_ values from discharge tables and sascha@501: wst columns. This is extremly slow and will lead sascha@501: to OOM if more rivers are imported. Now only the sascha@501: last 20 columns und discharge tables are cached. sascha@501: sascha@501: * src/main/java/de/intevation/flys/importer/ValueKey.java: sascha@501: New. Key for caching discharge table values and wst sascha@501: column values. sascha@501: sascha@501: * src/main/java/de/intevation/flys/importer/IdValueKey.java: sascha@501: Fixed bug in equals(). sascha@501: sascha@501: * src/main/java/de/intevation/flys/importer/ImportWstColumn.java: sascha@501: Removed too eloquent debug output. sascha@501: sascha@500: 2011-05-09 Sascha L. Teichmann sascha@500: sascha@500: * src/main/java/de/intevation/flys/importer/IdValueKey.java: sascha@500: Use BigDecimals as representation for the numeric components sascha@500: which prevents running into unique constraint problems sascha@500: caused by imprecision. sascha@500: sascha@500: * src/main/java/de/intevation/flys/importer/ImportRange.java, sascha@500: src/main/java/de/intevation/flys/importer/ImporterSession.java: sascha@500: Ranges are now cached globally, too. sascha@500: sascha@500: * src/main/java/de/intevation/flys/importer/ImportWstColumn.java: sascha@500: Improved logging. sascha@500: sascha@500: * src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java: sascha@500: Removed superfluous imports. sascha@500: sascha@499: 2011-05-08 Sascha L. Teichmann sascha@499: sascha@499: * src/main/java/de/intevation/flys/importer/StaFileParser.java: sascha@499: Only accept main value types 'Q', 'W', 'D' and 'T' by default. sascha@499: '-' is not handled any more because it causes too much constraint sascha@499: problems. You can overwrite the imported type with the sascha@499: system property flys.backend.main.value.types" (default "QWTD") sascha@499: sascha@499: * src/main/java/de/intevation/flys/importer/ImporterSession.java: sascha@499: Set session flush mode to manual. Hopefully this improves the sascha@499: performance a bit. sascha@499: sascha@499: * src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@499: src/main/java/de/intevation/flys/importer/ImportGauge.java, sascha@499: src/main/java/de/intevation/flys/importer/ImportWstColumn.java, sascha@499: src/main/java/de/intevation/flys/importer/ImportRange.java, sascha@499: src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: sascha@499: Improved logging. sascha@499: sascha@498: 2011-05-08 Sascha L. Teichmann sascha@498: sascha@498: * src/main/java/de/intevation/flys/importer/WstColumnValueKey.java: Deleted sascha@498: * src/main/java/de/intevation/flys/importer/IdValueKey.java: Reinserted sascha@498: here in a more generalized form. sascha@498: sascha@498: * src/main/java/de/intevation/flys/importer/ImporterSession.java: sascha@498: Cache the discharge table value, too. sascha@498: sascha@498: * src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java: sascha@498: Use the global cache. sascha@498: sascha@497: 2011-05-08 Sascha L. Teichmann sascha@497: sascha@497: * src/main/java/de/intevation/flys/importer/ImporterSession.java: sascha@497: New. Centralized caching in the thread local context. Importing sascha@497: the Elbe leads to OOM because the column values of the sascha@497: WST files where loaded separately for every file. sascha@497: sascha@497: * src/main/java/de/intevation/flys/importer/ImportPosition.java, sascha@497: src/main/java/de/intevation/flys/importer/Importer.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportAnnotation.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportWstQRange.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportMainValue.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportMainValueType.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportNamedMainValue.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportRiver.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportGauge.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportWstColumnQRange.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportWstColumn.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportRange.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportDischargeTable.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportAttribute.java, sascha@497: src/main/java/de/intevation/flys/importer/ImportTimeInterval.java: sascha@497: Adjusted to use the new global context. sascha@497: sascha@496: 2011-05-08 Sascha L. Teichmann sascha@496: sascha@496: * doc/schema/postgresql.sql: Dropped constraint which sascha@496: forces discharge tables to have a unique time interval sascha@496: for a given gauge and kind. sascha@496: sascha@496: There are AT files (historical Mosel/Perl/Perl/1967-1981.at sascha@496: and Mosel/Perl/1967-1981-1.at) which violate this sascha@496: constraint. Its a technical question to the customer sascha@496: how to handle these cases. sascha@496: sascha@496: To adjust existing databases: sascha@496: sascha@496: ALTER TABLE discharge_tables DROP CONSTRAINT discharge_tables_gauge_id_key; sascha@496: sascha@496: 2011-05-08 Sascha L. Teichmann sascha@495: sascha@495: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@495: There are wst files where column names are not unique. sascha@495: Make them unique by appending (1), (2) and so on. sascha@495: sascha@493: 2011-05-05 Sascha L. Teichmann sascha@493: sascha@494: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@494: Import the "HW-Schutzanlagen", too. sascha@494: sascha@494: 2011-05-05 Sascha L. Teichmann sascha@494: sascha@494: Make import of historical discharge tables work. sascha@493: sascha@493: * doc/schema/postgresql.sql: Added forgotten column 'description'. sascha@493: sascha@493: !!! You have to drop your database !!! sascha@493: sascha@493: * src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: sascha@493: src/main/java/de/intevation/flys/model/DischargeTable.java: sascha@493: Add the forgotten description property. sascha@493: sascha@493: * src/main/java/de/intevation/flys/importer/AtFileParser.java: sascha@493: Fixed problems with date recognition. sascha@493: sascha@493: * src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@493: Prefix the description of the historical discharge tables sascha@493: with "Histor.Abflusstafeln". sascha@493: sascha@493: * src/main/java/de/intevation/flys/importer/ImportTimeInterval.java: sascha@493: Fixed silly programming error. sascha@493: sascha@492: 2011-05-05 Sascha L. Teichmann sascha@492: sascha@492: * src/main/java/de/intevation/flys/importer/AtFileParser.java: sascha@492: Inject 'kind' attribute. sascha@492: sascha@492: * src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@492: Traverse the "Histor.Abflusstafeln" for the historical sascha@492: discharge tables. too. TODO: Store them in the database. sascha@492: sascha@492: * src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: sascha@492: Added convinience constructor to set the kind of the sascha@492: discharge table. sascha@492: sascha@491: 2011-05-05 Sascha L. Teichmann sascha@491: sascha@491: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@491: Prefix "Zusätzliche Längsschnitte" with "Zus.Längsschnitte" sascha@491: in description. sascha@491: sascha@490: 2011-05-05 Sascha L. Teichmann sascha@490: sascha@490: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@490: Import 'Hochwasser-Marken', too. sascha@490: sascha@490: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@490: Removed superfluous import. sascha@490: sascha@489: 2011-05-05 Sascha L. Teichmann sascha@489: sascha@489: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@489: Ignore lines that contain km positions which were found sascha@489: before in the same file. sascha@489: ingo@488: 2011-05-05 Ingo Weinzierl ingo@488: ingo@488: * src/main/java/de/intevation/flys/model/River.java: Added a method that ingo@488: returns all gauges of the river intersected by a given start and end ingo@488: point. ingo@488: sascha@487: 2011-05-03 Sascha L. Teichmann sascha@487: sascha@487: * src/main/java/de/intevation/flys/importer/ImportTimeInterval.java: sascha@487: Forgot to fetch peer from result set. sascha@487: sascha@486: 2011-05-03 Sascha L. Teichmann sascha@486: sascha@486: * src/main/java/de/intevation/flys/importer/ImportTimeInterval.java: sascha@486: New. Importer model help fetching the database peer. sascha@486: sascha@486: * src/main/java/de/intevation/flys/model/TimeInterval.java: sascha@486: Add convinience constructor with start and stop time. sascha@486: sascha@486: * src/main/java/de/intevation/flys/importer/AtFileParser.java: sascha@486: Attach a time interval to a discharge table if we find one. sascha@486: sascha@486: * src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: sascha@486: Store the reference to the importer model of the sascha@486: time interval of the discharge table. sascha@486: sascha@485: 2011-05-03 Sascha L. Teichmann sascha@485: sascha@485: * src/main/java/de/intevation/flys/importer/AtFileParser.java: sascha@485: Try to extract time ranges from at files. sascha@485: sascha@484: 2011-05-03 Sascha L. Teichmann sascha@484: sascha@484: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@484: Parse and store "amtliche Linien" wst files. sascha@484: sascha@483: 2011-05-03 Sascha L. Teichmann sascha@483: sascha@483: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@483: Parse and store fixation wst files as well. sascha@483: sascha@482: 2011-05-03 Sascha L. Teichmann sascha@482: sascha@482: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@482: Parse the "zusaetzliche Laengsschnitte", too. sascha@482: sascha@482: * src/main/java/de/intevation/flys/importer/ImportWst.java: sascha@482: Add getter/setter for column 'kind'. sascha@482: sascha@481: 2011-05-02 Sascha L. Teichmann sascha@481: sascha@481: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@481: Fixed flys/issue19: Do not take km column in wst file as a water level. sascha@481: ingo@480: 2011-05-02 Ingo Weinzierl ingo@480: ingo@480: * src/main/java/de/intevation/flys/model/Gauge.java: Introduced a 'scale' ingo@480: that is used to adjust the range of min/max W values. ingo@480: sascha@479: 2011-05-01 Sascha L. Teichmann sascha@479: sascha@479: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@479: Removed superfluous import. sascha@479: ingo@478: 2011-04-20 Ingo Weinzierl ingo@478: ingo@478: * src/main/java/de/intevation/flys/importer/WstColumnValueKey.java: ingo@478: New. This class is used as distinct key of a WstColumnValue - e.g. as ingo@478: key in a map. ingo@478: ingo@478: * src/main/java/de/intevation/flys/importer/ImportWst.java: A ingo@478: WstColumnValue cache is build up while initialization. This cache ingo@478: contains all WstColumnValues that exist in the database. ingo@478: ingo@478: * src/main/java/de/intevation/flys/importer/ImportWstColumn.java: New ingo@478: constructor that takes the WstColumnValues cache. It is used to ingo@478: initialize new ImportWstColumnValue objects. ingo@478: ingo@478: * src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java: ingo@478: Speedup: A ImportWstColumnValue has a WstColumnValues cache that ingo@478: contains all WstColumnValues existing in the database. This makes it ingo@478: unnecessary to call an sql statement for each WstColumnValue to ingo@478: determine its existence in the database. ingo@478: sascha@476: 2011-04-18 Sascha L. Teichmann sascha@476: sascha@476: * doc/schema/postgresql.sql, doc/schema/postgresql-cleanup.sql: sascha@476: Added a view 'wst_value_table' which aggregates the data sascha@476: to build w/q value tables. sascha@476: sascha@477: To update existing databases: sascha@477: sascha@477: BEGIN; sascha@477: CREATE VIEW wst_value_table AS sascha@477: SELECT wcv.position AS position, sascha@477: w, sascha@477: (SELECT q sascha@477: FROM wst_column_q_ranges wcqr sascha@477: JOIN wst_q_ranges wqr sascha@477: ON wcqr.wst_q_range_id = wqr.id sascha@477: JOIN ranges r sascha@477: ON r.id = wqr.range_id sascha@477: WHERE wcqr.wst_column_id = wc.id sascha@477: AND wcv.position BETWEEN r.a AND r.b) AS q, sascha@477: wc.position AS column_pos, sascha@477: w.id AS wst_id sascha@477: FROM wst_column_values wcv sascha@477: JOIN wst_columns wc sascha@477: ON wcv.wst_column_id = wc.id sascha@477: JOIN wsts w sascha@477: ON wc.wst_id = w.id sascha@477: ORDER BY wcv.position ASC, sascha@477: wc.position DESC; sascha@477: COMMIT; sascha@477: sascha@475: 2011-04-18 Sascha L. Teichmann sascha@475: sascha@475: * src/main/java/de/intevation/flys/model/Wst.java: sascha@475: Add forgotten one to many relation Wst -> WstColumn. sascha@475: sascha@474: 2011-04-18 Sascha L. Teichmann sascha@474: sascha@474: * src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@474: src/main/java/de/intevation/flys/importer/WstParser.java: sascha@474: Import of q ranges of wst files was totally broken. :-/ sascha@474: You have to reimport all your data. sascha@474: sascha@473: 2011-04-18 Sascha L. Teichmann sascha@473: sascha@473: * src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: sascha@473: Forgot kind parameter in peer fetching query. sascha@473: ingo@472: 2011-04-18 Ingo Weinzierl ingo@472: ingo@472: * src/main/java/de/intevation/flys/model/River.java:: ingo@472: Added a new method to determine the gauge based on a given start and end ingo@472: point of the river. ingo@472: sascha@471: 2011-04-15 Sascha L. Teichmann sascha@471: sascha@471: * doc/schema/postgresql.sql: Added 'position' column to wst_columns sascha@471: to allow order them by there column position in the original sascha@471: wst file. sascha@471: sascha@471: Update existing database with: sascha@471: sascha@471: BEGIN; sascha@471: ALTER TABLE wst_columns ADD COLUMN position int; sascha@471: UPDATE wst_columns w SET sascha@471: position = id - (SELECT min(id) FROM wst_columns WHERE wst_id = w.wst_id); sascha@471: ALTER TABLE wst_columns ADD CONSTRAINT wst_columns_wst_id_position_key sascha@471: UNIQUE (wst_id, position); sascha@471: COMMIT; sascha@471: sascha@471: * src/main/java/de/intevation/flys/model/Wst.java, sascha@471: src/main/java/de/intevation/flys/model/WstColumn.java: sascha@471: Adjusted models. sascha@471: sascha@471: * src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@471: src/main/java/de/intevation/flys/importer/ImportWstColumn.java: sascha@471: Adjusted importer. sascha@471: sascha@470: 2011-04-15 Sascha L. Teichmann sascha@470: sascha@470: * doc/schema/postgresql.sql: Forget ',' in schema. sascha@470: sascha@469: 2011-04-15 Sascha L. Teichmann sascha@469: sascha@469: * src/main/java/de/intevation/flys/model/Wst.java (determineMinMaxQ): sascha@469: Fixed index problem when an empty list is returned. sascha@469: ingo@468: 2011-04-15 Ingo Weinzierl ingo@468: ingo@468: * src/main/java/de/intevation/flys/model/Wst.java: A Wst is now able to ingo@468: return its min and max Q values. ingo@468: ingo@468: * src/main/java/de/intevation/flys/model/Gauge.java: A Gauge is now able ingo@468: to return its min and max W values. ingo@468: sascha@467: 2011-04-15 Sascha L. Teichmann sascha@467: sascha@467: * doc/schema/postgresql.sql: Added new column 'kind' in sascha@467: discharge tables and wst to distinguish between different sascha@467: kinds like 'Haupt-WST', 'zusaetzliche Laengsschnitte', sascha@467: 'amtliche Daten' and so on. sascha@467: sascha@467: Update existing databases with: sascha@467: BEGIN; sascha@467: ALTER TABLE discharge_tables ADD COLUMN kind int NOT NULL DEFAULT 0; sascha@467: ALTER TABLE wsts ADD COLUMN kind int NOT NULL DEFAULT 0; sascha@469: COMMIT; sascha@467: sascha@467: * src/main/java/de/intevation/flys/model/DischargeTable.java sascha@467: src/main/java/de/intevation/flys/model/Wst.java, sascha@467: src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@467: src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: sascha@467: Adjusted the models. sascha@467: ingo@466: 2011-04-15 Ingo Weinzierl ingo@466: ingo@466: * src/main/java/de/intevation/flys/backend/SessionHolder.java: Moved to ingo@466: this module from flys-artifacts. This is necessary to get access to the ingo@466: current session in this module as well. ingo@466: ingo@465: 2011-04-14 Ingo Weinzierl ingo@465: ingo@465: * src/main/java/de/intevation/flys/model/River.java: Added a method that ingo@465: returns the min and max distance of a river. ingo@465: sascha@464: 2011-04-03 Sascha L. Teichmann sascha@464: sascha@464: * src/**/*.java: Removed trailing whitespace. sascha@464: ingo@463: 2011-03-30 Ingo Weinzierl ingo@463: ingo@463: Tagged RELEASE 0.1 ingo@463: sascha@205: 2011-03-28 Sascha L. Teichmann sascha@205: sascha@205: * src/main/java/de/intevation/flys/model/Range.java: sascha@205: Forgot to save the last change before commit. sascha@205: sascha@204: 2011-03-28 Sascha L. Teichmann sascha@204: sascha@204: * src/main/java/de/intevation/flys/model/Range.java: sascha@204: Added methods to find out if two ranges intersects. sascha@204: sascha@203: 2011-03-24 Sascha L. Teichmann sascha@203: sascha@203: * src/main/java/de/intevation/flys/model/Gauge.java: sascha@203: Added an one to many relation to the discharge tables of a gauge. sascha@203: sascha@202: 2011-03-22 Sascha L. Teichmann sascha@202: sascha@202: Finished import of WSTs. sascha@202: sascha@202: TODO 1: Speed it up! It takes on a high end machine over 7(!) sascha@202: minutes only for the data of the Saar. sascha@202: TODO 2: Double precision floating point representations produced sascha@202: by the the parsers leed to unique constraint violations sascha@202: in the backend on a second run. So the import is currently sascha@202: only working on freshly initialized data bases. sascha@202: More consequent working with BigDecimal and some sascha@202: rounding may be of help here. sascha@202: sascha@202: * src/main/java/de/intevation/flys/model/WstColumnValue.java: sascha@202: Added convinience constructors. sascha@202: sascha@202: * src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java: sascha@202: Added getPeer() method. sascha@202: sascha@202: * src/main/java/de/intevation/flys/importer/ImportWstColumn.java: sascha@202: Add a list of the ImportWstColumnValues produced by the WST parser. sascha@202: sascha@202: * src/main/java/de/intevation/flys/importer/WstParser.java: Add sascha@202: the (km, w) values to the ImportWstColumns. sascha@202: sascha@201: 2011-03-22 Sascha L. Teichmann sascha@201: sascha@201: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@201: Build models for wsts, wst columns and q ranges and sascha@201: store them in the backend. TODO: store the w values. sascha@201: sascha@201: * src/main/java/de/intevation/flys/model/WstQRange.java sascha@201: src/main/java/de/intevation/flys/model/Wst.java, sascha@201: src/main/java/de/intevation/flys/model/Range.java, sascha@201: src/main/java/de/intevation/flys/model/WstColumnQRange.java, sascha@201: src/main/java/de/intevation/flys/model/WstColumn.java: sascha@201: Added convinience constructors. sascha@201: sascha@201: * src/main/java/de/intevation/flys/importer/ImportWstQRange.java, sascha@201: src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@201: src/main/java/de/intevation/flys/importer/ImportRiver.java, sascha@201: src/main/java/de/intevation/flys/importer/ImportWstColumnQRange.java, sascha@201: src/main/java/de/intevation/flys/importer/ImportWstColumn.java, sascha@201: src/main/java/de/intevation/flys/importer/ImportRange.java: sascha@201: Added getPeer() methods. sascha@201: sascha@200: 2011-03-22 Sascha L. Teichmann sascha@200: sascha@200: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@200: The unit extraction in the WST parser of desktop FLYS sascha@200: is broken! Add a hack here to repair this for our sascha@200: importer. Desktop FLYS needs a fix, too! sascha@200: sascha@199: 2011-03-22 Sascha L. Teichmann sascha@199: sascha@199: * src/main/java/de/intevation/flys/importer/WstParser.java: sascha@199: Ported some stuff ver from WSTSource.java of desktop flys to sascha@199: parse WST files. TODO: create instances of the import models. sascha@199: sascha@199: * src/main/java/de/intevation/flys/utils/StringUtil.java: sascha@199: Copied from desktop flys. Used for some string operations sascha@199: in WST parser. sascha@199: sascha@199: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@199: Added system property 'flys.backend.importer.dry.run'. sascha@199: Set to true only the parsing is done and no writing sascha@199: to the backend. Default: false. sascha@199: sascha@199: * src/main/java/de/intevation/flys/App.java, sascha@199: src/main/java/de/intevation/flys/model/MainValueType.java: sascha@199: Removed needless imports. sascha@199: ingo@198: 2011-03-22 Ingo Weinzierl ingo@198: ingo@198: * src/main/java/de/intevation/flys/model/DischargeTableValue.java, ingo@198: src/main/java/de/intevation/flys/model/DischargeTable.java: Added new ingo@198: constructors. ingo@198: ingo@198: * src/main/java/de/intevation/flys/importer/AtFileParser.java: New. This ingo@198: parser is used to '*.at' files. ingo@198: ingo@198: * src/main/java/de/intevation/flys/importer/ImportGauge.java: Added code to ingo@198: import discharge tables. ingo@198: ingo@198: * src/main/java/de/intevation/flys/importer/ImportDischargeTableValue.java, ingo@198: src/main/java/de/intevation/flys/importer/ImportDischargeTable.java: New. ingo@198: Helper models for import discharge tables. ingo@198: sascha@197: 2011-03-22 Sascha L. Teichmann sascha@197: sascha@197: * src/main/java/de/intevation/flys/importer/WstParser.java, sascha@197: src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@197: Added stub for WST parser. sascha@197: sascha@196: 2011-03-22 Sascha L. Teichmann sascha@196: sascha@196: * src/main/java/de/intevation/flys/importer/ImportWstQRange.java, sascha@196: src/main/java/de/intevation/flys/importer/ImportWst.java, sascha@196: src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java, sascha@196: src/main/java/de/intevation/flys/importer/ImportWstColumnQRange.java, sascha@196: src/main/java/de/intevation/flys/importer/ImportWstColumn.java: sascha@196: Added importer helper model stubs for WST imports. sascha@196: sascha@195: 2011-03-21 Sascha L. Teichmann sascha@195: sascha@195: Second part of parsing/storing main values. Should be finished now. sascha@195: sascha@195: * src/main/java/de/intevation/flys/importer/ImportNamedMainValue.java, sascha@195: src/main/java/de/intevation/flys/importer/ImportMainValue.java: sascha@195: New. Helper models for import main values, sascha@195: sascha@195: * src/main/java/de/intevation/flys/model/MainValue.java, sascha@195: src/main/java/de/intevation/flys/model/NamedMainValue.java: sascha@195: Added convinience constructors. sascha@195: sascha@195: * src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@195: Write main values to backend, too. sascha@195: sascha@195: * src/main/java/de/intevation/flys/importer/StaFileParser.java: sascha@195: Build importer models for main values. sascha@195: sascha@195: * src/main/java/de/intevation/flys/importer/ImportMainValueType.java: sascha@195: Data was called 'value'. Now it is 'name' to fit the sascha@195: schema. sascha@195: sascha@194: 2011-03-21 Sascha L. Teichmann sascha@194: sascha@194: * doc/schema/postgresql.sql: Fixed wrong unique constraint. sascha@194: sascha@194: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@194: Added some logging when storing gauges. sascha@194: sascha@193: 2011-03-21 Sascha L. Teichmann sascha@193: sascha@193: * src/main/java/de/intevation/flys/model/Gauge.java: sascha@193: Add forgotten column river_id. sascha@193: sascha@193: * src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@193: Small HQL fix. sascha@193: sascha@192: 2011-03-21 Sascha L. Teichmann sascha@192: sascha@192: * src/main/java/de/intevation/flys/model/Gauge.java: sascha@192: Added convinience contructor. sascha@192: sascha@192: * src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@192: Fixed getPeer() method. sascha@192: sascha@192: * src/main/java/de/intevation/flys/importer/StaFileParser.java: sascha@192: Fixed parsing of STA files. sascha@192: sascha@191: 2011-03-21 Sascha L. Teichmann sascha@191: sascha@191: * src/main/java/de/intevation/flys/importer/ImportRiver.java, sascha@191: src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@191: Propagate river into storing of gauges. sascha@191: sascha@191: 2011-03-21 Sascha L. Teichmann sascha@190: sascha@190: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@190: Added code to store rivers not only annotations. sascha@190: sascha@190: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@190: Added stub code to write gauges. sascha@190: sascha@189: 2011-03-17 Sascha L. Teichmann sascha@189: sascha@189: First part of parsing main values. sascha@189: sascha@189: * src/main/java/de/intevation/flys/App.java: Commented out sascha@189: creation of dummy rivers. sascha@189: sascha@189: * src/main/java/de/intevation/flys/model/NamedMainValues.java: sascha@189: Moved to NamedMainValue. sascha@189: sascha@189: * src/main/java/de/intevation/flys/model/NamedMainValue.java: sascha@189: New. Formerly NamedMainValues. sascha@189: sascha@189: * src/main/java/de/intevation/flys/model/MainValue.java: sascha@189: New. Forgotten part of the model. sascha@189: sascha@189: * src/main/java/de/intevation/flys/model/MainValueType.java: sascha@189: Data is String not BigDecimal sascha@189: sascha@189: * src/main/java/de/intevation/flys/model/Range.java: Removed sascha@189: contructor with double arguments. Using BigDecimal now. sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/PegelGltParser.java: sascha@189: Propagate BigDecimal usage. sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@189: Removed needless import. Added TODO sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@189: Parse the dependencies of the gauges, too. sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/StaFileParser.java: sascha@189: New. Parser for STA files. sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@189: Call STA file parser. sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/AnnotationsParser.java, sascha@189: src/main/java/de/intevation/flys/importer/ImportRange.java: sascha@189: Uses BigDecimal now. sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/ImportAttribute.java: sascha@189: Fixed wrong type cast in equals. sascha@189: sascha@189: * src/main/java/de/intevation/flys/importer/ImportMainValueType.java: sascha@189: New. Helper model for importing main value types. sascha@189: sascha@189: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@189: Register forgotten MainValue model. sascha@189: sascha@188: 2011-03-17 Sascha L. Teichmann sascha@188: sascha@188: Store annotations in backend. sascha@188: sascha@188: * src/main/java/de/intevation/flys/model/Annotation.java: sascha@188: New convinience constructor. sascha@188: sascha@188: * src/main/java/de/intevation/flys/model/River.java: sascha@188: Added toString() method. sascha@188: sascha@188: * src/main/java/de/intevation/flys/model/Range.java: sascha@188: Fixed nasty mistake in @OneToOne annotatation. sascha@188: New convinience constructors. sascha@188: sascha@188: * src/main/java/de/intevation/flys/importer/ImportPosition.java sascha@188: src/main/java/de/intevation/flys/importer/ImportAnnotation.java, sascha@188: src/main/java/de/intevation/flys/importer/ImportRange.java sascha@188: src/main/java/de/intevation/flys/importer/ImportAttribute.java: sascha@188: Make storing to backend work. It's a bit too slow. :-/ sascha@188: sascha@188: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@188: Fetch peer from backend. Added method to store annotations. sascha@188: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@188: Stored annotations into backend. More eloquent SQL exception sascha@188: handling. sascha@188: sascha@187: 2011-03-17 Sascha L. Teichmann sascha@187: sascha@187: * src/main/java/de/intevation/flys/model/Attribute.java, sascha@187: src/main/java/de/intevation/flys/model/Position.java: sascha@187: Added convinience constructors. sascha@187: sascha@187: * src/main/java/de/intevation/flys/importer/ImportPosition.java, sascha@187: src/main/java/de/intevation/flys/importer/ImportAttribute.java: sascha@187: Bound them to there backend peers. sascha@187: sascha@186: 2011-03-17 Sascha L. Teichmann sascha@186: sascha@186: * src/main/java/de/intevation/flys/importer/AnnotationsParser.java: sascha@186: New. Added parser to read *.KM files. sascha@186: sascha@186: * src/main/java/de/intevation/flys/importer/ImportPosition.java, sascha@186: src/main/java/de/intevation/flys/importer/PegelGltParser.java, sascha@186: src/main/java/de/intevation/flys/importer/ImportRiver.java, sascha@186: src/main/java/de/intevation/flys/importer/ImportAnnotation.java, sascha@186: src/main/java/de/intevation/flys/importer/ImportRange.java, sascha@186: src/main/java/de/intevation/flys/importer/InfoGewParser.java, sascha@186: src/main/java/de/intevation/flys/importer/ImportAttribute.java: sascha@186: Adjusted to load the annotations from *.KM files. sascha@186: sascha@185: 2011-03-17 Sascha L. Teichmann sascha@185: sascha@185: * src/main/java/de/intevation/flys/importer/ImportPosition.java, sascha@185: src/main/java/de/intevation/flys/importer/ImportRange.java, sascha@185: src/main/java/de/intevation/flys/importer/ImportAttribute.java, sascha@185: src/main/java/de/intevation/flys/importer/ImportAnnotation.java: sascha@185: New helper models for import. sascha@185: sascha@185: * src/main/java/de/intevation/flys/importer/PegelGltParser.java, sascha@185: src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@185: Use new models. sascha@185: sascha@184: 2011-03-17 Sascha L. Teichmann sascha@184: sascha@184: * src/main/java/de/intevation/flys/importer/PegelGltParser.java: sascha@184: New. Parser for PEGEL.GLT files. sascha@184: sascha@184: * src/main/java/de/intevation/flys/importer/ImportGauge.java: sascha@184: New. Import model for gauges. sascha@184: sascha@184: * src/main/java/de/intevation/flys/utils/DBCPConnectionProvider.java: sascha@184: Removed needless imports. sascha@184: sascha@184: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@184: Added method to parse the gauges. sascha@184: sascha@184: * src/main/java/de/intevation/flys/importer/InfoGewParser.java: sascha@184: Trigger pegel glt file parsing. sascha@184: sascha@183: 2011-03-17 Sascha L. Teichmann sascha@183: sascha@183: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@183: Used thread local pattern to make sharing of session easier. sascha@183: sascha@182: 2011-03-17 Sascha L. Teichmann sascha@182: sascha@182: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@182: Fixed error in HQL statement. sascha@182: sascha@181: 2011-03-17 Sascha L. Teichmann sascha@181: sascha@181: * src/main/java/de/intevation/flys/utils/DBCPConnectionProvider.java: sascha@181: Commented out a debug block because it leaks the db password. sascha@181: sascha@180: 2011-03-16 Sascha L. Teichmann sascha@180: sascha@180: * src/main/java/de/intevation/flys/importer/InfoGewParser.java: sascha@180: Expose imported rivers. sascha@180: sascha@180: * src/main/java/de/intevation/flys/importer/InfoGewParser.java: sascha@180: Store imported rivers into database. Needs testing! sascha@180: sascha@179: 2011-03-16 Sascha L. Teichmann sascha@179: sascha@179: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@179: Default connection parameters are now overwritable with sascha@179: system properties (defaults in brackets): sascha@179: - user name: flys.backend.user (flys) sascha@179: - user password: flys.backend.password (flys) sascha@179: - db dialect: flys.backend.dialect (org.hibernate.dialect.PostgreSQLDialect) sascha@179: - db driver: flys.backend.driver (org.postgresql.Driver) sascha@179: - db url: flys.backend.url (jdbc:postgresql://localhost:5432/flys) sascha@179: sascha@178: 2011-03-16 Sascha L. Teichmann sascha@178: sascha@178: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@178: Expose createSessionFactory() as public to be usable without sascha@178: a artifact database running. sascha@178: sascha@177: 2011-03-16 Sascha L. Teichmann sascha@177: sascha@177: * src/main/java/de/intevation/flys/utils/FileTools.java: sascha@177: Tools for handling with filenames. Currently there is sascha@177: a repair(File) method with repairs letter case errors sascha@177: which is useful when reading windows filenames on a sascha@177: un*x platform. sascha@177: sascha@177: * src/main/java/de/intevation/flys/importer/Importer.java: sascha@177: Standalone app to read data from the file system and sascha@177: store it in a database. Currently it does not store sascha@177: anything. It only loads info gew files. sascha@177: sascha@177: * src/main/java/de/intevation/flys/importer/InfoGewParser.java: sascha@177: Info gew parser. sascha@177: sascha@177: * src/main/java/de/intevation/flys/importer/ImportRiver.java: sascha@177: Helper model of a river used produced by parsing the sascha@177: info gew files. sascha@177: sascha@176: 2011-03-15 Sascha L. Teichmann sascha@176: sascha@176: * src/main/java/de/intevation/flys/backend/SessionFactoryProvider.java: sascha@176: New. SessionFactoryProvider.getSessionFactory() provides a sascha@176: SessionFactory to use the Hibernate O/R mapper for the FLYS backend. sascha@176: sascha@175: 2011-03-15 Sascha L. Teichmann sascha@175: sascha@175: * pom.xml: Added dependency to artifacts-commons to sascha@175: be able to use the global configuration of the artifact database. sascha@175: sascha@174: 2011-03-15 Sascha L. Teichmann sascha@174: sascha@174: * src/main/java/de/intevation/flys/App.java: Wire all POJOs sascha@174: to corresponding factory. sascha@174: sascha@174: * src/main/java/de/intevation/flys/model/*.java: Generate sascha@174: all foreign key constraints. TODO: name them correctly sascha@174: because the machine generated names are ugly and do sascha@174: not fit the PostgreSQL names. sascha@174: sascha@174: * doc/schema/postgresql.sql: Small quantifier fix in descriptions sascha@174: of wst columns. sascha@174: sascha@173: 2011-03-14 Sascha L. Teichmann sascha@173: sascha@173: * doc/schema/postgresql.sql: Fixed wrong spelled sascha@173: column references in foreign keys introduces with sascha@173: last change. sascha@173: sascha@172: 2011-03-14 Sascha L. Teichmann sascha@172: sascha@172: * src/main/java/de/intevation/flys/model/*.java: Added sascha@172: column annotations for simple fields. TODO: foreign keys. sascha@172: sascha@171: 2011-03-14 Sascha L. Teichmann sascha@171: sascha@171: * doc/schema/postgresql.sql, doc/schema/postgresql-cleanup.sql: sascha@171: Fixed inconsistent table names. sascha@171: sascha@171: * src/main/java/de/intevation/flys/model/*.java: Added sascha@171: entity and id annotations. sascha@171: sascha@170: 2011-03-14 Sascha L. Teichmann sascha@170: sascha@170: * doc/schema/postgresql.sql, doc/schema/postgresql-cleanup.sql: sascha@170: Added missing sequences. sascha@170: sascha@170: * doc/schema/sqlite.sql: Deleted. Not longer supported. sascha@170: sascha@169: 2011-03-11 Sascha L. Teichmann sascha@169: sascha@169: * doc/schema/postgresql-cleanup.sql: Forgot to add. sascha@169: sascha@169: * src/main/java/de/intevation/flys/App.java: Use sascha@169: Apache Commons DBCP as Hibernate connection provide. sascha@169: sascha@169: * src/main/java/de/intevation/flys/model/River.java: sascha@169: Added a constructor with string argument. Set the sascha@169: sequence increment to 1 (eat up 100 at a time before). sascha@169: sascha@169: * pom.xml: Added PostgreSQL 8.4 driver as runtime dependency. sascha@169: sascha@168: 2011-03-11 Sascha L. Teichmann sascha@168: sascha@168: * doc/schema/postgresql-cleanup.sql: New. Tear down schema sascha@168: for a postgres database. sascha@168: sascha@168: * doc/schema/postgresql.sql: Added squence for sascha@168: auto generating ids in river table. Cleaned up schema. sascha@168: sascha@168: * src/main/java/de/intevation/flys/App.java: Simple sascha@168: test app to interact with hibernate. Needs to be removed sascha@168: because its only a toy. sascha@168: sascha@168: * src/main/java/de/intevation/flys/utils/DBCPConnectionProvider.java: sascha@168: New. Binds Apache Commons to Hibernate. sascha@168: sascha@168: * pom.xml: Added dependencies to log4j, commons dbcp, sascha@168: JPA of hibernate. sascha@168: sascha@168: * src/main/java/de/intevation/flys/model/River.java: Added sascha@168: JPA annotations. sascha@168: sascha@168: * src/main/java/de/intevation/flys/model/*.java: Replaced sascha@168: Long with Integer because column ids are only four bytes wide. sascha@168: sascha@167: 2011-03-11 Sascha L. Teichmann sascha@167: sascha@167: * doc/schema/sqlite.sql, doc/schema/postgresql.sql: Fixed sascha@167: smaller issues in ddl. sascha@167: sascha@167: * src/main/java/de/intevation/flys/model/*.java: Added POJOs sascha@167: of to be mapped. TODO: Map them! sascha@167: sascha@167: * pom.xml: Added plugin config for hibernate. sascha@167: sascha@166: 2011-03-09 Sascha L. Teichmann sascha@166: sascha@166: * pom.xml: Added dependency (and corresponding repository) to sascha@166: Hibernate Core 3.6.1 Final sascha@166: sascha@165: 2011-03-09 Sascha L. Teichmann sascha@165: sascha@165: * pom.xml, src/**: Created a new empty maven project: sascha@165: $ mvn archetype:create \ sascha@165: -DgroupId=de.intevation.flys \ sascha@165: -DartifactId=flys-backend sascha@165: sascha@164: 2011-03-09 Sascha L. Teichmann sascha@164: sascha@164: * README: New. Some setup instructions. sascha@164: sascha@164: * doc/schema/postgresql.sql: New. Schema converted to PostgreSQL sascha@164: sascha@164: * doc/schema/sqlite.sql: Fixed defect foreign key constraints. sascha@164: sascha@163: 2011-03-09 Sascha L. Teichmann sascha@163: sascha@163: * doc/schema/sqlite.sql: Factorized time intervals out into sascha@163: a separated table. sascha@163: sascha@162: 2011-01-22 Sascha L. Teichmann sascha@162: sascha@162: * contrib/import-kms.py, contrib/import-gew.py: Initial scripts sascha@162: to import data into SQLite database. They still need some work. sascha@162: sascha@162: 2011-02-10 Sascha L. Teichmann : sascha@161: sascha@161: * doc/schema/sqlite.sql: Added initial schema for sascha@161: FLYS database.