comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQCurveFacet.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQCurveFacet.java@1df6984628c3
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
1 package org.dive4elements.river.artifacts.model.sq;
2
3 import org.apache.log4j.Logger;
4
5 import org.dive4elements.artifacts.Artifact;
6 import org.dive4elements.artifacts.CallContext;
7
8 import org.dive4elements.river.artifacts.FLYSArtifact;
9 import org.dive4elements.river.artifacts.math.fitting.Function;
10 import org.dive4elements.river.artifacts.math.fitting.FunctionFactory;
11 import org.dive4elements.river.artifacts.model.CalculationResult;
12 import org.dive4elements.river.artifacts.model.DataFacet;
13 import org.dive4elements.river.artifacts.model.FacetTypes;
14 import org.dive4elements.river.artifacts.model.Parameters;
15
16 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
17
18
19 /**
20 * Facet to show the curve in a sq relation.
21 *
22 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
23 */
24 public class SQCurveFacet extends DataFacet implements FacetTypes {
25
26 private static final Logger log = Logger.getLogger(SQCurveFacet.class);
27
28
29 public static final String FUNCTION = "sq-pow";
30
31
32 private int fractionIdx;
33
34
35 public SQCurveFacet() {
36 }
37
38
39 public SQCurveFacet(
40 int idx,
41 int fractionIdx,
42 String name,
43 String description,
44 String hash,
45 String stateId
46 ) {
47 super(idx, name, description, ComputeType.ADVANCE, hash, stateId);
48 this.fractionIdx = fractionIdx;
49 }
50
51
52 @Override
53 public Object getData(Artifact artifact, CallContext context) {
54 log.debug("SQCurveFacet.getData");
55
56 if (!(artifact instanceof FLYSArtifact)) {
57 return null;
58 }
59
60 FLYSArtifact flys = (FLYSArtifact) artifact;
61
62 CalculationResult res = (CalculationResult) flys.compute(
63 context, ComputeType.ADVANCE, false);
64
65 SQResult[] results = (SQResult[]) res.getData();
66 SQFractionResult result = results[index].getFraction(fractionIdx);
67
68 Parameters params = result.getParameters();
69
70 if (params == null) {
71 log.debug("no parameters found");
72 return null;
73 }
74
75 Function func = FunctionFactory.getInstance().getFunction(FUNCTION);
76 String[] paramNames = func.getParameterNames();
77
78 double [] coeffs = params.get(0, paramNames);
79
80 if (log.isDebugEnabled()) {
81 for (int i = 0, N = paramNames.length; i < N; i++) {
82 log.debug("retrieved parameter " + paramNames[i] +
83 " = " + coeffs[i]);
84 }
85 }
86
87 org.dive4elements.river.artifacts.math.Function mf =
88 func.instantiate(coeffs);
89
90 double [] extent = result.getQExtent();
91 return new SQFunction(mf, extent[0], extent[1]);
92 }
93
94
95 @Override
96 public SQCurveFacet deepCopy() {
97 SQCurveFacet copy = new SQCurveFacet();
98 copy.set(this);
99
100 return copy;
101 }
102 }
103 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org