# HG changeset patch # User Sascha L. Teichmann # Date 1340888847 0 # Node ID 19ce06eb56c31cba884467e3939ac064678e2ef4 # Parent 1b9f791937c3ee68d027d4d4d5f4f61ecc5113ed FixA: Only emit analysis period / discharge sectors which really contain data. flys-artifacts/trunk@4821 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 1b9f791937c3 -r 19ce06eb56c3 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Thu Jun 28 08:16:20 2012 +0000 +++ b/flys-artifacts/ChangeLog Thu Jun 28 13:07:27 2012 +0000 @@ -1,3 +1,12 @@ +2012-06-28 Sascha L. Teichmann + + * src/main/java/de/intevation/flys/artifacts/model/fixings/FixResult.java: + Added method to figure out which discharge sectors of the + the analysis periods really contains data. + + * src/main/java/de/intevation/flys/artifacts/states/fixation/FixationCompute.java: + Only emit analysis period / discharge sectors which really contain data. + 2012-06-28 Sascha L. Teichmann Moved FixationArtifactAccess into own package access because there are @@ -24,7 +33,7 @@ src/main/java/de/intevation/flys/artifacts/access, src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java, src/main/java/de/intevation/flys/artifacts/states/fixation/FixationCompute.java: - Addjusted imports. + Adjusted imports. * src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java: Removed superfluous imports. diff -r 1b9f791937c3 -r 19ce06eb56c3 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixResult.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixResult.java Thu Jun 28 08:16:20 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixResult.java Thu Jun 28 13:07:27 2012 +0000 @@ -29,6 +29,21 @@ this.analysisPeriods = analysisPeriods; } + public int getUsedSectorsInAnalysisPeriods() { + int result = 0; + for (KMIndex.Entry entry: analysisPeriods) { + for (AnalysisPeriod period: entry.getValue()) { + for (int i = 0; i < 4; ++i) { + result |= period.getQSectorAverage(i) != null + ? (1 << i) + : 0; + } + // XXX: Stop early on result == ~(~0 << 4)) ? + } + } + return result; + } + public Parameters getParameters() { return parameters; } diff -r 1b9f791937c3 -r 19ce06eb56c3 flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixationCompute.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixationCompute.java Thu Jun 28 08:16:20 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixationCompute.java Thu Jun 28 13:07:27 2012 +0000 @@ -25,6 +25,7 @@ import de.intevation.flys.artifacts.model.fixings.FixLongitudinalReferenceFacet; import de.intevation.flys.artifacts.model.fixings.FixOutlierFacet; import de.intevation.flys.artifacts.model.fixings.FixReferenceEventsFacet; +import de.intevation.flys.artifacts.model.fixings.FixResult; import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet; import de.intevation.flys.artifacts.resources.Resources; @@ -105,13 +106,9 @@ if (old instanceof CalculationResult) { res = (CalculationResult)old; - log.debug("---------- Using result from Cache --------"); } else { - log.debug("+++++++++ Recalculating +++++++"); - FixCalculation calc = - new FixCalculation(access); - + FixCalculation calc = new FixCalculation(access); res = calc.calculate(); } @@ -122,6 +119,13 @@ if (res.getReport().hasProblems()) { facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id)); } + + FixResult fr = (FixResult)res.getData(); + + if (fr == null) { + return res; + } + facets.add( new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); @@ -129,6 +133,8 @@ int count = access.getAnalysisPeriods().length; + int sectorMask = fr.getUsedSectorsInAnalysisPeriods(); + for (int i = 0; i < count; i++) { DateRange period = access.getAnalysisPeriods()[i]; DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); @@ -139,6 +145,11 @@ j <= access.getQSectorEnd().intValue(); j++) { + // Only emit facet for sectors that really have data. + if ((sectorMask & (1 << j)) == 0) { + continue; + } + String sector = ""; switch (j) { case 0: sector = "[0 - (MNQ+MQ)/2)"; break; @@ -164,6 +175,7 @@ new FixLongitudinalAnalysisFacet(facetNdx, FIX_SECTOR_AVERAGE_LS + "_" + sectorNdx, description)); + // TODO: i18n String dev = "Abweichung: " + description; facets.add( new FixLongitudinalAnalysisFacet(facetNdx,