Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java @ 4232:b3aa91e45010
Implemented the Q evaluation mode for historical discharge calculations.
Added the calculation itself, created new facets, added themes and improved the chart generator
to support the new facets.
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 24 Oct 2012 07:25:35 +0200 |
parents | d7db9baa4e62 |
children | 49cb65d5932d |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java Tue Oct 23 16:07:39 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java Wed Oct 24 07:25:35 2012 +0200 @@ -2,24 +2,22 @@ import java.util.List; +import org.apache.log4j.Logger; import org.w3c.dom.Element; -import org.apache.log4j.Logger; - +import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; - import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; - -import de.intevation.artifactdatabase.state.Facet; - import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.WINFOArtifact; +import de.intevation.flys.artifacts.access.HistoricalDischargeAccess; +import de.intevation.flys.artifacts.access.HistoricalDischargeAccess.EvaluationMode; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.DataFacet; import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.HistoricalDischargeDifferenceFacet; import de.intevation.flys.artifacts.model.HistoricalDischargeFacet; -import de.intevation.flys.artifacts.model.HistoricalDischargeDifferenceFacet; import de.intevation.flys.artifacts.model.HistoricalWQTimerange; import de.intevation.flys.artifacts.model.ReportFacet; import de.intevation.flys.artifacts.model.WQTimerange; @@ -27,45 +25,31 @@ /** * State to calculate historical discharge curves. + * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ -public class HistoricalDischargeComputeState -extends DefaultState -implements FacetTypes -{ +public class HistoricalDischargeComputeState extends DefaultState implements + FacetTypes { - private static final Logger logger = - Logger.getLogger(HistoricalDischargeComputeState.class); + private static final Logger logger = Logger + .getLogger(HistoricalDischargeComputeState.class); public static final String DEFAULT_UNIT = "cm"; - @Override - protected void appendItems( - Artifact artifact, - ElementCreator creator, - String name, - CallContext context, - Element select - ) { + protected void appendItems(Artifact artifact, ElementCreator creator, + String name, CallContext context, Element select) { // TODO IMPLEMENT ME } - @Override - public Object computeAdvance( - FLYSArtifact artifact, - String hash, - CallContext context, - List<Facet> facets, - Object old - ) { + public Object computeAdvance(FLYSArtifact artifact, String hash, + CallContext context, List<Facet> facets, Object old) { logger.debug("HistoricalDischargeComputeState.computeAdvance"); WINFOArtifact winfo = (WINFOArtifact) artifact; - CalculationResult res = old instanceof CalculationResult - ? (CalculationResult) old + CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old : winfo.getHistoricalDischargeData(); if (facets == null) { @@ -82,60 +66,68 @@ return res; } - facets.add( - new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); + facets + .add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); - facets.add( - new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); + facets + .add(new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); - prepareFacets(facets, data); + prepareFacets(facets, data, new HistoricalDischargeAccess(artifact)); return res; } - - protected void prepareFacets(List<Facet> facets, WQTimerange[] wqts) { + protected void prepareFacets(List<Facet> facets, WQTimerange[] wqts, + HistoricalDischargeAccess access) { int i = 0; - for (WQTimerange wqt: wqts) { + for (WQTimerange wqt : wqts) { logger.debug("Prepare facet for: " + wqt.getName()); - // TODO CREATE BETTER TITLE FOR FACETS - - facets.add(new HistoricalDischargeFacet( - i, - HISTORICAL_DISCHARGE_Q, - createFacetTitle(wqt))); + EvaluationMode evalMode = access.getEvaluationMode(); + if (evalMode == EvaluationMode.W) { + facets.add(new HistoricalDischargeFacet(i, + HISTORICAL_DISCHARGE_Q, createFacetTitle(wqt))); - if (wqt instanceof HistoricalWQTimerange) { - logger.debug("Create another facet for historical differences."); + if (wqt instanceof HistoricalWQTimerange) { + logger + .debug("Create another facet for historical differences."); - facets.add(new HistoricalDischargeDifferenceFacet( - i, - HISTORICAL_DISCHARGE_Q_DIFF, - "DIFF: " + wqt.getName())); + // TODO CREATE BETTER TITLE FOR FACETS + facets.add(new HistoricalDischargeDifferenceFacet(i, + HISTORICAL_DISCHARGE_Q_DIFF, "DIFF: " + wqt.getName())); + } + } + else { + facets.add(new HistoricalDischargeFacet(i, + HISTORICAL_DISCHARGE_W, createFacetTitle(wqt))); + + if (wqt instanceof HistoricalWQTimerange) { + logger + .debug("Create another facet for historical differences."); + + // TODO CREATE BETTER TITLE FOR FACETS + facets.add(new HistoricalDischargeDifferenceFacet(i, + HISTORICAL_DISCHARGE_W_DIFF, "DIFF: " + wqt.getName())); + } } i++; } } - protected String createFacetTitle(WQTimerange wqt) { String name = wqt.getName(); - return name != null && name.indexOf("W") >= 0 - ? createFacetTitleW(wqt) + return name != null && name.indexOf("W") >= 0 ? createFacetTitleW(wqt) : createFacetTitleQ(wqt); } - protected String createFacetTitleW(WQTimerange wqt) { String name = wqt.getName(); return name + " " + DEFAULT_UNIT; } - protected String createFacetTitleQ(WQTimerange wqt) { return wqt.getName(); }