teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.states; ingo@392: ingo@687: import java.util.List; ingo@687: ingo@392: import org.apache.log4j.Logger; ingo@392: teichmann@5831: import org.dive4elements.artifacts.CallContext; sascha@703: teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; sascha@703: teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; teichmann@5831: import org.dive4elements.river.artifacts.WINFOArtifact; teichmann@5831: import org.dive4elements.river.artifacts.ChartArtifact; ingo@687: teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.artifacts.model.WaterlevelFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.DataFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.ReportFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.EmptyFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.WQKms; teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.resources.Resources; teichmann@5831: teichmann@5865: import org.dive4elements.river.utils.RiverUtils; sascha@703: ingo@392: /** ingo@392: * The final state that will be reached after the discharge curve calculation ingo@392: * mode has been chosen. ingo@392: * ingo@392: * @author Ingo Weinzierl ingo@392: */ ingo@692: public class ComputedDischargeCurveState ingo@692: extends DefaultState ingo@692: implements FacetTypes ingo@692: { teichmann@8202: /** The log that is used in this state. */ teichmann@8202: private static Logger log = ingo@392: Logger.getLogger(ComputedDischargeCurveState.class); ingo@392: felix@5633: sascha@660: public ComputedDischargeCurveState() { ingo@392: } ingo@687: ingo@687: felix@3265: /** felix@3265: * Get computed discharge curve data from cache (if available) or felix@3265: * compute anew. Create Waterlevel and DataFacets. felix@3265: */ ingo@687: @Override sascha@697: public Object computeAdvance( teichmann@5867: D4EArtifact artifact, sascha@697: String hash, sascha@697: CallContext context, sascha@742: List facets, sascha@697: Object old sascha@697: ) { teichmann@8202: log.debug("ComputedDischargeCurveState.computeAdvance"); raimund@2132: if(artifact instanceof WINFOArtifact) { raimund@2132: WINFOArtifact winfo = (WINFOArtifact)artifact; sascha@709: raimund@2132: CalculationResult res = old instanceof CalculationResult raimund@2132: ? (CalculationResult)old raimund@2132: : winfo.getComputedDischargeCurveData(); sascha@709: raimund@2132: WQKms [] wqkms = (WQKms [])res.getData(); sascha@709: raimund@2132: if (facets != null && wqkms.length > 0) { raimund@2132: for (int i = 0; i < wqkms.length; ++i) { raimund@2132: raimund@2132: Object[] args = new Object[] { teichmann@5865: RiverUtils.getRiver(winfo).getName(), felix@5634: // Parse Double to allow i18n. felix@5634: Double.parseDouble(wqkms[i].getName()) raimund@2132: }; raimund@2132: raimund@2132: String name = Resources.getMsg( raimund@2132: context.getMeta(), raimund@2132: "chart.computed.discharge.curve.curve.label", raimund@2132: args); raimund@2132: tom@8856: facets.add( tom@8856: new WaterlevelFacet(i, COMPUTED_DISCHARGE_Q, name)); raimund@2132: facets.add(new WaterlevelFacet(i, AT, "AT data")); raimund@2132: } raimund@2132: raimund@2132: facets.add(new DataFacet(CSV, "CSV data")); raimund@2177: facets.add(new DataFacet(PDF, "PDF data")); raimund@2132: raimund@2132: if (res.getReport().hasProblems()) { raimund@2132: facets.add(new ReportFacet()); raimund@2132: } sascha@697: } sascha@711: raimund@2132: return res; sascha@705: } raimund@2132: else if(artifact instanceof ChartArtifact) { raimund@2132: ChartArtifact chart = (ChartArtifact)artifact; raimund@2132: facets.add(new EmptyFacet()); raimund@2132: return null; raimund@2132: } raimund@2132: return null; ingo@687: } ingo@392: } ingo@392: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :