Mercurial > dive4elements > river
annotate flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightSingleParser.java @ 5521:bc140668db82
Morpho-Importer: small logging improvements
author | Tom Gottfried <tom.gottfried@intevation.de> |
---|---|
date | Thu, 28 Mar 2013 18:49:48 +0100 |
parents | b3dd14fc13a6 |
children |
rev | line source |
---|---|
2806
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.importer.parsers; |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
2 |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
3 import java.math.BigDecimal; |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
4 |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
5 import java.text.ParseException; |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
6 |
2806
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
7 import org.apache.log4j.Logger; |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
8 |
2811
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
9 import de.intevation.flys.importer.ImportBedHeight; |
2806
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 import de.intevation.flys.importer.ImportBedHeightSingle; |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
11 import de.intevation.flys.importer.ImportBedHeightSingleValue; |
2806
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 |
2811
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
14 public class BedHeightSingleParser extends BedHeightParser { |
2806
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 private static final Logger log = |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 Logger.getLogger(BedHeightSingleParser.class); |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
20 |
2811
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
21 @Override |
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
22 protected ImportBedHeight newImportBedHeight(String description) { |
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
23 return new ImportBedHeightSingle(description); |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
24 } |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
25 |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
26 |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
27 |
3955
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
28 /** |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
29 * Create ImportBedHeightSingleValue from a line of csv file, add |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
30 * it to the ImportBedHeight. |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
31 */ |
2811
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
32 @Override |
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
33 protected void handleDataLine(ImportBedHeight obj, String line) { |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
34 String[] values = line.split(SEPERATOR_CHAR); |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
35 |
3955
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
36 if (values == null || (values.length != 1 && values.length < 6)) { |
3662
0d27d02b1208
backend: Completed the error messages of the importer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2811
diff
changeset
|
37 //log.warn("BSP: Error while parsing data line: '" + line + "'"); |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
38 return; |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
39 } |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
40 |
3955
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
41 BigDecimal km; |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
42 |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
43 try { |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
44 km = new BigDecimal(nf.parse(values[0]).doubleValue()); |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
45 } |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
46 catch (ParseException e) { |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
47 // We expect a lot of ";;;;;;" lines. |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
48 //log.warn("BSP: Error while parsing km of data row.", e); |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
49 return; |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
50 } |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
51 |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
52 // Handle gaps like "10,0;;;;;". |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
53 if (values.length == 1) { |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
54 ImportBedHeightSingleValue value = new ImportBedHeightSingleValue( |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
55 (ImportBedHeightSingle) obj, |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
56 km, |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
57 null, null, null, null, null); |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
58 obj.addValue(value); |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
59 return; |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
60 } |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
61 |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
62 // Because we cannot enforce consistency of values with complete data |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
63 // via null constraints in the database (as there are "gap" values), |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
64 // do this checks manually. |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
65 if (values[3].length() == 0 || values[4].length() == 0 |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
66 || values[5].length() == 0) { |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
67 //log.warn("BSP: Error while parsing data row (manual null constraint violated)."); |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
68 return; |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
69 } |
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
70 |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
71 try { |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
72 ImportBedHeightSingleValue value = new ImportBedHeightSingleValue( |
2811
8926571e47fb
Finished importing MINFO bed heights (single and epoch).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2809
diff
changeset
|
73 (ImportBedHeightSingle) obj, |
3955
26685b846a29
Let importer handle gappy single bed height values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3662
diff
changeset
|
74 km, |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
75 new BigDecimal(nf.parse(values[1]).doubleValue()), |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
76 new BigDecimal(nf.parse(values[2]).doubleValue()), |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
77 new BigDecimal(nf.parse(values[3]).doubleValue()), |
5450
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
78 parseBigDecimal(values[4], line), |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
79 new BigDecimal(nf.parse(values[5]).doubleValue()) |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
80 ); |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
81 |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
82 obj.addValue(value); |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
83 } |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
84 catch (ParseException e) { |
5490
b3dd14fc13a6
Parsers: do not call warnings error
Tom Gottfried <tom.gottfried@intevation.de>
parents:
5450
diff
changeset
|
85 log.warn("BSP: unparseable value in data row.", e); |
2808
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
86 } |
b57c95094b68
Finished work on parsing meta information and data specific to single bed heights files in MINFO.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2806
diff
changeset
|
87 } |
5450
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
88 |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
89 private BigDecimal parseBigDecimal(String value, String line) { |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
90 BigDecimal result = null; |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
91 try { |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
92 Double dValue = Double.valueOf(value.replace(",", ".")); |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
93 result = new BigDecimal(dValue.doubleValue()); |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
94 } |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
95 catch (NumberFormatException nfe) { |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
96 log.warn( |
5490
b3dd14fc13a6
Parsers: do not call warnings error
Tom Gottfried <tom.gottfried@intevation.de>
parents:
5450
diff
changeset
|
97 "Could not parse " + |
5450
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
98 value + |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
99 " in bed heigt single row: " |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
100 + line); |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
101 } |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
102 return result; |
84beabb3897c
Correctly parse bedheights.
Raimund Renkert <rrenkert@intevation.de>
parents:
3956
diff
changeset
|
103 } |
2806
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
104 } |
33f40b23edd8
Initial checkin for parsing MINFO bed heights.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
105 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |