Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityDistanceSelect.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 |
---|---|
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013, 2015 by Bundesanstalt für Gewässerkunde |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
3 * |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
7 */ |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
8 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.artifacts.states.minfo; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
10 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
11 import java.util.List; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
12 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
13 import org.w3c.dom.Element; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
14 |
9726 | 15 import org.apache.logging.log4j.Logger; |
16 import org.apache.logging.log4j.LogManager; | |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
17 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
18 import org.dive4elements.river.artifacts.D4EArtifact; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
19 import org.dive4elements.river.artifacts.access.RiverAccess; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
20 import org.dive4elements.river.artifacts.states.DistanceSelect; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
21 |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
22 import org.dive4elements.river.artifacts.model.minfo.QualityMeasurementFactory; |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
23 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
24 import org.dive4elements.artifacts.common.utils.XMLUtils; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
25 import org.dive4elements.artifacts.Artifact; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
26 import org.dive4elements.artifacts.CallContext; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
27 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
28 import org.dive4elements.artifactdatabase.data.StateData; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
29 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
30 /** Extended Distance Select with default values appropiate for BedQuality */ |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
31 public class BedQualityDistanceSelect extends DistanceSelect { |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
32 |
9726 | 33 private static Logger log = LogManager.getLogger( |
8856 | 34 BedQualityDistanceSelect.class); |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
35 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
36 /** |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
37 * The default constructor that initializes an empty State object. |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
38 */ |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
39 public BedQualityDistanceSelect() { |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
40 } |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
41 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
42 @Override |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
43 protected Element createData( |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
44 XMLUtils.ElementCreator cr, |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
45 Artifact artifact, |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
46 StateData data, |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
47 CallContext context) |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
48 { |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
49 Element ele = super.createData(cr, artifact, data, context); |
8776 | 50 if (!data.getName().equals("ld_from") |
51 && !data.getName().equals("ld_to")) { | |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
52 return ele; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
53 } |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
54 |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
55 RiverAccess access = new RiverAccess((D4EArtifact)artifact); |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
56 String river = access.getRiverName(); |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
57 double [] minMax = access.getRiver().determineMinMaxDistance(); |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
58 |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
59 List<Double> bKms = QualityMeasurementFactory.getBedMeasurements( |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
60 river, |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
61 minMax[0], |
8787
5855f919cbd6
Issue1854: Avoid assumptions about limits of SQL datetime.
Tom Gottfried <tom@intevation.de>
parents:
8785
diff
changeset
|
62 minMax[1] |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
63 ).getKms(); |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
64 |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
65 List<Double> blKms = QualityMeasurementFactory.getBedloadMeasurements( |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
66 river, |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
67 minMax[0], |
8787
5855f919cbd6
Issue1854: Avoid assumptions about limits of SQL datetime.
Tom Gottfried <tom@intevation.de>
parents:
8785
diff
changeset
|
68 minMax[1] |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
69 ).getKms(); |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
70 |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
71 if (bKms.isEmpty() || blKms.isEmpty()) { |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
72 log.warn("Not all data found for river '" + river + "'"); |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
73 return ele; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
74 } |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
75 |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
76 double start = Math.min(bKms.get(0), blKms.get(0)); |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
77 double end = Math.max( |
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
78 bKms.get(bKms.size()-1), blKms.get(blKms.size()-1)); |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
79 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
80 if (data.getName().equals("ld_from")) { |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
81 cr.addAttr(ele, "defaultLabel", data.getName(), true); |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
82 cr.addAttr(ele, "defaultValue", Double.toString(start), true); |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
83 } else if (data.getName().equals("ld_to")) { |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
84 cr.addAttr(ele, "defaultLabel", data.getName(), true); |
8784
6714e07e18c2
Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents:
8776
diff
changeset
|
85 cr.addAttr(ele, "defaultValue", Double.toString(end), true); |
8613
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
86 } |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
87 |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
88 return ele; |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
89 } |
39ce099a6551
(issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
90 } |