annotate backend/src/main/java/org/dive4elements/river/importer/parsers/W80CSVParser.java @ 5844:4dd33b86dc61

Added header to river backend.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 26 Apr 2013 08:25:41 +0200
parents 5aa05a7a34b7
children 8ed9b1edace6
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 *
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
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
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
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
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
17 import org.dive4elements.river.utils.DateGuesser;
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
18 import org.dive4elements.river.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 {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 /** Private logger. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 private static Logger logger = Logger.getLogger(W80CSVParser.class);
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);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
145 logger.info("parsing done");
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) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151 logger.error("IOException while parsing file");
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.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
195 * @param y The y coordinate of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
196 * @param z The z coordinate of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
197 * @param idx Ignored, the parameter of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
198 * @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
199 * parsable y or z values.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
200 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
201 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
202 // 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
203 double d = distanceToLastPoint(gkr, gkh);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
204 double totalX = getLastPointX() + d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
205
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
206 // We ignore idx, and increment instead.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
207 int index;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
208 int lastPointIdx = getLastPointIdx();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
209 if (lastPointIdx <= 0) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
210 index = 1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
211 } else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
212 index = lastPointIdx + 1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
213 }
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 this.lastPointGK[0] = gkr;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
216 this.lastPointGK[1] = gkh;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
217 currentLine.add(new XY(totalX, height/1000d, index));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
218 return true;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
219 }
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 // As per documentation:
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
222 // 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
223
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 * 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
227 * @param lineNum Number of line (starting with 1).
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
228 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
229 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
230 protected void handleLine(int lineNum, String line) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
231 // First two lines are 'comment'-like.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
232 if (lineNum == 1 || lineNum == 2) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
233 return;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
234 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
235 // 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
236 // 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
237 // because later distances are calculated which cannot be
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
238 // negative.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239 String[] fields = line.split(";");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
240 String station = fields[2];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
241 String shore = fields[3];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
242 // 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
243 // 1 = left, 2 = right. none = middle
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
244 String pointIndex = line.substring(16,21);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
245 // For GK, first seven digits are of interest.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
246 String gkRight = fields[7];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
247 String gkHigh = fields[8];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
248 String date = fields[10];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249 String height = fields[18];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
250 String dateH = line.substring(54,60);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
251 String dateDec = line.substring(64,70);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
252
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
253 double stationKm = Double.parseDouble(station) / 1000d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
254 double gkRightKm = Double.parseDouble(gkRight.replace(",","."));//.substring(0,7));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
255 double gkHighKm = Double.parseDouble(gkHigh.replace(",","."));//.substring(0,7));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
256 double heightM = Double.parseDouble(height.replace(",","."));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
257
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
258 // New (or first) line.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
259 if (anchor == null || !anchor.sameStation(stationKm)) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
260 anchor = new Anchor(gkRightKm, gkHighKm, heightM, stationKm);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
261 lastPointGK[0] = gkRightKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
262 lastPointGK[1] = gkHighKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
263 currentLine = new ArrayList<XY>();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
264 data.put(stationKm, currentLine);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
265 currentLine.add(new XY(0d, heightM, 0));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
266 try {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
267 anchorDate = DateGuesser.guessDate(date);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
268 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
269 catch (IllegalArgumentException iae) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
270 logger.warn("W80CSV: Invalid date '" + date + "'.");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
271 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
272 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
273 else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
274 addPoint(gkRightKm, gkHighKm, heightM, pointIndex);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
275 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
276 }
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
279 /** Called when file is fully consumed. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
280 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
281 protected void finish() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
282 logger.info("Parsed " + data.size() + " lines");
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
286 /** Parses files given as arguments. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
287 public static void main(String [] args) {
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 W80CSVParser parser = new W80CSVParser();
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 logger.warn("Start parsing files.");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
292 for (String arg: args) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
293 logger.warn("Parsing a file.");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
294 parser.parseW80CSVs(new File(arg), null);
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 logger.error("Finished parsing files.");
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 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org