raimund@3169: package de.intevation.flys.artifacts.model.fixings; raimund@3169: raimund@3169: import java.util.Iterator; raimund@3169: raimund@3169: import org.apache.log4j.Logger; raimund@3169: raimund@3169: import de.intevation.artifacts.Artifact; raimund@3169: import de.intevation.artifacts.CallContext; raimund@3169: raimund@3169: import de.intevation.flys.artifacts.FLYSArtifact; raimund@3169: import de.intevation.flys.artifacts.FixationArtifactAccess; raimund@3169: raimund@3169: import de.intevation.flys.artifacts.model.FacetTypes; raimund@3169: import de.intevation.flys.artifacts.model.DataFacet; raimund@3169: import de.intevation.flys.artifacts.model.CalculationResult; raimund@3169: import de.intevation.flys.artifacts.model.Parameters; raimund@3169: raimund@3169: import de.intevation.flys.utils.KMIndex; raimund@3169: raimund@3169: import de.intevation.flys.artifacts.states.DefaultState.ComputeType; raimund@3169: raimund@3169: raimund@3169: /** raimund@3169: * Facet to show average W values for Q sectors. raimund@3169: * raimund@3169: * @author Raimund Renkert raimund@3169: */ raimund@3169: public class FixLongitudinalDeviationFacet raimund@3169: extends DataFacet raimund@3169: implements FacetTypes { raimund@3169: raimund@3169: /** House logger. */ raimund@3169: private static Logger logger = Logger.getLogger(FixLongitudinalDeviationFacet.class); raimund@3169: raimund@3169: /** Trivial Constructor. */ raimund@3169: public FixLongitudinalDeviationFacet() { raimund@3169: } raimund@3169: raimund@3169: raimund@3169: public FixLongitudinalDeviationFacet( raimund@3169: int ndx, raimund@3169: String name, raimund@3169: String description) raimund@3169: { raimund@3169: super( raimund@3169: ndx, raimund@3169: name, raimund@3169: description, raimund@3169: ComputeType.ADVANCE, raimund@3169: null, raimund@3169: null); raimund@3169: } raimund@3169: raimund@3169: raimund@3169: /** raimund@3169: * Returns the data this facet requires. raimund@3169: * raimund@3169: * @param artifact the owner artifact. raimund@3169: * @param context the CallContext. raimund@3169: * raimund@3169: * @return the data as KMIndex. raimund@3169: */ raimund@3169: @Override raimund@3169: public Object getData(Artifact artifact, CallContext context) { raimund@3169: logger.debug("FixLongitudinalDeviationFacet.getData"); raimund@3169: raimund@3169: if (artifact instanceof FLYSArtifact) { raimund@3169: FLYSArtifact flys = (FLYSArtifact)artifact; raimund@3169: FixationArtifactAccess access = new FixationArtifactAccess(flys); raimund@3169: raimund@3169: CalculationResult res = raimund@3169: (CalculationResult) flys.compute(context, raimund@3169: ComputeType.ADVANCE, raimund@3169: false); raimund@3169: raimund@3169: FixResult result = (FixResult) res.getData(); raimund@3169: raimund@3169: KMIndex kmPeriods = result.getAnalysisPeriods(); raimund@3169: raimund@3169: if (kmPeriods == null) { raimund@3169: logger.warn("No analysis periods found."); raimund@3169: return null; raimund@3169: } raimund@3169: raimund@3169: Parameters params = result.getParameters(); raimund@3169: raimund@3169: KMIndex kmIndex = new KMIndex(); raimund@3169: for (KMIndex.Entry entry: kmPeriods) { raimund@3169: double km = entry.getKm(); raimund@3169: double[] stdDev = raimund@3169: params.interpolate("km", km, new String[] {"std-dev"}); raimund@3169: raimund@3169: if(stdDev == null) { raimund@3169: logger.warn("getData: stdDev == null"); raimund@3169: continue; raimund@3169: } raimund@3169: kmIndex.add(km, stdDev); raimund@3169: } raimund@3169: raimund@3169: return kmIndex; raimund@3169: } raimund@3169: else { raimund@3169: logger.warn("Artifact is no instance of FLYSArtifact."); raimund@3169: return null; raimund@3169: } raimund@3169: } raimund@3169: raimund@3169: raimund@3169: /** raimund@3169: * Create a deep copy of this Facet. raimund@3169: * @return a deep copy. raimund@3169: */ raimund@3169: @Override raimund@3169: public FixLongitudinalDeviationFacet deepCopy() { raimund@3169: FixLongitudinalDeviationFacet copy = new FixLongitudinalDeviationFacet(); raimund@3169: copy.set(this); raimund@3169: return copy; raimund@3169: } raimund@3169: } raimund@3169: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :