annotate flys-backend/src/main/java/de/intevation/flys/importer/PRFParser.java @ 1197:ce3dacc6ea92

PRFParser: extract km from lines. TODO: extract data. flys-backend/trunk@2297 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 07 Jul 2011 09:29:31 +0000
parents 46127af605ba
children 661a9304f2f5
rev   line source
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.importer;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import java.util.Map;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 import java.util.Stack;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 import java.util.TreeMap;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 import java.util.regex.Pattern;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 import java.util.regex.Matcher;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 import java.io.File;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import java.io.InputStreamReader;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 import java.io.LineNumberReader;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.io.FileInputStream;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import java.io.IOException;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import org.apache.log4j.Logger;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 public class PRFParser
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 private static Logger log = Logger.getLogger(PRFParser.class);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 public static final String ENCODING =
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 System.getProperty("flys.backend.prf.encoding", "ISO-8859-1");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 public static final Pattern DATA_PATTERN =
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 Pattern.compile(
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 "\\((\\d+)x\\s*,\\s*(\\d+)\\(" +
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 "\\s*f(\\d+)\\.(\\d+)\\s*,\\s*f(\\d+)\\.(\\d+)\\s*\\)?\\)?");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 public static final Pattern KM_PATTERN =
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 Pattern.compile("\\((\\d+)x\\s*,\\s*f(\\d+)\\.(\\d+)\\s*\\)?");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 public static class DataFormat {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 protected int deleteChars;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 protected int maxRepetitions;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 protected int firstIntegerPlaces;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 protected int firstFractionPlaces;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 protected int secondIntegerPlaces;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 protected int secondFractionPlaces;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 public DataFormat() {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 public DataFormat(Matcher m) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 deleteChars = Integer.parseInt(m.group(1));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 maxRepetitions = Integer.parseInt(m.group(2));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 firstIntegerPlaces = Integer.parseInt(m.group(3));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 firstFractionPlaces = Integer.parseInt(m.group(4));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50 secondIntegerPlaces = Integer.parseInt(m.group(5));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 secondFractionPlaces = Integer.parseInt(m.group(6));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
54 public boolean extractData(String line, Map<Double, Double> dest)
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
55 throws NumberFormatException
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
56 {
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 //TODO: Implement me!
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
58 return true;
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 } // class DataFormat
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62 public static class KMFormat {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63 protected int deleteChars;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64 protected int integerPlaces;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 protected int fractionPlaces;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
67 protected double scale;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
68 protected double shift;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
69
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70 public KMFormat() {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73 public KMFormat(Matcher m) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 deleteChars = Integer.parseInt(m.group(1));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75 integerPlaces = Integer.parseInt(m.group(2));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 fractionPlaces = Integer.parseInt(m.group(3));
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
77
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
78 shift = Math.pow(10, fractionPlaces);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
79 scale = 1d/shift;
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
82 public double extractKm(String line) throws NumberFormatException {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
83
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
84 if (line.length() <= deleteChars) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
85 throw new NumberFormatException("line too short");
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
86 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
87
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
88 String kmS =
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
89 line.substring(deleteChars, deleteChars+integerPlaces);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
90
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
91 double km = Double.parseDouble(kmS.trim());
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
92
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
93 return fractionPlaces > 0
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
94 ? ((int)((scale*km)*shift))/shift
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
95 : km;
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97 } // class KMFormat
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 protected Map<Double, Map<Double, Double>> data;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 public PRFParser() {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 data = new TreeMap<Double, Map<Double, Double>>();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106 public boolean parse(File file) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 if (!(file.isFile() && file.canRead())) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109 log.warn("cannot open file '" + file + "'");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
113 log.info("parsing PRF file: '" + file + "'");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115 LineNumberReader in = null;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
116
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117 try {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118 in =
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
119 new LineNumberReader(
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
120 new InputStreamReader(
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
121 new FileInputStream(file), ENCODING));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
122
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
123 String line = in.readLine();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
124
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
125 if (line == null || (line = line.trim()).length() == 0) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
126 log.warn("file is empty.");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
127 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
128 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
129
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
130 Matcher m = DATA_PATTERN.matcher(line);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
131
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132 if (!m.matches()) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 log.warn("First line does not look like a PRF data pattern.");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
137 DataFormat dataFormat = new DataFormat(m);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
139 if ((line = in.readLine()) == null
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
140 || (line = line.trim()).length() == 0) {
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 log.warn("premature EOF. Expected integer in line 2");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
142 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
145 try {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 if (Integer.parseInt(line) != dataFormat.maxRepetitions) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
147 log.warn("Expected " +
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148 dataFormat.maxRepetitions + " in line 2");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
149 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
150 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
151 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
152 catch (NumberFormatException nfe) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
153 log.warn("invalid integer in line 2", nfe);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
154 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
155 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
156
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
157 if ((line = in.readLine()) == null) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
158 log.warn(
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
159 "premature EOF. Expected pattern for km extraction");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
160 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
161 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
162
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
163 m = KM_PATTERN.matcher(line);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
164
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
165 if (!m.matches()) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
166 log.warn(
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
167 "line 4 does not look like a PRF km extraction pattern.");
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
168 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
169 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
170
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
171 KMFormat kmFormat = new KMFormat(m);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
172
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
173 if ((line = in.readLine()) == null
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
174 || (line = line.trim()).length() == 0) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
175 log.warn("premature EOF. Expected skip row count.");
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
176 return false;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
177 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
178
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
179 int lineSkipCount;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
180 try {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
181 if ((lineSkipCount = Integer.parseInt(line)) < 0) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
182 throw new IllegalArgumentException(lineSkipCount + " < 0");
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
183 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
184 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
185 catch (NumberFormatException nfe) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
186 log.warn(
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
187 "line 5 is not an positive integer.");
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
188 return false;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
189 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
190
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
191 int skip = lineSkipCount;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
192
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
193 while ((line = in.readLine()) != null) {
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
194 if (skip > 0) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
195 --skip;
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
196 continue;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
197 }
1197
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
198 double km;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
199 try {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
200 km = kmFormat.extractKm(line);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
201 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
202 catch (NumberFormatException iae) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
203 log.warn("cannot extract km in line + " + in.getLineNumber());
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
204 return false;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
205 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
206
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
207 Double station = Double.valueOf(km);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
208
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
209 Map<Double, Double> kmData = data.get(station);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
210
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
211 if (kmData == null) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
212 log.debug("found new km: " + station);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
213 kmData = new TreeMap<Double, Double>();
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
214 data.put(station, kmData);
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
215 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
216
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
217 try {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
218 if (!dataFormat.extractData(line, kmData)) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
219 skip = lineSkipCount;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
220 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
221 }
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
222 catch (NumberFormatException nfe) {
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
223 log.warn("cannot extract data from line " + in.getLineNumber());
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
224 return false;
ce3dacc6ea92 PRFParser: extract km from lines. TODO: extract data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1196
diff changeset
225 }
1196
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
226 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
227 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
228 catch (IOException ioe) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
229 log.error(ioe);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
230 return false;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
231 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
232 finally {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
233 if (in != null) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
234 try {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
235 in.close();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
236 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
237 catch (IOException ioe) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
238 log.error(ioe);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
239 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
240 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
241 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
242
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
243 return true;
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
244 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
245
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
246 public void reset() {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
247 data.clear();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
248 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
249
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
250 public static void parsePRFs(File root) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
251
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
252 PRFParser parser = new PRFParser();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
253
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
254 Stack<File> stack = new Stack<File>();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
255 stack.push(root);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
256
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
257 while (!stack.empty()) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
258 File file = stack.pop();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
259 if (file.isDirectory()) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
260 File [] files = file.listFiles();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
261 if (files != null) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
262 for (File f: files) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
263 stack.push(f);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
264 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
265 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
266 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
267 else if (file.isFile()
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
268 && file.getName().toLowerCase().endsWith(".prf")
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
269 ) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
270 parser.reset();
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
271 boolean success = parser.parse(file);
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
272 log.info("parsing " + (success ? "succeeded" : "failed"));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
273 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
274 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
275 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
276
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
277 public static void main(String [] args) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
278
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
279 for (String arg: args) {
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
280 parsePRFs(new File(arg));
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
281 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
282 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
283 }
46127af605ba Added parser for PRF files. TODO: Extract data and km.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
284 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org