annotate backend/src/main/java/org/dive4elements/river/importer/parsers/W80CSVParser.java @ 8812:8ce2d749f0a7

Remove unsed debugging code.
author Tom Gottfried <tom@intevation.de>
date Thu, 13 Apr 2017 15:25:26 +0200
parents 9d2e69f971f5
children 5e38e2924c07
rev   line source
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5922
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5922
diff changeset
6 * documentation coming with Dive4Elements River for details.
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
9 package org.dive4elements.river.importer.parsers;
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
11 import org.dive4elements.artifacts.common.utils.FileTools;
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
13 import org.dive4elements.river.importer.XY;
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
15 import org.dive4elements.river.importer.parsers.tim.Coordinate;
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
16
8187
3bb1c62ad732 Moved package org.dive4elements.river.utils to org.dive4elements.river.backend.utils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6514
diff changeset
17 import org.dive4elements.river.backend.utils.DateGuesser;
3bb1c62ad732 Moved package org.dive4elements.river.utils to org.dive4elements.river.backend.utils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6514
diff changeset
18 import org.dive4elements.river.backend.utils.EpsilonComparator;
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 import java.io.File;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21 import java.io.IOException;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23 import java.util.ArrayList;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24 import java.util.Calendar;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25 import java.util.Date;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 import java.util.List;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 import java.util.Map;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 import java.util.TreeMap;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30 import org.apache.log4j.Logger;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
34 * To create cross-sections, generate: Map<double,list<xy>> from files
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 * in w80/csv format.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 public class W80CSVParser extends LineParser implements CrossSectionParser
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
39 /** Private log. */
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
40 private static Logger log = Logger.getLogger(W80CSVParser.class);
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 /** The current line to which add points. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 private List<XY> currentLine;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 /** Data collected so far, last element will be currentLine. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 protected Map<Double, List<XY>> data;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 /** Anchor to project to. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 private static class Anchor extends Coordinate {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 private static final double EPSILON = 1e-5;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 private double station;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58 public Anchor(double x, double y, double z, double station) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 super(x, y, z);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60 this.station = station;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63 public boolean sameStation(double station) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
64 return Math.abs(this.station - station) < EPSILON;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
65 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
66 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 /** Reference point for simple projection. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70 private Anchor anchor;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 * Reference point for distance calculations, introduced to
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 * deal with bends in the lines.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76 * Array has two entrys: first is GK-Right, second GK-High.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 private double[] lastPointGK;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
81 /** Measurement date of anchor as listed in w80 file. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
82 private Date anchorDate;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
85 private double distanceToLastPoint(double gkr, double gkh) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 double dx = gkr - lastPointGK[0];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 double dy = gkh - lastPointGK[1];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 double d = dx*dx + dy*dy;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
90 return Math.sqrt(d);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
91 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
92
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
93
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
94 /** Trivial constructor. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95 public W80CSVParser() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96 data = new TreeMap<Double, List<XY>>(EpsilonComparator.CMP);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 * Get the description of the cross section parsed -
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 * directory name of current file.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 public String getDescription() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 return getInputFile().getParentFile().getName();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110 /** Get the year of this cross sections measurement. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112 public Integer getYear() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 if (anchorDate == null) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 return null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 Calendar dateCalendar = Calendar.getInstance();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
117 dateCalendar.setTime(anchorDate);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
118 return dateCalendar.get(Calendar.YEAR);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
119 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
120
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
121
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
122 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
123 * Return the data parsed.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
124 * @return map of stations (km) to list of points.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
125 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
126 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
127 public Map<Double, List<XY>> getData() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
128 return data;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
129 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
130
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
131
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
132 /** Recursively descend root, ask the callback for every file
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
133 * found and parse it if callback acks. When done, notify callback. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
134 public void parseW80CSVs(File root, final Callback callback) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
135
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
136 FileTools.walkTree(root, new FileTools.FileVisitor() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
137 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
138 public boolean visit(File file) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
139 if (file.isFile() && file.canRead()
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 && file.getName().toLowerCase().endsWith(".csv")
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141 && (callback == null || callback.accept(file))) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 reset();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
143 try {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
144 parse(file);
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
145 log.info("parsing done");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
146 if (callback != null) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
147 callback.parsed(W80CSVParser.this);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
148 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
149 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
150 catch (IOException ioe) {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
151 log.error("IOException while parsing file");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
152 return false;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
154 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
155 return true;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
156 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
157 });
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
158 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
159
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
160
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
161 /** Called before consuming first line of file. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
162 public void reset() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
163 data.clear();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
164 currentLine = new ArrayList<XY>();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
165 anchor = null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
166 anchorDate = null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
167 lastPointGK = new double[] {0d,0d};
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
168 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
169
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
170
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
171 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
172 * Get the Index of the last cross-section lines point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
173 * @return last points index, -1 if not available.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
174 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
175 private int getLastPointIdx() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
176 if (currentLine == null || currentLine.isEmpty()) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
177 return -1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
178 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
179 XY lastPoint = this.currentLine.get(currentLine.size()-1);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
180 return lastPoint.getIndex();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
181 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
182
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
183
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
184 private double getLastPointX() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
185 if (currentLine == null || currentLine.isEmpty()) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
186 return 0d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
187 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
188 XY lastPoint = this.currentLine.get(currentLine.size()-1);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
189 return lastPoint.getX();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
190 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
191
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
192
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
193 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
194 * Add a Point (YZ,Index) to the current cross section line.
6514
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6268
diff changeset
195 * @param y The y coordinate of new point in GK.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6268
diff changeset
196 * @param z The z coordinate of new point in GK.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6268
diff changeset
197 * @param height The hight (3rd coord) of point, in meter.
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
198 * @param idx Ignored, the parameter of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
199 * @return true if point could been added, false otherwise (e.g. not
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
200 * parsable y or z values.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
201 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
202 private boolean addPoint(double gkr, double gkh, double height, String idx) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
203 // Calculate distance between this and lst point (add distances).
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
204 double d = distanceToLastPoint(gkr, gkh);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
205 double totalX = getLastPointX() + d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
206
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
207 // We ignore idx, and increment instead.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
208 int index;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
209 int lastPointIdx = getLastPointIdx();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
210 if (lastPointIdx <= 0) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
211 index = 1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
212 } else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
213 index = lastPointIdx + 1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
214 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
215
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
216 this.lastPointGK[0] = gkr;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
217 this.lastPointGK[1] = gkh;
6268
bbd44de9ec78 issue1267: Do not downscale height.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5992
diff changeset
218 currentLine.add(new XY(totalX, height, index));
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
219 return true;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
220 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
221
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
222 // As per documentation:
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
223 // BW;WPA;ST;UF;PN;LS;BL-LS;Y;X;Z;DL;LZK;SY;SX;SZ;BML;HS;BL-HS;H;DH;HZK;SH;WVA;BMH;BMP;DST;DB;LDS;LKZ;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
224
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
225
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
226 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
227 * Called for each line. Try to extract info from a w80 line.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
228 * @param lineNum Number of line (starting with 1).
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
229 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
230 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
231 protected void handleLine(int lineNum, String line) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
232 // First two lines are 'comment'-like.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
233 if (lineNum == 1 || lineNum == 2) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
234 return;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
235 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
236 // The 'shore' field shows which side of the river the shore is measured.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
237 // Therefore, the points have to be added in the correct order (also
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
238 // because later distances are calculated which cannot be
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239 // negative.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
240 String[] fields = line.split(";");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
241 String station = fields[2];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
242 String shore = fields[3];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
243 // TODO: There is 'station' and a 'shore'-code behind.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
244 // 1 = left, 2 = right. none = middle
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
245 String pointIndex = line.substring(16,21);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
246 // For GK, first seven digits are of interest.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
247 String gkRight = fields[7];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
248 String gkHigh = fields[8];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249 String date = fields[10];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
250 String height = fields[18];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
251 String dateH = line.substring(54,60);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
252 String dateDec = line.substring(64,70);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
253
5922
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
254 double stationKm;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
255 double gkRightKm;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
256 double gkHighKm;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
257 double heightM;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
258
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
259 try {
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
260 stationKm = Double.parseDouble(station) / 1000d;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
261 gkRightKm = Double.parseDouble(gkRight.replace(",","."));//.substring(0,7));
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
262 gkHighKm = Double.parseDouble(gkHigh.replace(",","."));//.substring(0,7));
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
263 heightM = Double.parseDouble(height.replace(",","."));
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
264 }
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
265 catch (java.lang.NumberFormatException nfe) {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
266 log.error("Skipping malformed w80csv line #" + lineNum);
5922
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
267 return;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
268 }
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
269
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
270 // New (or first) line.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
271 if (anchor == null || !anchor.sameStation(stationKm)) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
272 anchor = new Anchor(gkRightKm, gkHighKm, heightM, stationKm);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
273 lastPointGK[0] = gkRightKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
274 lastPointGK[1] = gkHighKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
275 currentLine = new ArrayList<XY>();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
276 data.put(stationKm, currentLine);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
277 currentLine.add(new XY(0d, heightM, 0));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
278 try {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
279 anchorDate = DateGuesser.guessDate(date);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
280 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
281 catch (IllegalArgumentException iae) {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
282 log.warn("W80CSV: Invalid date '" + date + "'.");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
283 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
284 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
285 else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
286 addPoint(gkRightKm, gkHighKm, heightM, pointIndex);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
287 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
288 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
289
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
290
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
291 /** Called when file is fully consumed. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
292 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
293 protected void finish() {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
294 log.info("Parsed " + data.size() + " lines");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
295 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
296
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
297 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
298 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org