gernotbelger@9050: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9050: * Software engineering by Intevation GmbH gernotbelger@9050: * gernotbelger@9050: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9050: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9050: * documentation coming with Dive4Elements River for details. gernotbelger@9050: */ gernotbelger@9050: gernotbelger@9054: package org.dive4elements.river.artifacts.sinfo.flood_duration; gernotbelger@9050: gernotbelger@9050: import java.util.List; gernotbelger@9050: gernotbelger@9050: import org.dive4elements.artifactdatabase.state.Facet; gernotbelger@9050: import org.dive4elements.artifacts.CallContext; gernotbelger@9050: import org.dive4elements.river.artifacts.ChartArtifact; gernotbelger@9050: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9050: import org.dive4elements.river.artifacts.model.CalculationResult; gernotbelger@9050: import org.dive4elements.river.artifacts.model.EmptyFacet; gernotbelger@9050: import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; gernotbelger@9050: import org.dive4elements.river.artifacts.states.DefaultState; gernotbelger@9050: gernotbelger@9050: /** State in which a waterlevel has been calculated. */ gernotbelger@9054: public class FloodDurationState extends DefaultState { gernotbelger@9050: gernotbelger@9050: /// ** The log that is used in this state. */ gernotbelger@9050: // private static Logger log = Logger.getLogger(FlowDepthState.class); gernotbelger@9050: gernotbelger@9050: private static final long serialVersionUID = 1L; gernotbelger@9050: gernotbelger@9050: /** gernotbelger@9050: * From this state can only be continued trivially. gernotbelger@9050: */ gernotbelger@9050: @Override gernotbelger@9050: protected String getUIProvider() { gernotbelger@9050: return "continue"; gernotbelger@9050: } gernotbelger@9050: gernotbelger@9050: @Override gernotbelger@9050: public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List facets, final Object old) { gernotbelger@9050: if (artifact instanceof ChartArtifact) { gernotbelger@9050: facets.add(new EmptyFacet()); gernotbelger@9050: return null; gernotbelger@9050: } gernotbelger@9050: gernotbelger@9050: return compute((SINFOArtifact) artifact, context, hash, facets, old); gernotbelger@9050: } gernotbelger@9050: gernotbelger@9050: @Override gernotbelger@9050: public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List facets, final Object old) { gernotbelger@9050: if (artifact instanceof ChartArtifact) { gernotbelger@9050: facets.add(new EmptyFacet()); gernotbelger@9050: return null; gernotbelger@9050: } gernotbelger@9050: return compute((SINFOArtifact) artifact, context, hash, facets, old); gernotbelger@9050: } gernotbelger@9050: gernotbelger@9050: /** gernotbelger@9050: * Compute result or returned object from cache, create facets. gernotbelger@9050: * gernotbelger@9050: * @param old gernotbelger@9050: * Object that was cached. gernotbelger@9050: */ gernotbelger@9050: private Object compute(final SINFOArtifact sinfo, final CallContext context, final String hash, final List facets, final Object old) { gernotbelger@9050: gernotbelger@9050: final CalculationResult res = doCompute(sinfo, context, old); gernotbelger@9050: gernotbelger@9050: if (facets == null) gernotbelger@9050: return res; gernotbelger@9050: // gernotbelger@9050: // final FlowDepthCalculationResults results = (FlowDepthCalculationResults) res.getData(); gernotbelger@9050: // gernotbelger@9050: // /* add themes for chart, for each result */ gernotbelger@9050: // final List resultList = results.getResults(); gernotbelger@9050: // for (int index = 0; index < resultList.size(); index++) { gernotbelger@9050: // gernotbelger@9050: // final FlowDepthCalculationResult result = resultList.get(index); gernotbelger@9050: // gernotbelger@9050: // /* filtered (zoom dependent mean) flow depth */ gernotbelger@9050: // facets.add(FlowDepthProcessor.createFlowDepthFilteredFacet(context, hash, this.id, result, index)); gernotbelger@9050: // facets.add(FlowDepthProcessor.createFlowDepthRawFacet(context, hash, this.id, result, index)); gernotbelger@9050: // gernotbelger@9050: // if (results.isUseTkh()) { gernotbelger@9050: // /* filtered (zoom dependent mean) flow depth including tkh */ gernotbelger@9050: // facets.add(FlowDepthProcessor.createFlowDepthTkhFilteredFacet(context, hash, this.id, result, index)); gernotbelger@9050: // facets.add(FlowDepthProcessor.createFlowDepthTkhRawFacet(context, hash, this.id, result, index)); gernotbelger@9050: // gernotbelger@9050: // facets.add(TkhProcessor.createTkhFacet(context, hash, this.id, result, index)); gernotbelger@9050: // } gernotbelger@9050: // } gernotbelger@9050: gernotbelger@9050: // if (!resultList.isEmpty()) { gernotbelger@9050: // final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id); gernotbelger@9050: // final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id); gernotbelger@9050: // gernotbelger@9050: // facets.add(csv); gernotbelger@9050: // facets.add(pdf); gernotbelger@9050: // } gernotbelger@9050: // gernotbelger@9050: // final Calculation report = res.getReport(); gernotbelger@9050: // gernotbelger@9050: // if (report.hasProblems()) { gernotbelger@9050: // facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id)); gernotbelger@9050: // } gernotbelger@9050: gernotbelger@9050: return res; gernotbelger@9050: } gernotbelger@9050: gernotbelger@9050: private CalculationResult doCompute(final SINFOArtifact sinfo, final CallContext context, final Object old) { gernotbelger@9050: if (old instanceof CalculationResult) gernotbelger@9050: return (CalculationResult) old; gernotbelger@9050: gernotbelger@9050: return null; // new FlowDepthCalculation(context).calculate(sinfo); gernotbelger@9050: } gernotbelger@9050: }