Mercurial > dive4elements > river
annotate backend/src/main/java/org/dive4elements/river/importer/parsers/DA66Parser.java @ 9650:a2a42a6bac6b
Importer (s/u-info) extensions:
outer try/catch for parse and log of line no,
catching parsing exception if not enough value fields,
parsing error and warning log messages with line number,
detecting and rejecting duplicate data series,
better differentiation between error and warning log messages
author | mschaefer |
---|---|
date | Mon, 23 Mar 2020 14:57:03 +0100 |
parents | 5e38e2924c07 |
children | 0a5239a1e46e |
rev | line source |
---|---|
5844
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5992
4c3ccf2b0304
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5844
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5844
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5992
4c3ccf2b0304
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5844
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5844
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4dd33b86dc61
Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5829
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
9 package org.dive4elements.river.importer.parsers; |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
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; |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
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; |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
14 |
8187
3bb1c62ad732
Moved package org.dive4elements.river.utils to org.dive4elements.river.backend.utils.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
15 import org.dive4elements.river.backend.utils.EpsilonComparator; |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
16 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
17 import java.io.File; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
18 import java.io.IOException; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
19 |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
20 import java.util.ArrayList; |
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
21 import java.util.HashMap; |
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
22 import java.util.List; |
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
23 import java.util.Map; |
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
24 import java.util.TreeMap; |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
25 |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
26 import java.util.regex.Matcher; |
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
27 import java.util.regex.Pattern; |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
28 |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
29 import org.apache.log4j.Logger; |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
30 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
31 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
32 /** |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
33 * To create cross-sections, generate: Map<double,list<xy>> from files |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
34 * in da66 format. |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
35 */ |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
36 public class DA66Parser extends LineParser implements CrossSectionParser |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
37 { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
38 /** Private log. */ |
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
39 private static Logger log = Logger.getLogger(DA66Parser.class); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
40 |
8843 | 41 private static final String HEAD_HEAD = "00"; |
42 private static final String HEAD_GEOM = "66"; // "Values" | |
43 private static final String HEAD_ENDG = "88"; // Probably never used. | |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
44 |
4717
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
45 /** Regex to match lines of files in da66 format. */ |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
46 private static final Pattern LINE_PATTERN = |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
47 Pattern.compile("^([0-9 -]{2})" + // Type (00|66|88) |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
48 "([0-9 -]{5})" + // unset |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
49 "([0-9 -]{2})" + // id |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
50 "([0-9 -]{9})" + // station |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
51 "([0-9 -]{2})" + // running number |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
52 "([0-9 -]{1})?" + // point id |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
53 /* |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
54 Would be great if we could express the pattern as this: |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
55 ([0-9 -]{1})([0-9 -JKMLMNOPQR]{7})([0-9 -]{7})+ |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
56 */ |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
57 "([0-9 -JKMLMNOPQR]{7})?" + // y |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
58 "([0-9 -]{7})?" + // z |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
59 "([0-9 -]{1})?" + // point id |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
60 "([0-9 -JKMLMNOPQR]{7})?" + // y |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
61 "([0-9 -]{7})?" + // z |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
62 "([0-9 -]{1})?" + // point id |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
63 "([0-9 -JKMLMNOPQR]{7})?" + // y |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
64 "([0-9 -]{7})?" + // z |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
65 "([0-9 -]{1})?" + // point id |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
66 "([0-9 -JKMLMNOPQR]{7})?" + // y |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
67 "([0-9 -]{7})?" // z |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
68 ); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
69 |
4723
83304d3651ec
DA66Parser: Whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4722
diff
changeset
|
70 |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
71 /** Indices to match group of main regex. */ |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
72 private static enum FIELD { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
73 HEAD ( 1), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
74 UNSET ( 2), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
75 ID ( 3), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
76 STATION ( 4), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
77 RUNNR ( 5), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
78 POINT_1_ID( 6), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
79 POINT_1_Y ( 7), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
80 POINT_1_Z ( 8), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
81 POINT_2_ID( 9), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
82 POINT_2_Y (10), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
83 POINT_2_Z (11), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
84 POINT_3_ID(12), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
85 POINT_3_Y (13), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
86 POINT_3_Z (14), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
87 POINT_4_ID(15), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
88 POINT_4_Y (16), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
89 POINT_4_Z (17); |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
90 |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
91 private int idx; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
92 FIELD(int idx) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
93 this.idx = idx; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
94 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
95 int getIdx() { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
96 return idx; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
97 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
98 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
99 |
4723
83304d3651ec
DA66Parser: Whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4722
diff
changeset
|
100 |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
101 /** Header lines of da66 can define a type. */ |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
102 private static enum Type { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
103 DATE ( 0), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
104 HEKTOSTONE_LEFT ( 1), //grm. "Standlinie" |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
105 HEKTOSTONE_RIGHT ( 2), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
106 CHANNEL_LEFT ( 3), //grm. "Fahrrinne" |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
107 CHANNEL_RIGHT ( 4), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
108 CHANNEL_2_LEFT ( 5), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
109 CHANNEL_2_RIGHT ( 6), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
110 GIW_1972 ( 7), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
111 GROIN_DIST_LEFT ( 8), //grm. "Buhnenkopfabstand links" |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
112 GROIN_HEIGHT_LEFT ( 9), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
113 GROIN_SLOPE_LEFT (10), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
114 GROIN_DIST_RIGHT (11), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
115 GROIN_HEIGHT_RIGHT (12), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
116 GROIN_SLOPE_RIGHT (13), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
117 STRIKE_LEFT (14), //grm. "Streichlinie links" |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
118 AXIS (15), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
119 STRIKE_RIGHT (16), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
120 GROIN_BACK_SLOPE_LEFT (17), //grm. "Buhnenrueckenneigung" |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
121 GROIN_BACK_SLOPE_RIGHT (18), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
122 GIW_1932 (19), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
123 GIW_1982 (20), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
124 STAND_ISLAND_1 (21), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
125 STAND_ISLAND_2 (22), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
126 STAND_ISLAND_3 (23), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
127 STAND_ISLAND_4 (24), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
128 UNSPECIFIED_1 (25), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
129 UNSPECIFIED_2 (26), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
130 HHW (27), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
131 OLD_PROFILE_NULL (28), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
132 AW_1978 (29), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
133 SIGN_LEFT (30), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
134 SIGN_RIGHT (31), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
135 DIST_SIGNAL_CHANNEL_LEFT (32), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
136 DIST_SIGNAL_CHANNEL_RIGHT(33), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
137 UNSPECIFIED_3 (34), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
138 UNSPECIFIED_4 (35), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
139 UNSPECIFIED_5 (36), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
140 UNSPECIFIED_6 (37), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
141 SHORE_LEFT (38), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
142 SHORE_RIGHT (39), |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
143 UNSPECIFIED_7 (40); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
144 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
145 private final int id; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
146 Type(int id) { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
147 this.id = id; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
148 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
149 public int getId() { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
150 return id; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
151 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
152 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
153 |
4723
83304d3651ec
DA66Parser: Whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4722
diff
changeset
|
154 |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
155 /** Available types. */ |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
156 private static HashMap<Integer, Type> typeMap; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
157 |
4723
83304d3651ec
DA66Parser: Whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4722
diff
changeset
|
158 |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
159 /** Types we can deal with. */ |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
160 private static List<Type> implementedTypes; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
161 |
4723
83304d3651ec
DA66Parser: Whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4722
diff
changeset
|
162 |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
163 static { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
164 typeMap = new HashMap<Integer, Type>(); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
165 for (Type t: Type.values()) { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
166 typeMap.put(new Integer(t.getId()), t); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
167 } |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
168 // TODO populate and respect header type. |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
169 implementedTypes = new ArrayList<Type>(); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
170 //implementedTypes.add(..); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
171 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
172 |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
173 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
174 /** The current line to which add points. */ |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
175 private List<XY> currentLine; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
176 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
177 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
178 /** Data collected so far, last element will be currentLine. */ |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
179 protected Map<Double, List<XY>> data; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
180 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
181 |
4717
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
182 /** Trivial constructor. */ |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
183 public DA66Parser() { |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
184 data = new TreeMap<Double, List<XY>>(EpsilonComparator.CMP); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
185 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
186 |
4717
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
187 |
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
188 /** Get the description of the cross section parsed. */ |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
189 @Override |
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
190 public String getDescription() { |
4729
0df1cac6c4b5
Removed removeExtension implementations, which have been moved to FileTools,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4727
diff
changeset
|
191 return FileTools.removeExtension(getFileName()); |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
192 } |
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
193 |
4717
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
194 |
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
195 /** Get the year of this cross sections measurement. */ |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
196 @Override |
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
197 public Integer getYear() { |
4726
4f7d264c27f5
DA66Parser: Do not return a 'year' for measurement, as none is given.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4723
diff
changeset
|
198 return null; |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
199 } |
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
200 |
4717
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
201 |
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
202 /** |
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
203 * Return the data parsed. |
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
204 * @return map of stations (km) to list of points. |
e67d396ed65d
Documentation of DA66Parser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4715
diff
changeset
|
205 */ |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
206 @Override |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
207 public Map<Double, List<XY>> getData() { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
208 return data; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
209 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
210 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
211 |
4791
fc571444da50
DA66Parser: Added doc, removed TODO, whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4746
diff
changeset
|
212 /** |
fc571444da50
DA66Parser: Added doc, removed TODO, whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4746
diff
changeset
|
213 * Walk a directory tree, parse its *.da66 files and store the |
fc571444da50
DA66Parser: Added doc, removed TODO, whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4746
diff
changeset
|
214 * data found. |
fc571444da50
DA66Parser: Added doc, removed TODO, whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4746
diff
changeset
|
215 */ |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
216 public void parseDA66s(File root, final Callback callback) { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
217 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
218 FileTools.walkTree(root, new FileTools.FileVisitor() { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
219 @Override |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
220 public boolean visit(File file) { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
221 if (file.isFile() && file.canRead() |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
222 && file.getName().toLowerCase().endsWith(".d66") |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
223 && (callback == null || callback.accept(file))) { |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
224 reset(); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
225 try { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
226 parse(file); |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
227 log.info("parsing done"); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
228 if (callback != null) { |
4715
2f7a509f5acf
Implement new CrossSectionParser interface.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4712
diff
changeset
|
229 callback.parsed(DA66Parser.this); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
230 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
231 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
232 catch (IOException ioe) { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
233 log.error("IOException while parsing file"); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
234 return false; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
235 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
236 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
237 return true; |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
238 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
239 }); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
240 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
241 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
242 |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
243 /** |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
244 * Get the Index of the last cross-section lines point. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
245 * @return last points index, -1 if not available. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
246 */ |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
247 private int lastPointIdx() { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
248 if (currentLine == null || currentLine.isEmpty()) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
249 return -1; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
250 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
251 XY lastPoint = this.currentLine.get(currentLine.size()-1); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
252 return lastPoint.getIndex(); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
253 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
254 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
255 |
4720
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
256 /** Returns station, deciding if it could in cm, in which case convert. */ |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
257 private double stationInKm(double station) { |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
258 if (station > 10000) { |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
259 return station/100000d; |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
260 } |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
261 else { |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
262 return station; |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
263 } |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
264 } |
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
265 |
4791
fc571444da50
DA66Parser: Added doc, removed TODO, whitespace cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4746
diff
changeset
|
266 |
4746
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
267 /** Apply the convention how to deal with numbers < -99.999 .*/ |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
268 private String applyLetterConvention(String orig) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
269 if (orig.endsWith("-")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
270 return "-" + orig.replace("-",""); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
271 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
272 else if (orig.endsWith("J")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
273 return "-" + orig.replace("J","1"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
274 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
275 else if (orig.endsWith("K")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
276 return "-" + orig.replace("K","2"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
277 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
278 else if (orig.endsWith("L")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
279 return "-" + orig.replace("L","3"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
280 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
281 else if (orig.endsWith("M")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
282 return "-" + orig.replace("M","4"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
283 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
284 else if (orig.endsWith("N")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
285 return "-" + orig.replace("N","5"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
286 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
287 else if (orig.endsWith("O")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
288 return "-" + orig.replace("O","6"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
289 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
290 else if (orig.endsWith("P")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
291 return "-" + orig.replace("P","7"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
292 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
293 else if (orig.endsWith("Q")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
294 return "-" + orig.replace("Q","8"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
295 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
296 else if (orig.endsWith("R")) { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
297 return "-" + orig.replace("R","9"); |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
298 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
299 else { |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
300 return orig; |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
301 } |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
302 } |
4720
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
303 |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
304 /** |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
305 * Add a Point (YZ,Index) to the current cross section line. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
306 * @param y The y coordinate of new point. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
307 * @param z The z coordinate of new point. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
308 * @param idx Ignored, the parameter of new point. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
309 * @return true if point could been added, false otherwise (e.g. not |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
310 * parsable y or z values. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
311 */ |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
312 private boolean addPoint(String y, String z, String idx) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
313 if (z == null || y == null || idx == null) { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
314 log.error("Incomplete point definition"); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
315 return false; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
316 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
317 |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
318 double iy; |
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
319 double iz; |
4746
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
320 // Handle letter convention. |
0b60b77d4d00
DA66Parser: Handle coding convention that was introduced to overcome fixed
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4745
diff
changeset
|
321 y = applyLetterConvention(y); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
322 try { |
4727
c6d70560285f
DA66Parser: Scale x and y, as they are given in mm. Now we can actually look at the data!
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4726
diff
changeset
|
323 iy = Double.parseDouble(y) / 1000d; |
c6d70560285f
DA66Parser: Scale x and y, as they are given in mm. Now we can actually look at the data!
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4726
diff
changeset
|
324 iz = Double.parseDouble(z) / 1000d; |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
325 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
326 catch(java.lang.NumberFormatException nfe) { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
327 log.error("Could not parse Number: " + nfe.getMessage()); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
328 return false; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
329 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
330 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
331 // We ignore idx, and increment instead. |
4735
94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4729
diff
changeset
|
332 int index; |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
333 int lastPointIdx = lastPointIdx(); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
334 if (lastPointIdx <= 0) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
335 index = 1; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
336 } else { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
337 index = lastPointIdx + 1; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
338 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
339 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
340 currentLine.add(new XY(iy, iz, index)); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
341 return true; |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
342 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
343 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
344 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
345 /** Called before consuming first line of file. */ |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
346 public void reset() { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
347 data.clear(); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
348 currentLine = new ArrayList<XY>(); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
349 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
350 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
351 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
352 /** |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
353 * Called for each line. Try to extract info from a da66 line. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
354 */ |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
355 @Override |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
356 protected void handleLine(int lineNum, String line) { |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
357 String head = line.substring(0,2); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
358 if (HEAD_HEAD.equals(head)) { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
359 //log.debug("New station"); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
360 Matcher m = LINE_PATTERN.matcher(line); |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
361 if (m.find()) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
362 // Actually matches! |
4792
8b609ea08128
DA66Parser: Added TODOs about riveraxis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4791
diff
changeset
|
363 // TODO 'move' last line to match river axis |
8b609ea08128
DA66Parser: Added TODOs about riveraxis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4791
diff
changeset
|
364 // TODO find river axis intersection |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
365 currentLine = new ArrayList<XY>(); |
8856 | 366 double station = stationInKm( |
367 Double.parseDouble(m.group(FIELD.STATION.getIdx()))); | |
4720
9f7cd65daac2
DA66Parser: Try to guess whether station is given in km or in cm.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4719
diff
changeset
|
368 data.put(station, currentLine); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
369 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
370 else { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
371 log.error("HEAD line bad."); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
372 } |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
373 } |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
374 else if (HEAD_GEOM.equals(head)) { |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
375 Matcher m = LINE_PATTERN.matcher(line); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
376 if (m.find()) { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
377 //log.info("Station: " + m.group(FIELD.STATION.getIdx())); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
378 // TODO if last station differs, error and abort |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
379 if (m.group(FIELD.POINT_1_ID.getIdx()) != null) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
380 // Point 1 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
381 if(addPoint( |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
382 m.group(FIELD.POINT_1_Y.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
383 m.group(FIELD.POINT_1_Z.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
384 m.group(FIELD.POINT_1_ID.getIdx()))) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
385 // Point added. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
386 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
387 else { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
388 // Problematic point. |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
389 log.error("A point could not be added"); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
390 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
391 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
392 if (m.group(FIELD.POINT_2_ID.getIdx()) != null) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
393 // Point 2 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
394 if(addPoint( |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
395 m.group(FIELD.POINT_2_Y.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
396 m.group(FIELD.POINT_2_Z.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
397 m.group(FIELD.POINT_2_ID.getIdx()))) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
398 // Point added. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
399 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
400 else { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
401 // Problematic point. |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
402 log.error("A point could not be added"); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
403 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
404 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
405 if (m.group(FIELD.POINT_3_ID.getIdx()) != null) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
406 // Point 3 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
407 if(addPoint( |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
408 m.group(FIELD.POINT_3_Y.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
409 m.group(FIELD.POINT_3_Z.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
410 m.group(FIELD.POINT_3_ID.getIdx()))) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
411 // Point added. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
412 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
413 else { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
414 // Problematic point. |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
415 log.error("A point could not be added"); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
416 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
417 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
418 if (m.group(FIELD.POINT_4_ID.getIdx()) != null) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
419 // Point 4 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
420 if(addPoint( |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
421 m.group(FIELD.POINT_4_Y.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
422 m.group(FIELD.POINT_4_Z.getIdx()), |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
423 m.group(FIELD.POINT_4_ID.getIdx()))) { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
424 // Point added. |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
425 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
426 else { |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
427 // Problematic point. |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
428 log.error("A point could not be added"); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
429 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
430 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
431 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
432 else { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
433 log.warn("Line could not be parsed: "); |
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
434 log.warn(line); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
435 } |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
436 } |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
437 else if (HEAD_GEOM.equals(head)) { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
438 log.debug("Hit a 88"); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
439 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
440 else { |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
441 log.error("Do not know how to treat da66 line:"); |
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
442 log.error(line); |
4712
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
443 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
444 } |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
445 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
446 |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
447 /** Called when file is fully consumed. */ |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
448 @Override |
70842db72ee4
Include improved DA66Parser into importer.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4681
diff
changeset
|
449 protected void finish() { |
4792
8b609ea08128
DA66Parser: Added TODOs about riveraxis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4791
diff
changeset
|
450 // TODO 'move' last line to match river axis |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
451 log.info("Parsed " + data.size() + " lines"); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
452 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
453 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
454 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
455 /** Parses files given as arguments. */ |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
456 public static void main(String [] args) { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
457 |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
458 DA66Parser parser = new DA66Parser(); |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
459 |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
460 log.warn("Start parsing files."); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
461 for (String arg: args) { |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
462 parser.parseDA66s(new File(arg), null); |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
463 log.warn("Parsing a file."); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
464 } |
8200
9d2e69f971f5
sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8187
diff
changeset
|
465 log.error("Finished parsing files."); |
4681
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
466 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
467 } |
aa718770308e
Less than sceleton for DA66-CrossSection parser added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
468 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |