Mercurial > dive4elements > river
changeset 9012:abe069eb180c
Import of vegetation zones added
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/backend/FLYSCredentials.java Wed Apr 18 07:43:04 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/backend/FLYSCredentials.java Wed Apr 18 07:43:55 2018 +0200 @@ -108,6 +108,9 @@ import org.dive4elements.river.model.uinfo.Salix; import org.dive4elements.river.model.uinfo.SalixRank; import org.dive4elements.river.model.uinfo.SalixValue; +import org.dive4elements.river.model.uinfo.Vegetation; +import org.dive4elements.river.model.uinfo.VegetationType; +import org.dive4elements.river.model.uinfo.VegetationZone; public class FLYSCredentials extends Credentials @@ -267,7 +270,10 @@ FlowDepthColumn.class, FlowDepthValue.class, DepthEvolution.class, - DepthEvolutionValue.class + DepthEvolutionValue.class, + Vegetation.class, + VegetationZone.class, + VegetationType.class }; public FLYSCredentials() {
--- a/backend/src/main/java/org/dive4elements/river/importer/Config.java Wed Apr 18 07:43:04 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/Config.java Wed Apr 18 07:43:55 2018 +0200 @@ -134,7 +134,8 @@ } private enum UInfoSkip { - SALIX("salix"); + SALIX("salix"), // + VEGETATION("vegetation"); private final String name; @@ -335,5 +336,9 @@ public boolean skipUInfoSalix() { return UInfoSkip.SALIX.getFlag(); } + + public boolean skipUInfoVegetation() { + return UInfoSkip.VEGETATION.getFlag(); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/backend/src/main/java/org/dive4elements/river/importer/common/AbstractParser.java Wed Apr 18 07:43:04 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/common/AbstractParser.java Wed Apr 18 07:43:55 2018 +0200 @@ -82,6 +82,13 @@ } /** + * How the km column and its content are expected + */ + protected enum KmMode { + NONE, UNIQUE, DUPLICATES + } + + /** * Path of the file or directory to import from */ protected final File importPath; @@ -382,25 +389,30 @@ return false; } - private void handleDataLine() { + /** + * Parses a values line and adds the values record + */ + protected void handleDataLine() { final String[] values = this.currentLine.split(SEPARATOR_CHAR, 0); // Skip import line without data or only km if (values.length < 2) return; - Double km; - try { - km = Double.valueOf(parseDouble(values[0]).doubleValue()); - if (kmMustBeUnique()) { - if (this.kmExists.contains(km)) { - logWarning("Ignoring duplicate station '" + values[0] + "' in line " + this.in.getLineNumber()); - return; + Double km = Double.NaN; + if (kmMode() != KmMode.NONE) { + try { + km = Double.valueOf(parseDouble(values[0]).doubleValue()); + if (kmMode() == KmMode.UNIQUE) { + if (this.kmExists.contains(km)) { + logWarning("Ignoring duplicate station '" + values[0] + "' in line " + this.in.getLineNumber()); + return; + } + this.kmExists.add(km); } - this.kmExists.add(km); } - } - catch (final Exception e) { - logError("Not parseable km in line " + this.in.getLineNumber() + ": " + e.getMessage()); - return; + catch (final Exception e) { + logError("Not parseable km in line " + this.in.getLineNumber() + ": " + e.getMessage()); + return; + } } final KMLINE value = createKmLineImport(km, values); if (value != null) @@ -408,10 +420,10 @@ } /** - * Whether {@link handleDataLine} shall check for and reject km duplicates + * How {@link handleDataLine} shall handle the km column (if any) */ - protected boolean kmMustBeUnique() { - return true; + protected KmMode kmMode() { + return KmMode.UNIQUE; } /**
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/BedMobilityParser.java Wed Apr 18 07:43:04 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/BedMobilityParser.java Wed Apr 18 07:43:55 2018 +0200 @@ -37,7 +37,7 @@ private static final String MOBILE_KEYWORD = "mobil"; - private static final String IMPORT_FILENAME = "Einteilung der Gewässersohle.csv"; + private static final String IMPORT_FILENAME = "Einteilung_der_Gewaessersohle.csv"; /***** CONSTRUCTORS *****/
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/CollisionParser.java Wed Apr 18 07:43:04 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/CollisionParser.java Wed Apr 18 07:43:55 2018 +0200 @@ -113,8 +113,8 @@ } @Override - protected boolean kmMustBeUnique() { - return false; + protected KmMode kmMode() { + return KmMode.DUPLICATES; } @Override
--- a/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/DailyDischargeParser.java Wed Apr 18 07:43:04 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/sinfo/parsers/DailyDischargeParser.java Wed Apr 18 07:43:55 2018 +0200 @@ -93,8 +93,8 @@ } @Override - protected boolean kmMustBeUnique() { - return false; + protected KmMode kmMode() { + return KmMode.NONE; } @Override
--- a/backend/src/main/java/org/dive4elements/river/importer/uinfo/UInfoImporter.java Wed Apr 18 07:43:04 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/uinfo/UInfoImporter.java Wed Apr 18 07:43:55 2018 +0200 @@ -19,9 +19,10 @@ import org.dive4elements.river.importer.ImportRiver; import org.dive4elements.river.importer.common.ImportParser; import org.dive4elements.river.importer.uinfo.parsers.SalixParser; +import org.dive4elements.river.importer.uinfo.parsers.VegetationParser; /** - * Import all S-INFO files of a river from its import directory and subdirectories<br /> + * Import all U-INFO files of a river from its import directory and subdirectories<br /> * <br /> * Requires river and its gauges to exist in the database already * @@ -38,7 +39,8 @@ private enum UInfoDirName { BASICS("Basisdaten"), // - SALIX("Salix-Linie" + File.separator + "Salix-Linie"); + SALIX("Salix-Linie" + File.separator + "Salix-Linie"), // + VEGETATION("Vegetationszonen"); private final String dirname; @@ -91,6 +93,13 @@ else { log.info("Salix: skipped"); } + if (!VegetationParser.shallSkip()) { + if (!this.parsers.addAll(VegetationParser.createParsers(UInfoDirName.VEGETATION.buildPath(this.rootDir), UInfoDirName.VEGETATION.getFile(), river))) + log.info("Vegetation: no files found"); + } + else { + log.info("Vegetation: skipped"); + } } /**