raimund@3131: package de.intevation.flys.artifacts.model.fixings; raimund@3131: raimund@3131: import de.intevation.artifacts.Artifact; raimund@3131: import de.intevation.artifacts.CallContext; raimund@3131: raimund@3131: import de.intevation.flys.artifacts.FLYSArtifact; raimund@3131: import de.intevation.flys.artifacts.FixationArtifactAccess; raimund@3131: raimund@3131: import de.intevation.flys.artifacts.model.CalculationResult; raimund@3131: import de.intevation.flys.artifacts.model.DataFacet; raimund@3131: import de.intevation.flys.artifacts.model.FacetTypes; raimund@3131: import de.intevation.flys.artifacts.model.Parameters; raimund@3131: raimund@3131: import de.intevation.flys.artifacts.states.DefaultState.ComputeType; raimund@3131: raimund@3131: import org.apache.log4j.Logger; raimund@3131: raimund@3131: raimund@3131: /** raimund@3131: * Facet to show the W|Q values. raimund@3131: * raimund@3131: * @author Raimund Renkert raimund@3131: */ raimund@3131: public class FixDeviationFacet raimund@3131: extends DataFacet raimund@3131: implements FacetTypes { raimund@3131: raimund@3131: /** House logger. */ raimund@3131: private static Logger logger = Logger.getLogger(FixDeviationFacet.class); raimund@3131: raimund@3131: raimund@3131: /** Trivial Constructor. */ raimund@3131: public FixDeviationFacet() { raimund@3131: } raimund@3131: raimund@3131: raimund@3131: /** raimund@3131: * @param name raimund@3131: */ raimund@3131: public FixDeviationFacet(String name, String description) { raimund@3131: super(0, name, description, ComputeType.ADVANCE, null, null); raimund@3131: } raimund@3131: raimund@3131: raimund@3131: /** raimund@3131: * Returns the data this facet requires. raimund@3131: * raimund@3131: * @param artifact the owner artifact. raimund@3131: * @param context the CallContext (ignored). raimund@3131: * raimund@3131: * @return the data. raimund@3131: */ raimund@3131: @Override raimund@3131: public Object getData(Artifact artifact, CallContext context) { raimund@3131: logger.debug("FixDeviationFacet.getData"); raimund@3131: if (artifact instanceof FLYSArtifact) { raimund@3131: FLYSArtifact flys = (FLYSArtifact)artifact; raimund@3131: FixationArtifactAccess access = new FixationArtifactAccess(flys); raimund@3131: raimund@3131: CalculationResult res = raimund@3131: (CalculationResult) flys.compute(context, raimund@3131: ComputeType.ADVANCE, raimund@3131: false); raimund@3131: raimund@3131: FixResult result = (FixResult) res.getData(); raimund@3131: double currentKm = raimund@3131: ((Double)context.getContextValue("currentKm")).doubleValue(); raimund@3131: raimund@3131: Parameters params = result.getParameters(); raimund@3131: raimund@3131: double[] stdDev = raimund@3131: params.interpolate("km", currentKm, new String[] {"std-dev"}); raimund@3131: raimund@3131: if(stdDev == null) { raimund@3131: logger.warn("getData: stdDev == null at km " + currentKm); raimund@3131: return null; raimund@3131: } raimund@3131: raimund@3131: return stdDev; raimund@3131: } raimund@3131: else { raimund@3131: logger.debug("Not an instance of FixationArtifact."); raimund@3131: return null; raimund@3131: } raimund@3131: } raimund@3131: raimund@3131: raimund@3131: /** raimund@3131: * Create a deep copy of this Facet. raimund@3131: * @return a deep copy. raimund@3131: */ raimund@3131: @Override raimund@3131: public FixDerivateFacet deepCopy() { raimund@3131: FixDerivateFacet copy = new FixDerivateFacet(); raimund@3131: copy.set(this); raimund@3131: return copy; raimund@3131: } raimund@3131: } raimund@3131: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :