annotate artifacts/src/main/java/org/dive4elements/river/artifacts/access/ComputationRangeAccess.java @ 9132:8cc192731c7d

WQSelect can now handle distance-only data
author gernotbelger
date Wed, 06 Jun 2018 14:24:51 +0200
parents e3519c3e7a0a
children
rev   line source
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
2 * Software engineering by
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
5 *
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
9 */
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.access;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
11
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
12 import org.dive4elements.artifactdatabase.data.StateData;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
13 import org.dive4elements.river.artifacts.D4EArtifact;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
14 import org.dive4elements.river.artifacts.states.ComputationRangeState;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
15 import org.dive4elements.river.utils.DoubleUtil;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
16
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
17 /**
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
18 * Access to data handled by {@link ComputationRangeState}.
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
19 *
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
20 * @author Gernot Belger
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
21 */
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
22 public class ComputationRangeAccess extends RangeAccess {
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
23
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
24 public ComputationRangeAccess(final D4EArtifact artifact) {
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
25 super(artifact);
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
26 }
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
27
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
28 public double[] getFromToStep() {
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
29
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
30 if (!isRange())
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
31 return null;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
32
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
33 final double[] fromTo = getKmRange();
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
34
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
35 if (fromTo == null)
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
36 return null;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
37
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
38 final StateData dStep = getArtifact().getData("ld_step");
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
39 if (dStep == null)
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
40 return null;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
41
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
42 final double[] result = new double[3];
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
43 result[0] = fromTo[0];
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
44 result[1] = fromTo[1];
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
45
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
46 try {
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
47 final String dStepValue = (String) dStep.getValue();
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
48 result[2] = DoubleUtil.round(Double.parseDouble(dStepValue) / 1000d);
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
49 return result;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
50 }
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
51 catch (final NumberFormatException nfe) {
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
52 nfe.printStackTrace();
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
53 return null;
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
54 }
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
55 }
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
56
9132
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
57 public final double getStartKm() {
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
58
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
59 final KM_MODE mode = getKmRangeMode();
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
60 switch (mode) {
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
61 case RANGE:
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
62 case DISTANCE_ONLY:
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
63 return getFrom();
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
64
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
65 case LOCATIONS:
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
66 case NONE:
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
67 default:
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
68 final double[] locations = getLocations();
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
69 if( locations != null && locations.length > 0 )
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
70 // TODO: this is the old behaviour, but what happens if the user enters the values unsorted?
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
71 return locations[0];
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
72
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
73 return Double.NaN;
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
74 }
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
75 }
8cc192731c7d WQSelect can now handle distance-only data
gernotbelger
parents: 8914
diff changeset
76
8914
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
77 public double[] getKms() {
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
78
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
79 if (isRange())
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
80 return getKmSteps();
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
81
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
82 return getLocations();
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
83 }
e3519c3e7a0a Workflow for SINFO-Transport bodies heights inclduing winfo calculation
gernotbelger
parents:
diff changeset
84 }

http://dive4elements.wald.intevation.org