Mercurial > dive4elements > river
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 |