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

http://dive4elements.wald.intevation.org