Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/importer/parsers/WaterlevelDifferencesParser.java @ 5233:37ff7c030ec9
WaterlevelDifferencesParser: Create ImportWsts directly.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 12 Mar 2013 09:39:53 +0100 |
parents | fb7d43ba8147 |
children | d1e24f26dee0 |
comparison
equal
deleted
inserted
replaced
5232:11b2a0c55318 | 5233:37ff7c030ec9 |
---|---|
33 NumberFormat.getInstance(DEFAULT_LOCALE); | 33 NumberFormat.getInstance(DEFAULT_LOCALE); |
34 | 34 |
35 public static final Pattern META_UNIT = | 35 public static final Pattern META_UNIT = |
36 Pattern.compile("^Einheit: \\[(.*)\\].*"); | 36 Pattern.compile("^Einheit: \\[(.*)\\].*"); |
37 | 37 |
38 private List<ImportWaterlevelDifference> differences; | 38 /** List of parsed differences as ImportWst s. */ |
39 private List<ImportWst> differences; | |
39 | 40 |
40 private ImportWaterlevelDifferenceColumn[] columns; | 41 private ImportWstColumn[] columns; |
41 | 42 |
42 private ImportWaterlevelDifference current; | 43 /** The currently processed dataset. */ |
44 private ImportWst current; | |
43 | 45 |
44 | 46 |
45 public WaterlevelDifferencesParser() { | 47 public WaterlevelDifferencesParser() { |
46 differences = new ArrayList<ImportWaterlevelDifference>(); | 48 differences = new ArrayList<ImportWst>(); |
47 } | 49 } |
48 | 50 |
49 | 51 |
50 public List<ImportWaterlevelDifference> getDifferences() { | 52 /** Get the differences as wst parsed so far. */ |
53 public List<ImportWst> getDifferences() { | |
51 return differences; | 54 return differences; |
52 } | 55 } |
53 | 56 |
54 public List<ImportWst> exportWsts() { | 57 public List<ImportWst> exportWsts() { |
55 List<ImportWst> wsts = new ArrayList<ImportWst>(); | 58 return differences; |
56 for(ImportWaterlevelDifference waterlevel: getDifferences()) { | |
57 String description = waterlevel.getDescription(); | |
58 ImportWst wst = new ImportWst(); | |
59 wsts.add(wst); | |
60 wst.setDescription(description); | |
61 // Fixation kind. | |
62 wst.setKind(7); | |
63 wst.setUnit(waterlevel.getUnit()); | |
64 wst.setNumberColumns(waterlevel.getColumns().size()); | |
65 | |
66 int i = 0; | |
67 for (ImportWaterlevelDifferenceColumn wdc: waterlevel.getColumns()) { | |
68 ImportWstColumn column = wst.getColumn(i); | |
69 column.setDescription(wdc.getDescription()); | |
70 column.setName(wdc.getDescription()); | |
71 column.setPosition(i); | |
72 for (ImportWaterlevelDifferenceValue val: wdc.getValues()) { | |
73 column.addColumnValue(BigDecimal.valueOf(val.getStation()), | |
74 BigDecimal.valueOf(val.getValue())); | |
75 | |
76 } | |
77 i++; | |
78 } | |
79 } | |
80 return wsts; | |
81 } | 59 } |
82 | 60 |
83 | 61 |
84 @Override | 62 @Override |
85 public void parse(File file) throws IOException { | 63 public void parse(File file) throws IOException { |
86 current = new ImportWaterlevelDifference(file.getName()); | 64 current = new ImportWst(file.getName()); |
65 current.setKind(7); | |
87 | 66 |
88 super.parse(file); | 67 super.parse(file); |
89 } | 68 } |
90 | 69 |
91 | 70 |
95 | 74 |
96 | 75 |
97 @Override | 76 @Override |
98 protected void finish() { | 77 protected void finish() { |
99 if (columns != null && current != null) { | 78 if (columns != null && current != null) { |
100 for (ImportWaterlevelDifferenceColumn col: columns) { | 79 // TODO figure out if its needed, as the columns |
101 current.addValue(col); | 80 // are registered at their construction time. |
81 for (ImportWstColumn col: columns) { | |
82 // TODO place a current.addColumn(col); here? | |
102 } | 83 } |
103 | 84 |
104 differences.add(current); | 85 differences.add(current); |
105 } | 86 } |
106 | 87 |
163 return false; | 144 return false; |
164 } | 145 } |
165 | 146 |
166 | 147 |
167 private void initColumns(String[] cols) { | 148 private void initColumns(String[] cols) { |
168 columns = new ImportWaterlevelDifferenceColumn[cols.length]; | 149 columns = new ImportWstColumn[cols.length]; |
169 | 150 |
170 for (int i = 0; i < cols.length; i++) { | 151 for (int i = 0; i < cols.length; i++) { |
171 String name = cols[i].replace("\"", ""); | 152 String name = cols[i].replace("\"", ""); |
172 | 153 |
173 log.debug("Create new column '" + name + "'"); | 154 log.debug("Create new column '" + name + "'"); |
174 columns[i] = new ImportWaterlevelDifferenceColumn(name); | 155 columns[i] = new ImportWstColumn(current, name, name, i); |
175 } | 156 } |
176 } | 157 } |
177 | 158 |
178 | 159 |
179 private void handleDataLine(String line) { | 160 private void handleDataLine(String line) { |
196 } | 177 } |
197 | 178 |
198 String value = cols[idx]; | 179 String value = cols[idx]; |
199 | 180 |
200 try { | 181 try { |
201 columns[i].addValue(new ImportWaterlevelDifferenceValue( | 182 columns[i].addColumnValue( |
202 station, | 183 new BigDecimal(station), |
203 nf.parse(value).doubleValue() | 184 new BigDecimal(nf.parse(value).doubleValue())); |
204 )); | |
205 } | 185 } |
206 catch (ParseException pe) { | 186 catch (ParseException pe) { |
207 log.warn("Error while parsing value: '" + value + "'"); | 187 log.warn("Error while parsing value: '" + value + "'"); |
208 } | 188 } |
209 } | 189 } |