mschaefer@9295: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde mschaefer@9295: * Software engineering by Intevation GmbH mschaefer@9295: * mschaefer@9295: * This file is Free Software under the GNU AGPL (>=v3) mschaefer@9295: * and comes with ABSOLUTELY NO WARRANTY! Check out the mschaefer@9295: * documentation coming with Dive4Elements River for details. mschaefer@9295: */ mschaefer@9295: mschaefer@9295: package org.dive4elements.river.artifacts.uinfo.salix; mschaefer@9295: mschaefer@9295: import org.apache.log4j.Logger; mschaefer@9295: import org.dive4elements.artifactdatabase.state.Facet; mschaefer@9295: import org.dive4elements.artifacts.Artifact; mschaefer@9295: import org.dive4elements.artifacts.CallContext; mschaefer@9295: import org.dive4elements.river.artifacts.D4EArtifact; mschaefer@9295: import org.dive4elements.river.artifacts.common.AbstractCalculationResult; mschaefer@9295: import org.dive4elements.river.artifacts.common.AbstractCalculationResults; mschaefer@9295: import org.dive4elements.river.artifacts.model.CalculationResult; mschaefer@9295: import org.dive4elements.river.artifacts.model.DataFacet; mschaefer@9295: mschaefer@9295: /** mschaefer@9316: * Facet of the U-Info salix mnw-mw curve. mschaefer@9295: */ mschaefer@9295: public class SalixMnwMwResultFacet extends DataFacet { mschaefer@9295: mschaefer@9295: private static final long serialVersionUID = 1L; mschaefer@9295: mschaefer@9295: private static Logger log = Logger.getLogger(SalixMnwMwResultFacet.class); mschaefer@9295: mschaefer@9295: private int resultIndex; mschaefer@9295: mschaefer@9295: public SalixMnwMwResultFacet() { mschaefer@9295: // required for clone operation deepCopy() mschaefer@9295: } mschaefer@9295: mschaefer@9295: public SalixMnwMwResultFacet(final String name, final String description) { mschaefer@9295: super(name, description); mschaefer@9295: } mschaefer@9295: mschaefer@9295: @Override mschaefer@9295: public final Object getData(final Artifact artifact, final CallContext context) { mschaefer@9295: mschaefer@9295: log.debug("Get data for result at index: " + this.resultIndex); mschaefer@9295: mschaefer@9295: final D4EArtifact flys = (D4EArtifact) artifact; mschaefer@9295: mschaefer@9295: final CalculationResult res = (CalculationResult) flys.compute(context, this.hash, this.stateId, this.type, false); mschaefer@9295: mschaefer@9295: final AbstractCalculationResults data = (AbstractCalculationResults) res.getData(); mschaefer@9295: mschaefer@9295: return data.getResults().get(this.resultIndex); mschaefer@9295: } mschaefer@9295: mschaefer@9295: /** Copy deeply. */ mschaefer@9295: @Override mschaefer@9295: public Facet deepCopy() { mschaefer@9295: // FIXME: why not simply use the full constructor instead? mschaefer@9295: final SalixMnwMwResultFacet copy = new SalixMnwMwResultFacet(); mschaefer@9295: // FIXME: why does DataFacet does not override set? Bad access to variables of parent! mschaefer@9295: copy.set(this); mschaefer@9295: copy.type = this.type; mschaefer@9295: copy.hash = this.hash; mschaefer@9295: copy.stateId = this.stateId; mschaefer@9295: return copy; mschaefer@9295: } mschaefer@9295: }