comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixLongitudinalDeviationFacet.java @ 3169:b6da650b0718

FixA: Added longitudinal section chart. flys-artifacts/trunk@4782 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Mon, 25 Jun 2012 15:53:34 +0000
parents
children 70966b52c073
comparison
equal deleted inserted replaced
3168:e10323bf3cbc 3169:b6da650b0718
1 package de.intevation.flys.artifacts.model.fixings;
2
3 import java.util.Iterator;
4
5 import org.apache.log4j.Logger;
6
7 import de.intevation.artifacts.Artifact;
8 import de.intevation.artifacts.CallContext;
9
10 import de.intevation.flys.artifacts.FLYSArtifact;
11 import de.intevation.flys.artifacts.FixationArtifactAccess;
12
13 import de.intevation.flys.artifacts.model.FacetTypes;
14 import de.intevation.flys.artifacts.model.DataFacet;
15 import de.intevation.flys.artifacts.model.CalculationResult;
16 import de.intevation.flys.artifacts.model.Parameters;
17
18 import de.intevation.flys.utils.KMIndex;
19
20 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
21
22
23 /**
24 * Facet to show average W values for Q sectors.
25 *
26 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
27 */
28 public class FixLongitudinalDeviationFacet
29 extends DataFacet
30 implements FacetTypes {
31
32 /** House logger. */
33 private static Logger logger = Logger.getLogger(FixLongitudinalDeviationFacet.class);
34
35 /** Trivial Constructor. */
36 public FixLongitudinalDeviationFacet() {
37 }
38
39
40 public FixLongitudinalDeviationFacet(
41 int ndx,
42 String name,
43 String description)
44 {
45 super(
46 ndx,
47 name,
48 description,
49 ComputeType.ADVANCE,
50 null,
51 null);
52 }
53
54
55 /**
56 * Returns the data this facet requires.
57 *
58 * @param artifact the owner artifact.
59 * @param context the CallContext.
60 *
61 * @return the data as KMIndex.
62 */
63 @Override
64 public Object getData(Artifact artifact, CallContext context) {
65 logger.debug("FixLongitudinalDeviationFacet.getData");
66
67 if (artifact instanceof FLYSArtifact) {
68 FLYSArtifact flys = (FLYSArtifact)artifact;
69 FixationArtifactAccess access = new FixationArtifactAccess(flys);
70
71 CalculationResult res =
72 (CalculationResult) flys.compute(context,
73 ComputeType.ADVANCE,
74 false);
75
76 FixResult result = (FixResult) res.getData();
77
78 KMIndex<AnalysisPeriod []> kmPeriods = result.getAnalysisPeriods();
79
80 if (kmPeriods == null) {
81 logger.warn("No analysis periods found.");
82 return null;
83 }
84
85 Parameters params = result.getParameters();
86
87 KMIndex<double[]> kmIndex = new KMIndex<double[]>();
88 for (KMIndex.Entry<AnalysisPeriod[]> entry: kmPeriods) {
89 double km = entry.getKm();
90 double[] stdDev =
91 params.interpolate("km", km, new String[] {"std-dev"});
92
93 if(stdDev == null) {
94 logger.warn("getData: stdDev == null");
95 continue;
96 }
97 kmIndex.add(km, stdDev);
98 }
99
100 return kmIndex;
101 }
102 else {
103 logger.warn("Artifact is no instance of FLYSArtifact.");
104 return null;
105 }
106 }
107
108
109 /**
110 * Create a deep copy of this Facet.
111 * @return a deep copy.
112 */
113 @Override
114 public FixLongitudinalDeviationFacet deepCopy() {
115 FixLongitudinalDeviationFacet copy = new FixLongitudinalDeviationFacet();
116 copy.set(this);
117 return copy;
118 }
119 }
120 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org