comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/DurationCurveFacet.java @ 2746:4634cf5574f7

Let DurationCurveFacet provide relevant data via Blackboard. flys-artifacts/trunk@4481 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 23 May 2012 20:34:02 +0000
parents b1b0a0b61845
children 5642a83420f2
comparison
equal deleted inserted replaced
2745:b63017afbca8 2746:4634cf5574f7
1 package de.intevation.flys.artifacts.model; 1 package de.intevation.flys.artifacts.model;
2
3 import java.util.List;
4 import java.util.ArrayList;
2 5
3 import org.apache.log4j.Logger; 6 import org.apache.log4j.Logger;
4 7
5 import de.intevation.artifacts.Artifact; 8 import de.intevation.artifacts.Artifact;
6 import de.intevation.artifacts.CallContext; 9 import de.intevation.artifacts.CallContext;
7 10
8 import de.intevation.artifactdatabase.state.DefaultFacet; 11 import de.intevation.artifactdatabase.state.DefaultFacet;
9 import de.intevation.artifactdatabase.state.Facet; 12 import de.intevation.artifactdatabase.state.Facet;
10 13
14 import de.intevation.flys.artifacts.FLYSArtifact;
11 import de.intevation.flys.artifacts.WINFOArtifact; 15 import de.intevation.flys.artifacts.WINFOArtifact;
12 16
13 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; 17 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
14 18
15 19
20 /**
21 * Data of a duration curve.
22 */
16 public class DurationCurveFacet extends DefaultFacet { 23 public class DurationCurveFacet extends DefaultFacet {
17 24
18 private static Logger logger = Logger.getLogger(DurationCurveFacet.class); 25 private static Logger logger = Logger.getLogger(DurationCurveFacet.class);
26
27 /** Blackboard data provider key for durationcurve (wqday) data. */
28 public static String BB_DURATIONCURVE = "durationcurve";
29
30 /** Blackboard data provider key for km of durationcurve. */
31 public static String BB_DURATIONCURVE_KM = "durationcurve.km";
19 32
20 public DurationCurveFacet() { 33 public DurationCurveFacet() {
21 } 34 }
22 35
23 public DurationCurveFacet(String name, String description) { 36 public DurationCurveFacet(String name, String description) {
24 super(0, name, description); 37 super(0, name, description);
25 } 38 }
26 39
27 40
41 /**
42 * Expose state computation from WINFOArtifact.
43 */
28 public Object getData(Artifact artifact, CallContext context) { 44 public Object getData(Artifact artifact, CallContext context) {
29 logger.debug("Get data for duration curve data"); 45 logger.debug("Get data for duration curve data");
30 46
31 WINFOArtifact winfo = (WINFOArtifact)artifact; 47 WINFOArtifact winfo = (WINFOArtifact)artifact;
32 48
34 context, ComputeType.ADVANCE, false); 50 context, ComputeType.ADVANCE, false);
35 51
36 return cr.getData(); 52 return cr.getData();
37 } 53 }
38 54
55
56 @Override
57 public List getStaticDataProviderKeys(Artifact art) {
58 List list = new ArrayList();
59 list.add(BB_DURATIONCURVE);
60 list.add(BB_DURATIONCURVE_KM);
61 return list;
62 }
63
64
65 /**
66 * Can provide whatever getData returns and additionally the location.
67 * @param key will respond on BB_DURATIONCURVE +KM
68 * @param param ignored
69 * @param context ignored
70 * @return whatever getData delivers or location.
71 */
72 @Override
73 public Object provideBlackboardData(Artifact artifact,
74 Object key,
75 Object param,
76 CallContext context
77 ) {
78 if (key.equals(BB_DURATIONCURVE)) {
79 return getData(artifact, context);
80 }
81 else if (key.equals(BB_DURATIONCURVE_KM)) {
82 return ((FLYSArtifact)artifact).getDataAsString("ld_locations");
83 }
84 else {
85 return null;
86 }
87 }
88
89
90 /** Create a deep copy. */
39 @Override 91 @Override
40 public Facet deepCopy() { 92 public Facet deepCopy() {
41 DurationCurveFacet copy = new DurationCurveFacet(); 93 DurationCurveFacet copy = new DurationCurveFacet();
42 copy.set(this); 94 copy.set(this);
43 return copy; 95 return copy;

http://dive4elements.wald.intevation.org