annotate backend/src/main/java/org/dive4elements/river/importer/parsers/W80CSVParser.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
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
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
30 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
31 import org.apache.logging.log4j.LogManager;
5808
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 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 * 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
36 * in w80/csv format.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 public class W80CSVParser extends LineParser implements CrossSectionParser
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
40 /** Private log. */
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
41 private static Logger log = LogManager.getLogger(W80CSVParser.class);
5808
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 /** The current line to which add points. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 private List<XY> currentLine;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 /** 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
49 protected Map<Double, List<XY>> data;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 /** Anchor to project to. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 private static class Anchor extends Coordinate {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55 private static final double EPSILON = 1e-5;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57 private double station;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 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
60 super(x, y, z);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 this.station = station;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
64 public boolean sameStation(double station) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
65 return Math.abs(this.station - station) < EPSILON;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70 /** Reference point for simple projection. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71 private Anchor anchor;
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 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 * Reference point for distance calculations, introduced to
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76 * deal with bends in the lines.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77 * 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
78 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79 private double[] lastPointGK;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
82 /** 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
83 private Date anchorDate;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 private double distanceToLastPoint(double gkr, double gkh) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 double dx = gkr - lastPointGK[0];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 double dy = gkh - lastPointGK[1];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89 double d = dx*dx + dy*dy;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
90
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
91 return Math.sqrt(d);
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95 /** Trivial constructor. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96 public W80CSVParser() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 data = new TreeMap<Double, List<XY>>(EpsilonComparator.CMP);
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 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 * Get the description of the cross section parsed -
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 * directory name of current file.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 public String getDescription() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 return getInputFile().getParentFile().getName();
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 /** Get the year of this cross sections measurement. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113 public Integer getYear() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 if (anchorDate == null) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 return null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
117 Calendar dateCalendar = Calendar.getInstance();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
118 dateCalendar.setTime(anchorDate);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
119 return dateCalendar.get(Calendar.YEAR);
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 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
124 * Return the data parsed.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
125 * @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
126 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
127 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
128 public Map<Double, List<XY>> getData() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
129 return data;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
133 /** 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
134 * 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
135 public void parseW80CSVs(File root, final Callback callback) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
136
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
137 FileTools.walkTree(root, new FileTools.FileVisitor() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
138 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
139 public boolean visit(File file) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 if (file.isFile() && file.canRead()
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141 && file.getName().toLowerCase().endsWith(".csv")
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 && (callback == null || callback.accept(file))) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
143 reset();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
144 try {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
145 parse(file);
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
146 log.info("parsing done");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
147 if (callback != null) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
148 callback.parsed(W80CSVParser.this);
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 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151 catch (IOException ioe) {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
152 log.error("IOException while parsing file");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153 return false;
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 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
156 return true;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
162 /** Called before consuming first line of file. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
163 public void reset() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
164 data.clear();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
165 currentLine = new ArrayList<XY>();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
166 anchor = null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
167 anchorDate = null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
168 lastPointGK = new double[] {0d,0d};
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 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
173 * 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
174 * @return last points index, -1 if not available.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
175 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
176 private int getLastPointIdx() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
177 if (currentLine == null || currentLine.isEmpty()) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
178 return -1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
179 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
180 XY lastPoint = this.currentLine.get(currentLine.size()-1);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
181 return lastPoint.getIndex();
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
185 private double getLastPointX() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
186 if (currentLine == null || currentLine.isEmpty()) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
187 return 0d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
188 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
189 XY lastPoint = this.currentLine.get(currentLine.size()-1);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
190 return lastPoint.getX();
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 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
195 * Add a Point (YZ,Index) to the current cross section line.
6514
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6268
diff changeset
196 * @param y The y coordinate of new point in GK.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6268
diff changeset
197 * @param z The z coordinate of new point in GK.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6268
diff changeset
198 * @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
199 * @param idx Ignored, the parameter of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
200 * @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
201 * parsable y or z values.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
202 */
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
203 private boolean addPoint(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
204 double gkr,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
205 double gkh,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
206 double height,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
207 String idx
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
208 ) {
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
209 // 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
210 double d = distanceToLastPoint(gkr, gkh);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
211 double totalX = getLastPointX() + d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
212
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
213 // We ignore idx, and increment instead.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
214 int index;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
215 int lastPointIdx = getLastPointIdx();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
216 if (lastPointIdx <= 0) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
217 index = 1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
218 } else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
219 index = lastPointIdx + 1;
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 this.lastPointGK[0] = gkr;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
223 this.lastPointGK[1] = gkh;
6268
bbd44de9ec78 issue1267: Do not downscale height.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5992
diff changeset
224 currentLine.add(new XY(totalX, height, index));
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
225 return true;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
228 // As per documentation:
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
229 // BW;WPA;ST;UF;PN;LS;BL-LS;Y;X;Z;DL;LZK;SY;SX;SZ;BML;HS;BL-HS;
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
230 // H;DH;HZK;SH;WVA;BMH;BMP;DST;DB;LDS;LKZ;
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
231
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
232
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
233 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
234 * 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
235 * @param lineNum Number of line (starting with 1).
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
236 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
237 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
238 protected void handleLine(int lineNum, String line) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239 // First two lines are 'comment'-like.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
240 if (lineNum == 1 || lineNum == 2) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
241 return;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
242 }
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
243 // The 'shore' field shows which side of the river the shore
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
244 // is measured.
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
245 // 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
246 // because later distances are calculated which cannot be
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
247 // negative.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
248 String[] fields = line.split(";");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249 String station = fields[2];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
250 String shore = fields[3];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
251 // 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
252 // 1 = left, 2 = right. none = middle
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
253 String pointIndex = line.substring(16,21);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
254 // For GK, first seven digits are of interest.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
255 String gkRight = fields[7];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
256 String gkHigh = fields[8];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
257 String date = fields[10];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
258 String height = fields[18];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
259 String dateH = line.substring(54,60);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
260 String dateDec = line.substring(64,70);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
261
5922
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
262 double stationKm;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
263 double gkRightKm;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
264 double gkHighKm;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
265 double heightM;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
266
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
267 try {
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
268 stationKm = Double.parseDouble(station) / 1000d;
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
269 gkRightKm = Double.parseDouble(gkRight.replace(",","."));
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8812
diff changeset
270 gkHighKm = Double.parseDouble(gkHigh.replace(",","."));
5922
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
271 heightM = Double.parseDouble(height.replace(",","."));
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
272 }
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
273 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
274 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
275 return;
8ed9b1edace6 issue1267: W80CSVParser do not stumble about malformed lines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
276 }
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
277
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
278 // New (or first) line.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
279 if (anchor == null || !anchor.sameStation(stationKm)) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
280 anchor = new Anchor(gkRightKm, gkHighKm, heightM, stationKm);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
281 lastPointGK[0] = gkRightKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
282 lastPointGK[1] = gkHighKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
283 currentLine = new ArrayList<XY>();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
284 data.put(stationKm, currentLine);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
285 currentLine.add(new XY(0d, heightM, 0));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
286 try {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
287 anchorDate = DateGuesser.guessDate(date);
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 catch (IllegalArgumentException iae) {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
290 log.warn("W80CSV: Invalid date '" + date + "'.");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
291 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
292 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
293 else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
294 addPoint(gkRightKm, gkHighKm, heightM, pointIndex);
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
299 /** Called when file is fully consumed. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
300 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
301 protected void finish() {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8187
diff changeset
302 log.info("Parsed " + data.size() + " lines");
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
303 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
304
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
305 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
306 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org