Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQOutlierFacet.java Wed Jun 20 10:56:08 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQOutlierFacet.java Wed Jun 20 11:04:24 2012 +0000 @@ -22,8 +22,9 @@ private static final Logger log = Logger.getLogger(SQOutlierFacet.class); + public static final int BITMASK_ITERATION = (1 << 16) - 1; - private int iteration; + private int fractionIdx; @@ -34,7 +35,6 @@ public SQOutlierFacet( int idx, int fractionIdx, - int iteration, String name, String description, String hash, @@ -55,10 +55,30 @@ CalculationResult res = (CalculationResult) flys.compute( context, ComputeType.ADVANCE, false); + int idx = this.index >> 16; + int iter = this.index & BITMASK_ITERATION; + + if (log.isDebugEnabled()) { + log.debug("Fetch data for index : " + this.index); + log.debug(" > index: " + idx); + log.debug(" > fraction: " + fractionIdx); + log.debug(" > iteration: " + iter); + } + SQResult[] result = (SQResult[]) res.getData(); - SQFractionResult fResult = result[index].getFraction(fractionIdx); + SQFractionResult fResult = result[idx].getFraction(fractionIdx); - return fResult.getOutliers(iteration); + if (fResult == null) { + log.warn("No SQFractionResult at " + idx + "|" + fractionIdx); + } + else if (log.isDebugEnabled()) { + SQ[] outliers = fResult.getOutliers(iter); + int num = outliers != null ? outliers.length : 0; + + log.debug("Found " + num + " outliers for iteration " + iter); + } + + return fResult.getOutliers(iter); } return null;