Mercurial > dive4elements > river
annotate backend/src/main/java/org/dive4elements/river/importer/parsers/HYKParser.java @ 7002:0850a4983fcd double-precision
Issue1333: expand single-line i.e. 0-lenght Q-range to minimal length.
author | Tom Gottfried <tom.gottfried@intevation.de> |
---|---|
date | Thu, 12 Sep 2013 18:43:21 +0200 |
parents | 4c3ccf2b0304 |
children | 139b057a39dd |
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; |
1234
c5c48f52dc7b
Removed FileTools that has been moved to artifacts-common module.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1225
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; |
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
12 |
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
13 import org.dive4elements.river.importer.ImportHYK; |
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
14 import org.dive4elements.river.importer.ImportHYKEntry; |
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
15 import org.dive4elements.river.importer.ImportHYKFormation; |
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
16 import org.dive4elements.river.importer.ImportHYKFlowZone; |
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
17 import org.dive4elements.river.importer.ImportHYKFlowZoneType; |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 import java.io.File; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 import java.io.IOException; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 import java.io.FileInputStream; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 import java.io.InputStreamReader; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 import java.io.LineNumberReader; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 import java.util.HashMap; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 import java.util.Map; |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
27 import java.util.Date; |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
28 import java.util.Calendar; |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 import java.math.BigDecimal; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 import org.apache.log4j.Logger; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 public class HYKParser |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 private static Logger log = Logger.getLogger(HYKParser.class); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
38 public interface Callback { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
39 boolean hykAccept(File file); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
40 void hykParsed(HYKParser parser); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
41 } // interface Callback |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
42 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 public static enum State { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 LINE_1, LINE_2, LINE_3, LINE_4, LINE_5, LINE_6 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 }; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 private static final String ENCODING = "ISO-8859-1"; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 protected Map<String, ImportHYKFlowZoneType> flowZoneTypes; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
51 protected ImportHYK hyk; |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
52 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 public HYKParser() { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
54 flowZoneTypes = new HashMap<String, ImportHYKFlowZoneType>(); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
57 public ImportHYK getHYK() { |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
58 return hyk; |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
59 } |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
60 |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
61 private static Date yearToDate(Integer year) { |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
62 if (year == null) { |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
63 return null; |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
64 } |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
65 Calendar cal = Calendar.getInstance(); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
66 cal.set(year, 0, 1, 12, 0, 0); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
67 long ms = cal.getTimeInMillis(); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
68 cal.setTimeInMillis(ms - ms%1000); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
69 return cal.getTime(); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
70 } |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
71 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 public boolean parse(File file) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
73 |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
74 boolean debug = log.isDebugEnabled(); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
75 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
76 log.info("Parsing HYK file '" + file + "'"); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
77 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 LineNumberReader in = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
79 |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
80 String description = |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
81 file.getParentFile().getName() + "/" + file.getName(); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
82 |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
83 hyk = new ImportHYK(null, description); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
84 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
85 try { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
86 in = |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 new LineNumberReader( |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
88 new InputStreamReader( |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 new FileInputStream(file), ENCODING)); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 String line; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
92 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
93 State state = State.LINE_1; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 int numFormations = 0; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
97 BigDecimal km = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
98 BigDecimal top = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 BigDecimal bottom = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 BigDecimal distanceVL = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 BigDecimal distanceHF = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 BigDecimal distanceVR = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 Integer year = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 int numZones = 0; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
106 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
107 ImportHYKFlowZoneType [] fzts = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
108 BigDecimal [] coords = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 int coordPos = 0; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
111 ImportHYKEntry entry = null; |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
112 ImportHYKFormation formation = null; |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
113 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 while ((line = in.readLine()) != null) { |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
115 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
116 if (line.startsWith("*") || line.startsWith("----")) { |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 continue; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
118 } |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
119 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
120 line = line.trim(); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
121 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
122 if (state != State.LINE_5 && line.length() == 0) { |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
123 continue; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
124 } |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
125 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
126 String [] parts = line.split("\\s+"); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
128 if (debug) { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
129 log.debug("'" + line + "': " + state); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
130 } |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
131 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 switch (state) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 case LINE_1: |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 if (parts.length < 2) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
135 log.error("HYK 1: not enough elements in line " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
136 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
137 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
138 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 if (parts.length == 2) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
141 // no year given |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
142 year = null; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 else { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 try { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 year = Integer.valueOf(parts[1]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 catch (NumberFormatException nfe) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
149 log.error( |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
150 "year is not an integer in line " + |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
151 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
152 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
153 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 try { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 km = new BigDecimal(parts[0]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
157 numFormations = Integer.parseInt( |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
158 parts[parts.length > 2 ? 2 : 1]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
159 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
160 catch (NumberFormatException nfe) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
161 log.error( |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
162 "parsing number of formations " + |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
163 "or km failed in line " + in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
164 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
165 } |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
166 entry = new ImportHYKEntry(hyk, km, yearToDate(year)); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
167 hyk.addEntry(entry); |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
168 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
169 state = State.LINE_2; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
170 break; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
171 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
172 case LINE_2: |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
173 if (parts.length < 3) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
174 log.error("HYK 2: not enough elements in line " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
175 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
176 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
177 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
178 try { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
179 numZones = Integer.parseInt(parts[0]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
180 bottom = new BigDecimal(parts[1]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
181 top = new BigDecimal(parts[2]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
182 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
183 catch (NumberFormatException nfe) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
184 log.error( |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
185 "HYK: parsing num zones, bottom or top height " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
186 "failed in line " + in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
187 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
188 } |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
189 formation = new ImportHYKFormation(); |
1224
ca7d461a53f1
HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1219
diff
changeset
|
190 formation.setBottom(bottom); |
ca7d461a53f1
HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1219
diff
changeset
|
191 formation.setTop(top); |
ca7d461a53f1
HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1219
diff
changeset
|
192 entry.addFormation(formation); |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
193 |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
194 state = State.LINE_3; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
195 break; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
196 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
197 case LINE_3: |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
198 if (parts.length != numZones) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
199 log.error( |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
200 "HYK: number of flow zones mismatches " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
201 "in line " + in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
202 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
203 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
204 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
205 fzts = new ImportHYKFlowZoneType[parts.length]; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
206 for (int i = 0; i < fzts.length; ++i) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
207 fzts[i] = getFlowZoneType(parts[i]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
208 } |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
209 coords = new BigDecimal[numZones]; |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
210 state = State.LINE_4; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
211 break; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
212 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
213 case LINE_4: |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
214 try { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
215 int N = Math.min(parts.length, coords.length); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
216 for (coordPos = 0; coordPos < N; ++coordPos) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
217 coords[coordPos] = |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
218 new BigDecimal(parts[coordPos]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
219 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
220 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
221 catch (NumberFormatException nfe) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
222 log.error("HYK: cannot parse number in line " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
223 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
224 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
225 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
226 state = State.LINE_5; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
227 break; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
228 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
229 case LINE_5: |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
230 if (parts.length + coordPos < coords.length) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
231 log.error("HYK 5: not enough elements in line " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
232 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
233 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
234 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
235 try { |
3334
2ae732e2c65c
FLYS backend: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1234
diff
changeset
|
236 for (int i = 0; |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
237 i < parts.length && coordPos < coords.length; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
238 ++i, ++coordPos |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
239 ) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
240 coords[coordPos] = new BigDecimal(parts[i]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
241 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
242 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
243 catch (NumberFormatException nfe) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
244 log.error("HYK: cannot parse number in line " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
245 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
246 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
247 } |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
248 for (int i = 0; i < coords.length; ++i) { |
1225
d859c4bc6ace
HYK Importer: Check if zone coordinates in HYKs are swapped and warn the user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1224
diff
changeset
|
249 BigDecimal a = coords[i]; |
d859c4bc6ace
HYK Importer: Check if zone coordinates in HYKs are swapped and warn the user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1224
diff
changeset
|
250 BigDecimal b = coords[i == coords.length-1 ? i : i+1]; |
d859c4bc6ace
HYK Importer: Check if zone coordinates in HYKs are swapped and warn the user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1224
diff
changeset
|
251 if (a.compareTo(b) > 0) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
252 log.warn("HYK: zone coordinates swapped in line " + |
1225
d859c4bc6ace
HYK Importer: Check if zone coordinates in HYKs are swapped and warn the user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1224
diff
changeset
|
253 in.getLineNumber()); |
d859c4bc6ace
HYK Importer: Check if zone coordinates in HYKs are swapped and warn the user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1224
diff
changeset
|
254 BigDecimal c = a; a = b; b = c; |
d859c4bc6ace
HYK Importer: Check if zone coordinates in HYKs are swapped and warn the user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1224
diff
changeset
|
255 } |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
256 ImportHYKFlowZone zone = new ImportHYKFlowZone( |
1225
d859c4bc6ace
HYK Importer: Check if zone coordinates in HYKs are swapped and warn the user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1224
diff
changeset
|
257 formation, fzts[i], a, b); |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
258 formation.addFlowZone(zone); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
259 } |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
260 state = State.LINE_6; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
261 break; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
262 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
263 case LINE_6: |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
264 if (parts.length < 3) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
265 log.error("HYK 6: not enough elements in line " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
266 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
267 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
268 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
269 try { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
270 distanceVL = new BigDecimal(parts[0]); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
271 distanceHF = new BigDecimal(parts[1]); |
1224
ca7d461a53f1
HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1219
diff
changeset
|
272 distanceVR = new BigDecimal(parts[2]); |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
273 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
274 catch (NumberFormatException nfe) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
275 log.error("HYK: cannot parse number in line " + |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
276 in.getLineNumber()); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
277 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
278 } |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
279 formation.setDistanceVL(distanceVL); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
280 formation.setDistanceHF(distanceHF); |
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
281 formation.setDistanceVR(distanceVR); |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
282 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
283 // continue with next formation. |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
284 state = --numFormations > 0 // formations left? |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
285 ? State.LINE_2 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
286 : State.LINE_1; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
287 break; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
288 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
289 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
290 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
291 catch (IOException ioe) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
292 log.error("HYK: Error reading file.", ioe); |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
293 return false; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
294 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
295 finally { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
296 if (in != null) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
297 try { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
298 in.close(); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
299 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
300 catch (IOException ioe) { |
3659
36edf9a71cbd
backend: Mention backend errors in importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3334
diff
changeset
|
301 log.error("HYK: Error closing file.", ioe); |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
302 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
303 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
304 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
305 return true; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
306 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
307 |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
308 protected ImportHYKFlowZoneType getFlowZoneType(String name) { |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
309 name = name.toUpperCase(); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
310 ImportHYKFlowZoneType fzt = flowZoneTypes.get(name); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
311 if (fzt == null) { |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
312 log.info("New flow zone type: " + name); |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
313 fzt = new ImportHYKFlowZoneType(name); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
314 flowZoneTypes.put(name, fzt); |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
315 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
316 return fzt; |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
317 } |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
318 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
319 protected void reset() { |
1219
d80997bd94ce
HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1216
diff
changeset
|
320 hyk = null; |
1216
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
321 } |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
322 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
323 public void parseHYKs(File root, final Callback callback) { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
324 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
325 FileTools.walkTree(root, new FileTools.FileVisitor() { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
326 @Override |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
327 public boolean visit(File file) { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
328 if (file.isFile() && file.canRead() |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
329 && file.getName().toLowerCase().endsWith(".hyk") |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
330 && (callback == null || callback.hykAccept(file))) { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
331 reset(); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
332 boolean success = parse(file); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
333 log.info("parsing " + (success ? "succeeded" : "failed")); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
334 if (success && callback != null) { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
335 callback.hykParsed(HYKParser.this); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
336 } |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
337 } |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
338 return true; |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
339 } |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
340 }); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
341 } |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
342 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
343 public static void main(String [] args) { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
344 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
345 HYKParser parser = new HYKParser(); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
346 |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
347 for (String arg: args) { |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
348 parser.parseHYKs(new File(arg), null); |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
349 } |
f8b5c37f15e4
Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1215
diff
changeset
|
350 } |
1215
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
351 } |
8aef353e54fb
Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
352 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |