annotate flys-backend/src/main/java/de/intevation/flys/importer/parsers/W80CSVParser.java @ 5808:c69ce591e3ea

Initial version of W80CSVParser (stripped W80Parser).
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 24 Apr 2013 12:03:54 +0200
parents
children
rev   line source
5808
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.importer.parsers;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 import de.intevation.artifacts.common.utils.FileTools;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
4
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
5 import de.intevation.flys.importer.XY;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
6
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
7 import de.intevation.flys.importer.parsers.tim.Coordinate;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
9 import de.intevation.flys.utils.DateGuesser;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10 import de.intevation.flys.utils.EpsilonComparator;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12 import java.io.File;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13 import java.io.IOException;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import java.util.ArrayList;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16 import java.util.Calendar;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 import java.util.Date;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18 import java.util.List;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 import java.util.Map;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 import java.util.TreeMap;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 import org.apache.log4j.Logger;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 * 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
27 * in w80/csv format.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29 public class W80CSVParser extends LineParser implements CrossSectionParser
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30 {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 /** Private logger. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 private static Logger logger = Logger.getLogger(W80CSVParser.class);
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 /** The current line to which add points. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 private List<XY> currentLine;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 /** 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
40 protected Map<Double, List<XY>> data;
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 /** Anchor to project to. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 private static class Anchor extends Coordinate {
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 private static final double EPSILON = 1e-5;
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 private double station;
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 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
51 super(x, y, z);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 this.station = station;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55 public boolean sameStation(double station) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 return Math.abs(this.station - station) < EPSILON;
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 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 /** Reference point for simple projection. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62 private Anchor anchor;
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
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 * Reference point for distance calculations, introduced to
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 * deal with bends in the lines.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68 * 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
69 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70 private double[] lastPointGK;
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 /** 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
74 private Date anchorDate;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77 private double distanceToLastPoint(double gkr, double gkh) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 double dx = gkr - lastPointGK[0];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79 double dy = gkh - lastPointGK[1];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80 double d = dx*dx + dy*dy;
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 return Math.sqrt(d);
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 /** Trivial constructor. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 public W80CSVParser() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 data = new TreeMap<Double, List<XY>>(EpsilonComparator.CMP);
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
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 * Get the description of the cross section parsed -
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
94 * directory name of current file.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 public String getDescription() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98 return getInputFile().getParentFile().getName();
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 year of this cross sections measurement. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 public Integer getYear() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 if (anchorDate == null) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 return null;
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 Calendar dateCalendar = Calendar.getInstance();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109 dateCalendar.setTime(anchorDate);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110 return dateCalendar.get(Calendar.YEAR);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 * Return the data parsed.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 * @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
117 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
118 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
119 public Map<Double, List<XY>> getData() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
120 return data;
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 /** 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
125 * 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
126 public void parseW80CSVs(File root, final Callback callback) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
127
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
128 FileTools.walkTree(root, new FileTools.FileVisitor() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
129 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
130 public boolean visit(File file) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
131 if (file.isFile() && file.canRead()
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
132 && file.getName().toLowerCase().endsWith(".csv")
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
133 && (callback == null || callback.accept(file))) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
134 reset();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
135 try {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
136 parse(file);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
137 logger.info("parsing done");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
138 if (callback != null) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
139 callback.parsed(W80CSVParser.this);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 catch (IOException ioe) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
143 logger.error("IOException while parsing file");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
144 return false;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
145 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
146 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
147 return true;
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 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
152
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153 /** Called before consuming first line of file. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
154 public void reset() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
155 data.clear();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
156 currentLine = new ArrayList<XY>();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
157 anchor = null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
158 anchorDate = null;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
159 lastPointGK = new double[] {0d,0d};
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
163 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
164 * 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
165 * @return last points index, -1 if not available.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
166 */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
167 private int getLastPointIdx() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
168 if (currentLine == null || currentLine.isEmpty()) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
169 return -1;
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 XY lastPoint = this.currentLine.get(currentLine.size()-1);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
172 return lastPoint.getIndex();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
173 }
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
176 private double getLastPointX() {
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 0d;
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.getX();
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 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
186 * 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
187 * @param y The y coordinate of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
188 * @param z The z coordinate of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
189 * @param idx Ignored, the parameter of new point.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
190 * @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
191 * parsable y or z values.
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 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
194 // 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
195 double d = distanceToLastPoint(gkr, gkh);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
196 double totalX = getLastPointX() + d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
197
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
198 // We ignore idx, and increment instead.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
199 int index;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
200 int lastPointIdx = getLastPointIdx();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
201 if (lastPointIdx <= 0) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
202 index = 1;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
203 } else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
204 index = lastPointIdx + 1;
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
207 this.lastPointGK[0] = gkr;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
208 this.lastPointGK[1] = gkh;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
209 currentLine.add(new XY(totalX, height/1000d, index));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
210 return true;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
211 }
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 // As per documentation:
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
214 // 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
215
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
216
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
217 /**
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
218 * 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
219 * @param lineNum Number of line (starting with 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 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
222 protected void handleLine(int lineNum, String line) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
223 // First two lines are 'comment'-like.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
224 if (lineNum == 1 || lineNum == 2) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
225 return;
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 // 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
228 // 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
229 // because later distances are calculated which cannot be
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
230 // negative.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
231 String[] fields = line.split(";");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
232 String station = fields[2];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
233 String shore = fields[3];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
234 // 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
235 // 1 = left, 2 = right. none = middle
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
236 String pointIndex = line.substring(16,21);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
237 // For GK, first seven digits are of interest.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
238 String gkRight = fields[7];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239 String gkHigh = fields[8];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
240 String date = fields[10];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
241 String height = fields[18];
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
242 String dateH = line.substring(54,60);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
243 String dateDec = line.substring(64,70);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
244
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
245 double stationKm = Double.parseDouble(station) / 1000d;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
246 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
247 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
248 double heightM = Double.parseDouble(height.replace(",","."));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
250 // New (or first) line.
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
251 if (anchor == null || !anchor.sameStation(stationKm)) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
252 anchor = new Anchor(gkRightKm, gkHighKm, heightM, stationKm);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
253 lastPointGK[0] = gkRightKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
254 lastPointGK[1] = gkHighKm;
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
255 currentLine = new ArrayList<XY>();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
256 data.put(stationKm, currentLine);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
257 currentLine.add(new XY(0d, heightM, 0));
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
258 try {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
259 anchorDate = DateGuesser.guessDate(date);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
260 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
261 catch (IllegalArgumentException iae) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
262 logger.warn("W80CSV: Invalid date '" + date + "'.");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
263 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
264 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
265 else {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
266 addPoint(gkRightKm, gkHighKm, heightM, pointIndex);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
267 }
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
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
270
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
271 /** Called when file is fully consumed. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
272 @Override
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
273 protected void finish() {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
274 logger.info("Parsed " + data.size() + " lines");
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 /** Parses files given as arguments. */
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
279 public static void main(String [] args) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
280
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
281 W80CSVParser parser = new W80CSVParser();
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
282
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
283 logger.warn("Start parsing files.");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
284 for (String arg: args) {
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
285 logger.warn("Parsing a file.");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
286 parser.parseW80CSVs(new File(arg), null);
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
287 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
288 logger.error("Finished parsing files.");
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
289 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
290 }
c69ce591e3ea Initial version of W80CSVParser (stripped W80Parser).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
291 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org