Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQCurveFacet.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQCurveFacet.java@bd047b71ab37 |
children | 4897a58c8746 |
comparison
equal
deleted
inserted
replaced
5837:d9901a08d0a6 | 5838:5aa05a7a34b7 |
---|---|
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 : |