# HG changeset patch # User Sascha L. Teichmann # Date 1361738289 -3600 # Node ID ca45dd039b547027674a94f87be99bdf10f3b939 # Parent 7bbee0cfc171f756da78b1cf1801869fe4a923c6 Log the number of points of cross sections to see the effect of the simplification. diff -r 7bbee0cfc171 -r ca45dd039b54 flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java --- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java Sun Feb 24 17:29:52 2013 +0100 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java Sun Feb 24 21:38:09 2013 +0100 @@ -172,19 +172,19 @@ implements CrossSectionParser.Callback { private Set files = new HashSet(); - private String type; - + private String type; /** * Create new Callback, given type which is used for logging * purposes only. */ - public ImportRiverCrossSectionParserCallback (String type) { + public ImportRiverCrossSectionParserCallback(String type) { this.type = type; } /** Accept file if not duplicate. */ + @Override public boolean accept(File file) { HashedFile hf = new HashedFile(file); boolean success = files.add(hf); @@ -196,14 +196,60 @@ /** Add crosssection. */ + @Override public void parsed(CrossSectionParser parser) { log.debug("callback from " + type + " parser"); - addCrossSections(parser); + String description = parser.getDescription(); + Integer year = parser.getYear(); + ImportTimeInterval ti = year != null + ? new ImportTimeInterval(yearToDate(year)) + : null; + + Map> data = parser.getData(); + + List lines = + new ArrayList(data.size()); + + Double simplificationEpsilon = + Config.INSTANCE.getCrossSectionSimplificationEpsilon(); + + long numReadPoints = 0L; + long numRemainingPoints = 0L; + + for (Map.Entry> entry: data.entrySet()) { + Double km = entry.getKey(); + List points = entry.getValue(); + numReadPoints += points.size(); + if (simplificationEpsilon != null) { + points = DouglasPeuker.simplify(points, simplificationEpsilon); + } + numRemainingPoints += points.size(); + lines.add(new ImportCrossSectionLine(km, points)); + } + + ImportRiver.this.addCrossSections(description, ti, lines); + + double percent = numReadPoints > 0L + ? ((double)numRemainingPoints/numReadPoints)*100d + : 0d; + + log.info(String.format( + "Number of points in cross section: %d / %d (%.2f%%)", + numReadPoints, numRemainingPoints, percent)); } } // ImportRiverCrossSectionParserCallback + private void addCrossSections( + String description, + ImportTimeInterval ti, + List lines + ) { + crossSections.add(new ImportCrossSection(this, description, ti, lines)); + } + + public ImportRiver() { hyks = new ArrayList(); crossSections = new ArrayList(); @@ -938,36 +984,6 @@ } - /** Add cross sections with description, years and lines to - * store. */ - private void addCrossSections(CrossSectionParser parser) { - String description = parser.getDescription(); - Integer year = parser.getYear(); - ImportTimeInterval ti = year != null - ? new ImportTimeInterval(yearToDate(year)) - : null; - - Map> data = parser.getData(); - - List lines = - new ArrayList(data.size()); - - Double simplificationEpsilon = - Config.INSTANCE.getCrossSectionSimplificationEpsilon(); - - for (Map.Entry> entry: data.entrySet()) { - Double km = entry.getKey(); - List points = entry.getValue(); - if (simplificationEpsilon != null) { - points = DouglasPeuker.simplify(points, simplificationEpsilon); - } - lines.add(new ImportCrossSectionLine(km, points)); - } - - crossSections.add(new ImportCrossSection( - this, description, ti, lines)); - } - /** Create a W80 Parser and parse w80 files found. */ public void parseW80s() { if (Config.INSTANCE.skipW80s()) { @@ -1003,6 +1019,7 @@ ImportRiverCrossSectionParserCallback da50Callback = new ImportRiverCrossSectionParserCallback("da50"); + parser.parseDA50s(riverDir, da50Callback); } @@ -1024,6 +1041,7 @@ ImportRiverCrossSectionParserCallback da66Callback = new ImportRiverCrossSectionParserCallback("da66"); + parser.parseDA66s(riverDir, da66Callback); }