Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedQualityAccess.java @ 7357:9d3e44ab25f2
Refactoring: Move functionality of BedHeightAccess into BedHeightFacet for now.
Idea is that Artifact and Access are lightweight. Access access the 'data'
('parameterization') attached to artifact, not the data delivered by means of
artifact and its parameterization.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 16 Oct 2013 10:42:45 +0200 |
parents | 11d76162eca1 |
children | e4606eae8ea5 |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5867
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5867
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4847
diff
changeset
|
9 package org.dive4elements.river.artifacts.access; |
3749
3dcc4feff243
Created the initial structure for MINFO bed quality chart generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
6258
11d76162eca1
Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
6101
diff
changeset
|
11 import java.util.ArrayList; |
3760
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
12 import java.util.Date; |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
13 import java.util.LinkedList; |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
14 import java.util.List; |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
15 |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
16 import org.apache.log4j.Logger; |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
17 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4847
diff
changeset
|
18 import org.dive4elements.artifacts.CallContext; |
4824
d5d2faf14522
BedHeightQualityAccess, RangeAccess: Refactored, moved getFrom/To to RangeAccess.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3780
diff
changeset
|
19 |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
20 import org.dive4elements.river.artifacts.D4EArtifact; |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4847
diff
changeset
|
21 import org.dive4elements.river.artifacts.model.DateRange; |
3760
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
22 |
3749
3dcc4feff243
Created the initial structure for MINFO bed quality chart generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 |
4847
37112235a946
BedQualityAccess: whitespace, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4824
diff
changeset
|
24 /** Access data of artifact used in BedQuality calculations. */ |
37112235a946
BedQualityAccess: whitespace, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4824
diff
changeset
|
25 public class BedQualityAccess |
37112235a946
BedQualityAccess: whitespace, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4824
diff
changeset
|
26 extends RangeAccess { |
3750
e560a9a10eb1
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3749
diff
changeset
|
27 |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
28 private static final Logger logger = Logger |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
29 .getLogger(BedQualityAccess.class); |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
30 |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
31 private List<String> bedDiameter; |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
32 private List<String> bedloadDiameter; |
3760
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
33 private List<DateRange> ranges; |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
34 |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
35 |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
36 public BedQualityAccess(D4EArtifact artifact, CallContext context) { |
6101
a0078e5e3b39
Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
37 super(artifact); |
3760
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
38 } |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
39 |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
40 public List<DateRange> getDateRanges() { |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
41 if (ranges == null) { |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
42 ranges = extractRanges(getString("periods")); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
43 } |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
44 return ranges; |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
45 } |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
46 |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
47 public List<String> getBedDiameter() { |
3780
7fa38f8bcd8d
Avoid NPE if the user selects onlyone sort of characteristic diameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3777
diff
changeset
|
48 String value = getString("bed_diameter"); |
7fa38f8bcd8d
Avoid NPE if the user selects onlyone sort of characteristic diameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3777
diff
changeset
|
49 if (bedDiameter == null && value != null) { |
7fa38f8bcd8d
Avoid NPE if the user selects onlyone sort of characteristic diameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3777
diff
changeset
|
50 bedDiameter = extractDiameter(value); |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
51 } |
6258
11d76162eca1
Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
6101
diff
changeset
|
52 if (bedDiameter == null) { |
11d76162eca1
Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
6101
diff
changeset
|
53 return new ArrayList<String>(); |
11d76162eca1
Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
6101
diff
changeset
|
54 } |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
55 return bedDiameter; |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
56 } |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
57 |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
58 public List<String> getBedloadDiameter() { |
3780
7fa38f8bcd8d
Avoid NPE if the user selects onlyone sort of characteristic diameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3777
diff
changeset
|
59 String value = getString("load_diameter"); |
7fa38f8bcd8d
Avoid NPE if the user selects onlyone sort of characteristic diameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3777
diff
changeset
|
60 if (bedloadDiameter == null && value != null) { |
7fa38f8bcd8d
Avoid NPE if the user selects onlyone sort of characteristic diameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3777
diff
changeset
|
61 bedloadDiameter = extractDiameter(value); |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
62 } |
6258
11d76162eca1
Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
6101
diff
changeset
|
63 if (bedloadDiameter == null) { |
11d76162eca1
Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
6101
diff
changeset
|
64 return new ArrayList<String>(); |
11d76162eca1
Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
6101
diff
changeset
|
65 } |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
66 return bedloadDiameter; |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
67 } |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
68 |
3760
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
69 private List<DateRange> extractRanges(String dateString) { |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
70 List<DateRange> list = new LinkedList<DateRange>(); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
71 String[] dates = dateString.split(";"); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
72 for (String s : dates) { |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
73 String[] pair = s.split(","); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
74 try { |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
75 long l1 = Long.parseLong(pair[0]); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
76 long l2 = Long.parseLong(pair[1]); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
77 Date first = new Date(l1); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
78 Date second = new Date(l2); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
79 DateRange dr = new DateRange(first, second); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
80 list.add(dr); |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
81 } |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
82 catch (NumberFormatException nfe) { |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
83 continue; |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
84 } |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
85 } |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
86 return list; |
312870fded7e
Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3750
diff
changeset
|
87 } |
3768
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
88 |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
89 private List<String> extractDiameter(String value) { |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
90 List<String> result = new LinkedList<String>(); |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
91 String[] diameter = value.split(";"); |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
92 for (String v : diameter) { |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
93 logger.debug("diameter: " + v); |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
94 String[] parts = v.split("\\."); |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
95 result.add(parts[parts.length - 1]); |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
96 logger.debug(parts[parts.length-1]); |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
97 } |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
98 return result; |
00aafe1fedd7
Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3760
diff
changeset
|
99 } |
3749
3dcc4feff243
Created the initial structure for MINFO bed quality chart generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 } |
3777
048a02e29808
Added base class RiverAccess to dense code to access the river name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3768
diff
changeset
|
101 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |