mschaefer@9157: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde mschaefer@9157: * Software engineering by mschaefer@9157: * Björnsen Beratende Ingenieure GmbH mschaefer@9157: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt mschaefer@9157: * mschaefer@9157: * This file is Free Software under the GNU AGPL (>=v3) mschaefer@9157: * and comes with ABSOLUTELY NO WARRANTY! Check out the mschaefer@9157: * documentation coming with Dive4Elements River for details. mschaefer@9157: */ mschaefer@9157: mschaefer@9157: package org.dive4elements.river.artifacts.sinfo.collision; mschaefer@9157: mschaefer@9157: import org.dive4elements.artifactdatabase.state.Facet; mschaefer@9157: import org.dive4elements.artifacts.Artifact; mschaefer@9157: import org.dive4elements.artifacts.CallContext; mschaefer@9157: import org.dive4elements.river.artifacts.D4EArtifact; mschaefer@9157: import org.dive4elements.river.artifacts.model.CalculationResult; mschaefer@9157: import org.dive4elements.river.artifacts.model.DataFacet; mschaefer@9157: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; mschaefer@9157: mschaefer@9157: /** mschaefer@9157: * Facet for calculated river bed collision counts mschaefer@9157: * mschaefer@9157: * @author Matthias Schäfer mschaefer@9157: */ gernotbelger@9205: // FIXME: remove mschaefer@9157: public class CollisionCalcFacet extends DataFacet { mschaefer@9157: mschaefer@9157: private static final long serialVersionUID = 1; mschaefer@9157: mschaefer@9157: public CollisionCalcFacet() { mschaefer@9157: // required for clone operation deepCopy() mschaefer@9157: } mschaefer@9157: mschaefer@9157: public CollisionCalcFacet(final int idx, final String name, final String description, final String yAxisLabelKey, final ComputeType type, mschaefer@9157: final String stateId, final String hash) { mschaefer@9157: super(idx, name, description, type, hash, stateId); mschaefer@9157: this.metaData.put("X", "sinfo.chart.km.xaxis.label"); mschaefer@9157: this.metaData.put("Y", yAxisLabelKey); mschaefer@9157: } mschaefer@9157: mschaefer@9157: @Override mschaefer@9157: public Object getData(final Artifact artifact, final CallContext context) { mschaefer@9157: mschaefer@9157: final D4EArtifact flys = (D4EArtifact) artifact; mschaefer@9157: mschaefer@9157: final CalculationResult res = (CalculationResult) flys.compute(context, this.hash, this.stateId, this.type, false); mschaefer@9157: mschaefer@9157: final CollisionCalculationResults data = (CollisionCalculationResults) res.getData(); mschaefer@9157: mschaefer@9204: return data.getResults().get(0); // first result is always the one and only CollisionCalcOverviewResult mschaefer@9157: } mschaefer@9157: mschaefer@9157: /** Copy deeply. */ mschaefer@9157: @Override mschaefer@9157: public Facet deepCopy() { mschaefer@9157: // FIXME: why not simply use the full constructor instead? mschaefer@9157: final CollisionCalcFacet copy = new CollisionCalcFacet(); mschaefer@9157: // FIXME: why does DataFacet does not override set? Bad access to variables of parent! mschaefer@9157: copy.set(this); mschaefer@9157: copy.type = this.type; mschaefer@9157: copy.hash = this.hash; mschaefer@9157: copy.stateId = this.stateId; mschaefer@9157: return copy; mschaefer@9157: } mschaefer@9157: }