annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/DurationCurveFacet.java @ 7300:83bb52fa0c32

(issue1529) Be more tolerant in the fitting. The invalid value warning is removed because invalid data is expected there when datapoints are not valid for this KM
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 11 Oct 2013 18:40:33 +0200
parents af13ceeba52a
children e4606eae8ea5
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: 3076
diff changeset
9 package org.dive4elements.river.artifacts.model;
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
2746
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
11 import java.util.List;
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
12 import java.util.ArrayList;
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
13
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import org.apache.log4j.Logger;
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3076
diff changeset
16 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3076
diff changeset
17 import org.dive4elements.artifacts.CallContext;
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3076
diff changeset
19 import org.dive4elements.artifactdatabase.state.DefaultFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3076
diff changeset
20 import org.dive4elements.artifactdatabase.state.Facet;
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
22 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3076
diff changeset
23 import org.dive4elements.river.artifacts.WINFOArtifact;
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
24
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3076
diff changeset
25 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
2746
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
28 /**
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
29 * Data of a duration curve.
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
30 */
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 public class DurationCurveFacet extends DefaultFacet {
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 private static Logger logger = Logger.getLogger(DurationCurveFacet.class);
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
2746
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
35 /** Blackboard data provider key for durationcurve (wqday) data. */
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
36 public static String BB_DURATIONCURVE = "durationcurve";
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
37
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
38 /** Blackboard data provider key for km of durationcurve. */
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
39 public static String BB_DURATIONCURVE_KM = "durationcurve.km";
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
40
1061
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
41 public DurationCurveFacet() {
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
42 }
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
709
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
44 public DurationCurveFacet(String name, String description) {
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
45 super(0, name, description);
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
2746
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
49 /**
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
50 * Expose state computation from WINFOArtifact.
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
51 */
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 public Object getData(Artifact artifact, CallContext context) {
709
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
53 logger.debug("Get data for duration curve data");
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54
709
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
55 WINFOArtifact winfo = (WINFOArtifact)artifact;
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
709
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
57 CalculationResult cr = (CalculationResult)winfo.compute(
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
58 context, ComputeType.ADVANCE, false);
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
59
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 705
diff changeset
60 return cr.getData();
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
1061
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
62
2746
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
63
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
64 @Override
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
65 public List getStaticDataProviderKeys(Artifact art) {
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
66 List list = new ArrayList();
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
67 list.add(BB_DURATIONCURVE);
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
68 list.add(BB_DURATIONCURVE_KM);
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
69 return list;
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
70 }
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
71
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
72
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
73 /**
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
74 * Can provide whatever getData returns and additionally the location.
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
75 * @param key will respond on BB_DURATIONCURVE +KM
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
76 * @param param ignored
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
77 * @param context ignored
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
78 * @return whatever getData delivers or location.
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
79 */
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
80 @Override
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
81 public Object provideBlackboardData(Artifact artifact,
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
82 Object key,
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
83 Object param,
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
84 CallContext context
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
85 ) {
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
86 if (key.equals(BB_DURATIONCURVE)) {
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
87 return getData(artifact, context);
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
88 }
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
89 else if (key.equals(BB_DURATIONCURVE_KM)) {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
90 return ((D4EArtifact)artifact).getDataAsString("ld_locations");
2746
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
91 }
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
92 else {
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
93 return null;
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
94 }
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
95 }
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
96
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
97
4634cf5574f7 Let DurationCurveFacet provide relevant data via Blackboard.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
98 /** Create a deep copy. */
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2746
diff changeset
99 @Override
1061
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
100 public Facet deepCopy() {
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
101 DurationCurveFacet copy = new DurationCurveFacet();
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
102 copy.set(this);
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
103 return copy;
b1b0a0b61845 Made facets cloneable with the right type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 709
diff changeset
104 }
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org