comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQOutlierFacet.java @ 3119:238803b2cb8b

Create a compound index for SQOutlierFacets based on result index and iteration number. flys-artifacts/trunk@4720 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 20 Jun 2012 11:04:24 +0000
parents b31397addf2f
children 1df6984628c3
comparison
equal deleted inserted replaced
3118:6fb211753674 3119:238803b2cb8b
20 */ 20 */
21 public class SQOutlierFacet extends DataFacet implements FacetTypes { 21 public class SQOutlierFacet extends DataFacet implements FacetTypes {
22 22
23 private static final Logger log = Logger.getLogger(SQOutlierFacet.class); 23 private static final Logger log = Logger.getLogger(SQOutlierFacet.class);
24 24
25 public static final int BITMASK_ITERATION = (1 << 16) - 1;
25 26
26 private int iteration; 27
27 private int fractionIdx; 28 private int fractionIdx;
28 29
29 30
30 public SQOutlierFacet() { 31 public SQOutlierFacet() {
31 } 32 }
32 33
33 34
34 public SQOutlierFacet( 35 public SQOutlierFacet(
35 int idx, 36 int idx,
36 int fractionIdx, 37 int fractionIdx,
37 int iteration,
38 String name, 38 String name,
39 String description, 39 String description,
40 String hash, 40 String hash,
41 String stateId 41 String stateId
42 ) { 42 ) {
53 FLYSArtifact flys = (FLYSArtifact) artifact; 53 FLYSArtifact flys = (FLYSArtifact) artifact;
54 54
55 CalculationResult res = (CalculationResult) flys.compute( 55 CalculationResult res = (CalculationResult) flys.compute(
56 context, ComputeType.ADVANCE, false); 56 context, ComputeType.ADVANCE, false);
57 57
58 int idx = this.index >> 16;
59 int iter = this.index & BITMASK_ITERATION;
60
61 if (log.isDebugEnabled()) {
62 log.debug("Fetch data for index : " + this.index);
63 log.debug(" > index: " + idx);
64 log.debug(" > fraction: " + fractionIdx);
65 log.debug(" > iteration: " + iter);
66 }
67
58 SQResult[] result = (SQResult[]) res.getData(); 68 SQResult[] result = (SQResult[]) res.getData();
59 SQFractionResult fResult = result[index].getFraction(fractionIdx); 69 SQFractionResult fResult = result[idx].getFraction(fractionIdx);
60 70
61 return fResult.getOutliers(iteration); 71 if (fResult == null) {
72 log.warn("No SQFractionResult at " + idx + "|" + fractionIdx);
73 }
74 else if (log.isDebugEnabled()) {
75 SQ[] outliers = fResult.getOutliers(iter);
76 int num = outliers != null ? outliers.length : 0;
77
78 log.debug("Found " + num + " outliers for iteration " + iter);
79 }
80
81 return fResult.getOutliers(iter);
62 } 82 }
63 83
64 return null; 84 return null;
65 } 85 }
66 86

http://dive4elements.wald.intevation.org