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 }

http://dive4elements.wald.intevation.org