annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityDistanceSelect.java @ 8787:5855f919cbd6

Issue1854: Avoid assumptions about limits of SQL datetime.
author Tom Gottfried <tom@intevation.de>
date Tue, 08 Dec 2015 20:15:45 +0100
parents d55cbb45c565
children 5e38e2924c07
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;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
13
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
14 import org.w3c.dom.Element;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
15
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
16 import org.apache.log4j.Logger;
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
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
33 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
34
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 * 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
37 */
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
38 public BedQualityDistanceSelect() {
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
39 }
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 @Override
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
42 protected Element createData(
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
43 XMLUtils.ElementCreator cr,
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
44 Artifact artifact,
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
45 StateData data,
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
46 CallContext context)
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
47 {
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
48 Element ele = super.createData(cr, artifact, data, context);
8776
1116079e6624 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8682
diff changeset
49 if (!data.getName().equals("ld_from")
1116079e6624 Tidied.
Tom Gottfried <tom@intevation.de>
parents: 8682
diff changeset
50 && !data.getName().equals("ld_to")) {
8613
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
51 return ele;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
52 }
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
53
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
54 RiverAccess access = new RiverAccess((D4EArtifact)artifact);
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
55 String river = access.getRiverName();
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
56 double [] minMax = access.getRiver().determineMinMaxDistance();
8613
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
57
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
58 List<Double> bKms = QualityMeasurementFactory.getBedMeasurements(
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
59 river,
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
60 minMax[0],
8787
5855f919cbd6 Issue1854: Avoid assumptions about limits of SQL datetime.
Tom Gottfried <tom@intevation.de>
parents: 8785
diff changeset
61 minMax[1]
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
62 ).getKms();
8613
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
63
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
64 List<Double> blKms = QualityMeasurementFactory.getBedloadMeasurements(
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
65 river,
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
66 minMax[0],
8787
5855f919cbd6 Issue1854: Avoid assumptions about limits of SQL datetime.
Tom Gottfried <tom@intevation.de>
parents: 8785
diff changeset
67 minMax[1]
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
68 ).getKms();
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
69
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
70 if (bKms.isEmpty() || blKms.isEmpty()) {
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
71 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
72 return ele;
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
73 }
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
74
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
75 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
76 double end = Math.max(
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
77 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
78
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
79 if (data.getName().equals("ld_from")) {
39ce099a6551 (issue1755) Add good defaults for bedquality distance selection
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
80 cr.addAttr(ele, "defaultLabel", data.getName(), true);
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
81 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
82 } 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
83 cr.addAttr(ele, "defaultLabel", data.getName(), true);
8784
6714e07e18c2 Issue1854: Use the real data.
Tom Gottfried <tom@intevation.de>
parents: 8776
diff changeset
84 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
85 }
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 return ele;
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 }

http://dive4elements.wald.intevation.org