mschaefer@9269: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde mschaefer@9269: * Software engineering by mschaefer@9269: * Björnsen Beratende Ingenieure GmbH mschaefer@9269: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt mschaefer@9257: * mschaefer@9257: * This file is Free Software under the GNU AGPL (>=v3) mschaefer@9257: * and comes with ABSOLUTELY NO WARRANTY! Check out the mschaefer@9257: * documentation coming with Dive4Elements River for details. mschaefer@9257: */ mschaefer@9257: mschaefer@9257: package org.dive4elements.river.artifacts.sinfo.flood_duration; mschaefer@9257: mschaefer@9269: import java.util.List; mschaefer@9266: mschaefer@9257: import org.apache.log4j.Logger; mschaefer@9257: import org.dive4elements.artifactdatabase.state.DefaultFacet; mschaefer@9257: import org.dive4elements.artifacts.Artifact; mschaefer@9257: import org.dive4elements.artifacts.CallContext; mschaefer@9257: import org.dive4elements.river.artifacts.D4EArtifact; mschaefer@9257: import org.dive4elements.river.artifacts.model.CalculationResult; mschaefer@9257: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; mschaefer@9269: import org.dive4elements.river.exports.fixings.FixChartGenerator; mschaefer@9259: import org.dive4elements.river.jfree.RiverAnnotation; mschaefer@9257: import org.dive4elements.river.jfree.StickyAxisAnnotation; mschaefer@9257: mschaefer@9257: /** mschaefer@9257: * Facet to show Main W Values. mschaefer@9257: */ mschaefer@9257: public class FloodDurationMainValuesWFacet extends DefaultFacet { mschaefer@9257: mschaefer@9257: /** Own log. */ mschaefer@9257: private static Logger log = Logger.getLogger(FloodDurationMainValuesWFacet.class); mschaefer@9257: mschaefer@9257: /** Trivial Constructor. */ mschaefer@9257: public FloodDurationMainValuesWFacet(final String name, final String description) { gernotbelger@9302: super(0, name, description); mschaefer@9257: } mschaefer@9257: mschaefer@9257: /** mschaefer@9257: * Returns the data this facet provides. mschaefer@9257: */ mschaefer@9257: @Override mschaefer@9257: public Object getData(final Artifact artifact, final CallContext context) { mschaefer@9257: mschaefer@9257: log.debug("Get data for flood duration main value W data"); mschaefer@9257: mschaefer@9257: final D4EArtifact flys = (D4EArtifact) artifact; mschaefer@9257: mschaefer@9257: final CalculationResult res = (CalculationResult) flys.compute(context, ComputeType.ADVANCE, false); mschaefer@9257: mschaefer@9257: final FloodDurationCalculationResults data = (FloodDurationCalculationResults) res.getData(); mschaefer@9257: mschaefer@9269: final double currentKm = FixChartGenerator.getCurrentKm(context); mschaefer@9257: mschaefer@9269: final List annotations = new FloodDurationCalculation(context).calcMainValueWAnnotations(currentKm, mschaefer@9269: data.getResults().get(0)); mschaefer@9266: mschaefer@9269: return new RiverAnnotation(this.description, annotations); mschaefer@9266: } mschaefer@9266: mschaefer@9257: /** mschaefer@9257: * Create a deep copy of this Facet. mschaefer@9257: * @return a deep copy. mschaefer@9257: */ mschaefer@9257: @Override mschaefer@9257: public FloodDurationMainValuesWFacet deepCopy() { mschaefer@9257: final FloodDurationMainValuesWFacet copy = new FloodDurationMainValuesWFacet(this.name, this.description); mschaefer@9257: copy.set(this); mschaefer@9257: return copy; mschaefer@9257: } mschaefer@9257: }