annotate flys-backend/src/main/java/de/intevation/flys/importer/parsers/HYKParser.java @ 1224:ca7d461a53f1

HYK importer: Various small fixes and some extra logging. flys-backend/trunk@2355 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 18 Jul 2011 16:43:27 +0000
parents d80997bd94ce
children d859c4bc6ace
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
1219
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
3 import de.intevation.flys.importer.ImportHYK;
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
4 import de.intevation.flys.importer.ImportHYKEntry;
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
5 import de.intevation.flys.importer.ImportHYKFormation;
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
6 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
7 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
8
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 import java.io.File;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 import java.io.IOException;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import java.io.FileInputStream;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 import java.io.InputStreamReader;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.io.LineNumberReader;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import java.util.HashMap;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import java.util.Map;
1219
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
17 import java.util.Date;
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
18 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
19
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 import java.math.BigDecimal;
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 org.apache.log4j.Logger;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
24 import de.intevation.flys.utils.FileTools;
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
25
1215
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) {
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
127 log.error("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) {
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
166 log.error("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(
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
177 "parsing num zones, bottom or top height " +
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(
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
192 "number of flow zones mismatches " +
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) {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
214 log.error("cannot parse number in line " +
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) {
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
223 log.error("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 {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
228 for (int i = 0;
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) {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
236 log.error("cannot parse number in line " +
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) {
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
241 ImportHYKFlowZone zone = new ImportHYKFlowZone(
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
242 formation,
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
243 fzts[i],
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
244 coords[i],
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
245 coords[i == coords.length-1 ? i : i+1]);
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
246 formation.addFlowZone(zone);
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
247 }
1215
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
248 state = State.LINE_6;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
249 break;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
250
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
251 case LINE_6:
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
252 if (parts.length < 3) {
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
253 log.error("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
254 in.getLineNumber());
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
255 return false;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
256 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
257 try {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
258 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
259 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
260 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
261 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
262 catch (NumberFormatException nfe) {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
263 log.error("cannot parse number in line " +
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
264 in.getLineNumber());
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
265 return false;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
266 }
1219
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
267 formation.setDistanceVL(distanceVL);
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
268 formation.setDistanceHF(distanceHF);
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
269 formation.setDistanceVR(distanceVR);
1215
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
270
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
271 // continue with next formation.
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
272 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
273 ? State.LINE_2
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
274 : State.LINE_1;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
275 break;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
276 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
277 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
278 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
279 catch (IOException ioe) {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
280 log.error(ioe);
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
281 return false;
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 finally {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
284 if (in != null) {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
285 try {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
286 in.close();
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
287 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
288 catch (IOException ioe) {
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
289 log.error(ioe);
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 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
292 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
293 return true;
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 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
297 name = name.toUpperCase();
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
298 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
299 if (fzt == null) {
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
300 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
301 fzt = new ImportHYKFlowZoneType(name);
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
302 flowZoneTypes.put(name, fzt);
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 return fzt;
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
305 }
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
306
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
307 protected void reset() {
1219
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1216
diff changeset
308 hyk = null;
1216
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
309 }
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 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
312
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
313 FileTools.walkTree(root, new FileTools.FileVisitor() {
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
314 @Override
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
315 public boolean visit(File file) {
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
316 if (file.isFile() && file.canRead()
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
317 && file.getName().toLowerCase().endsWith(".hyk")
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
318 && (callback == null || callback.hykAccept(file))) {
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
319 reset();
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
320 boolean success = parse(file);
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
321 log.info("parsing " + (success ? "succeeded" : "failed"));
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
322 if (success && callback != null) {
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
323 callback.hykParsed(HYKParser.this);
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 }
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
326 return true;
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
327 }
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
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
331 public static void main(String [] args) {
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 HYKParser parser = new HYKParser();
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 for (String arg: args) {
f8b5c37f15e4 Fixes for the HYK parser
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1215
diff changeset
336 parser.parseHYKs(new File(arg), null);
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 }
1215
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
339 }
8aef353e54fb Initial version of the HYK parser. Not ready, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
340 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org