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