teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5863: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5863: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.model.sq; sascha@3552: teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; sascha@3552: teichmann@5831: import org.dive4elements.artifacts.Artifact; teichmann@5831: import org.dive4elements.artifacts.CallContext; sascha@3552: teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; teichmann@5831: import org.dive4elements.river.artifacts.model.DataFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; sascha@3552: sascha@3552: import org.apache.log4j.Logger; sascha@3552: sascha@3552: public class SQOutlierMeasurementFacet sascha@3552: extends DataFacet sascha@3552: implements FacetTypes sascha@3552: { sascha@3552: private static final Logger log = sascha@3552: Logger.getLogger(SQOutlierMeasurementFacet.class); sascha@3552: sascha@3552: private int fractionIdx; sascha@3552: sascha@3552: public static final int BITMASK_ITERATION = (1 << 16) - 1; sascha@3552: sascha@3552: public SQOutlierMeasurementFacet() { sascha@3552: } sascha@3552: sascha@3552: public SQOutlierMeasurementFacet( sascha@3552: int idx, sascha@3552: int fractionIdx, sascha@3552: String name, sascha@3552: String description, sascha@3552: String hash, sascha@3552: String stateId sascha@3552: ) { sascha@3552: super(idx, name, description, ComputeType.ADVANCE, hash, stateId); sascha@3552: this.fractionIdx = fractionIdx; sascha@3552: } sascha@3552: sascha@3552: @Override sascha@3552: public Object getData(Artifact artifact, CallContext context) { sascha@3552: log.debug("SQOutlierMeasurementFacet.getData"); sascha@3552: teichmann@5867: if (!(artifact instanceof D4EArtifact)) { sascha@3552: return null; sascha@3552: } sascha@3552: teichmann@5867: D4EArtifact flys = (D4EArtifact) artifact; sascha@3552: sascha@3552: CalculationResult res = (CalculationResult) flys.compute( sascha@3552: context, ComputeType.ADVANCE, false); sascha@3552: sascha@3552: int idx = this.index >> 16; sascha@3552: int iter = this.index & BITMASK_ITERATION; sascha@3552: sascha@3552: SQResult[] result = (SQResult[]) res.getData(); sascha@3552: SQFractionResult fResult = result[idx].getFraction(fractionIdx); sascha@3552: sascha@3552: return fResult.getMeasurements(iter); sascha@3552: } sascha@3552: sascha@3552: @Override sascha@3552: public Facet deepCopy() { sascha@3552: SQOutlierMeasurementFacet copy = new SQOutlierMeasurementFacet(); sascha@3552: copy.set(this); sascha@3552: return copy; sascha@3552: } sascha@3552: } sascha@3552: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :