annotate artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedQualityAccess.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
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
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8637
diff changeset
16 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8637
diff changeset
17 import org.apache.logging.log4j.LogManager;
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
18
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4847
diff changeset
19 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
20
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
21 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4847
diff changeset
22 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
23
3749
3dcc4feff243 Created the initial structure for MINFO bed quality chart generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
4847
37112235a946 BedQualityAccess: whitespace, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4824
diff changeset
25 /** Access data of artifact used in BedQuality calculations. */
37112235a946 BedQualityAccess: whitespace, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4824
diff changeset
26 public class BedQualityAccess
37112235a946 BedQualityAccess: whitespace, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4824
diff changeset
27 extends RangeAccess {
3750
e560a9a10eb1 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3749
diff changeset
28
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8637
diff changeset
29 private static final Logger log = LogManager
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
30 .getLogger(BedQualityAccess.class);
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
31
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
32 private List<String> bedDiameter;
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
33 private List<String> bedloadDiameter;
3760
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
34 private List<DateRange> ranges;
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
35
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
36
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
37 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
38 super(artifact);
3760
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
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
41 public List<DateRange> getDateRanges() {
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
42 if (ranges == null) {
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
43 ranges = extractRanges(getString("periods"));
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
44 }
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
45 return ranges;
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
46 }
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
47
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
48 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
49 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
50 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
51 bedDiameter = extractDiameter(value);
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
52 }
6258
11d76162eca1 Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents: 6101
diff changeset
53 if (bedDiameter == null) {
11d76162eca1 Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents: 6101
diff changeset
54 return new ArrayList<String>();
11d76162eca1 Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents: 6101
diff changeset
55 }
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
56 return bedDiameter;
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
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
59 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
60 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
61 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
62 bedloadDiameter = extractDiameter(value);
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
63 }
6258
11d76162eca1 Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents: 6101
diff changeset
64 if (bedloadDiameter == null) {
11d76162eca1 Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents: 6101
diff changeset
65 return new ArrayList<String>();
11d76162eca1 Never return 'null' for bed(load) diameters.
Raimund Renkert <rrenkert@intevation.de>
parents: 6101
diff changeset
66 }
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
67 return bedloadDiameter;
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
68 }
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
69
3760
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
70 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
71 List<DateRange> list = new LinkedList<DateRange>();
8637
5a5331dd3e8d (issue1755) Validate selected periods and ranges.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8202
diff changeset
72 if (dateString == null) {
5a5331dd3e8d (issue1755) Validate selected periods and ranges.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8202
diff changeset
73 return list;
5a5331dd3e8d (issue1755) Validate selected periods and ranges.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8202
diff changeset
74 }
3760
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
75 String[] dates = dateString.split(";");
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
76 for (String s : dates) {
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
77 String[] pair = s.split(",");
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
78 try {
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
79 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
80 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
81 Date first = new Date(l1);
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
82 Date second = new Date(l2);
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
83 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
84 list.add(dr);
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 catch (NumberFormatException nfe) {
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
87 continue;
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
88 }
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
89 }
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
90 return list;
312870fded7e Added result objects for minfo bed quality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3750
diff changeset
91 }
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
92
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
93 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
94 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
95 String[] diameter = value.split(";");
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
96 for (String v : diameter) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6258
diff changeset
97 log.debug("diameter: " + v);
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
98 String[] parts = v.split("\\.");
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
99 result.add(parts[parts.length - 1]);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6258
diff changeset
100 log.debug(parts[parts.length-1]);
3768
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
101 }
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
102 return result;
00aafe1fedd7 Added getter for characteristic diameter in bed quality access.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3760
diff changeset
103 }
3749
3dcc4feff243 Created the initial structure for MINFO bed quality chart generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 }
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
105 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org