Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java @ 4173:7d4480c0e68e
Allow users to select the current relevant discharge table in historical discharge table calculattion.
In addition to this, the discharge tables in the helper panel displayed in the client is ordered in time.
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 18 Oct 2012 12:13:48 +0200 |
parents | d7db9baa4e62 |
children | b3aa91e45010 |
line wrap: on
line source
package de.intevation.flys.artifacts.states; import java.util.List; import org.w3c.dom.Element; import org.apache.log4j.Logger; 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.model.CalculationResult; import de.intevation.flys.artifacts.model.DataFacet; import de.intevation.flys.artifacts.model.FacetTypes; 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; /** * State to calculate historical discharge curves. * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class HistoricalDischargeComputeState extends DefaultState implements FacetTypes { 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 ) { // TODO IMPLEMENT ME } @Override 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 : winfo.getHistoricalDischargeData(); if (facets == null) { return res; } if (res.getReport().hasProblems()) { facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id)); } WQTimerange[] data = (WQTimerange[]) res.getData(); if (data == null || data.length == 0) { logger.warn("Historical Discharge calculation has no results!"); return res; } facets.add( new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); facets.add( new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); prepareFacets(facets, data); return res; } protected void prepareFacets(List<Facet> facets, WQTimerange[] wqts) { int i = 0; 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))); if (wqt instanceof HistoricalWQTimerange) { logger.debug("Create another facet for historical differences."); facets.add(new HistoricalDischargeDifferenceFacet( i, HISTORICAL_DISCHARGE_Q_DIFF, "DIFF: " + wqt.getName())); } i++; } } protected String createFacetTitle(WQTimerange wqt) { String name = wqt.getName(); 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(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :