annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityDistanceSelect.java @ 8784:6714e07e18c2

Issue1854: Use the real data. There is no guarantee that the overviews contain the same data.
author Tom Gottfried <tom@intevation.de>
date Tue, 08 Dec 2015 18:10:18 +0100
parents 1116079e6624
children d55cbb45c565
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.Date;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
12 import java.util.List;
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
13 import java.util.Collections;
8613
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
14
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
15 import org.w3c.dom.Element;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
16
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
17 import org.apache.log4j.Logger;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
18
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
19 import org.dive4elements.river.artifacts.D4EArtifact;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
20 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
21 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
22
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
23 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
24
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
25 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
26 import org.dive4elements.artifacts.Artifact;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
27 import org.dive4elements.artifacts.CallContext;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
28
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
29 import org.dive4elements.artifactdatabase.data.StateData;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
30
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
31 /** 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
32 public class BedQualityDistanceSelect extends DistanceSelect {
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
33
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
34 private static Logger log = Logger.getLogger(BedQualityDistanceSelect.class);
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
1116079e6624 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8682
diff changeset
50 if (!data.getName().equals("ld_from")
1116079e6624 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8682
diff changeset
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],
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
62 minMax[1],
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
63 new Date(Long.MIN_VALUE/100000),
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
64 new Date(Long.MAX_VALUE/1000)
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
65 // values expected to fit in SQL Date, though large enough
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
66 ).getKms();
8613
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
67
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
68 List<Double> blKms = QualityMeasurementFactory.getBedloadMeasurements(
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
69 river,
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
70 minMax[0],
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
71 minMax[1],
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
72 new Date(Long.MIN_VALUE/100000),
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
73 new Date(Long.MAX_VALUE/1000)
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
74 // values expected to fit in SQL Date, though large enough
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
75 ).getKms();
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
76
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
77 if (bKms.isEmpty() || blKms.isEmpty()) {
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
78 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
79 return ele;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
80 }
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
81
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
82 Collections.sort(blKms);
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
83 Collections.sort(bKms);
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
84
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
85 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
86 double end = Math.max(
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
87 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
88
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
89 if (data.getName().equals("ld_from")) {
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
90 cr.addAttr(ele, "defaultLabel", data.getName(), true);
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
91 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
92 } 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
93 cr.addAttr(ele, "defaultLabel", data.getName(), true);
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
94 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
95 }
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
96
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
97 return ele;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
98 }
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
99 }

http://dive4elements.wald.intevation.org