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