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; ingo@3101: teichmann@5831: import org.dive4elements.river.artifacts.model.Parameters; ingo@3101: sascha@3304: import java.io.Serializable; sascha@3304: sascha@3304: import java.util.List; ingo@3101: sascha@3552: public class SQFractionResult sascha@3552: implements Serializable sascha@3552: { sascha@3552: public static class Iteration sascha@3552: implements Serializable sascha@3552: { sascha@3552: protected Parameters parameters; sascha@3552: protected SQ [] measurements; sascha@3552: protected SQ [] outliers; ingo@3101: sascha@3552: public Iteration() { sascha@3552: } sascha@3552: sascha@3552: public Iteration( sascha@3552: Parameters parameters, sascha@3552: SQ [] measurements, sascha@3552: SQ [] outliers sascha@3552: ) { sascha@3552: this.parameters = parameters; sascha@3552: this.measurements = measurements; sascha@3552: this.outliers = outliers; sascha@3552: } sascha@3552: sascha@3552: public Parameters getParameters() { sascha@3552: return parameters; sascha@3552: } sascha@3552: sascha@3552: public void setParameters(Parameters parameters) { sascha@3552: this.parameters = parameters; sascha@3552: } sascha@3552: sascha@3552: public SQ [] getMeasurements() { sascha@3552: return measurements; sascha@3552: } sascha@3552: sascha@3552: public void setMeasurements(SQ [] measurements) { sascha@3552: this.measurements = measurements; sascha@3552: } sascha@3552: sascha@3552: public SQ [] getOutliers() { sascha@3552: return outliers; sascha@3552: } sascha@3552: sascha@3552: public void setOutliers(SQ [] outliers) { sascha@3552: this.outliers = outliers; sascha@3552: } sascha@3552: sascha@3552: public boolean isValid() { sascha@3552: return parameters != null sascha@3552: && measurements != null sascha@3552: && outliers != null; sascha@3552: } sascha@3552: sascha@3552: public int numOutliers() { sascha@3552: return outliers != null sascha@3552: ? outliers.length sascha@3552: : 0; sascha@3552: } sascha@3552: sascha@3552: public int numMeasurements() { sascha@3552: return measurements != null sascha@3552: ? measurements.length sascha@3552: : 0; sascha@3552: } sascha@3552: } // class Iteration sascha@3552: sascha@3552: protected SQ [] measurements; sascha@3552: protected List iterations; ingo@3101: ingo@3101: public SQFractionResult() { ingo@3101: } ingo@3101: ingo@3101: public SQFractionResult( sascha@3552: SQ [] measurements, sascha@3552: List iterations ingo@3101: ) { ingo@3101: this.measurements = measurements; sascha@3552: this.iterations = iterations; ingo@3101: } ingo@3101: sascha@3552: public SQ [] getMeasurements() { ingo@3101: return measurements; ingo@3101: } ingo@3101: sascha@3552: public void setMeasurements(SQ [] measurements) { ingo@3101: this.measurements = measurements; ingo@3101: } ingo@3101: sascha@3552: public List getIterations() { sascha@3552: return iterations; ingo@3101: } ingo@3101: sascha@3552: public void setIterations(List iterations) { sascha@3552: this.iterations = iterations; ingo@3101: } ingo@3101: sascha@3552: public double [] getQExtent() { sascha@3552: return getQExtent(new double[2]); sascha@3552: } ingo@3101: sascha@3552: public double [] getQExtent(double extent[]) { sascha@3552: extent[0] = Double.MAX_VALUE; sascha@3552: extent[1] = -Double.MIN_VALUE; sascha@3552: sascha@3552: for (SQ sq: measurements) { sascha@3552: double q = sq.getQ(); sascha@3552: if (q < extent[0]) extent[0] = q; sascha@3552: if (q > extent[1]) extent[1] = q; ingo@3101: } ingo@3101: sascha@3552: return extent; ingo@3101: } ingo@3101: sascha@3552: public int numIterations() { sascha@3552: return iterations != null ? iterations.size() : 0; ingo@3101: } ingo@3105: sascha@3552: public Parameters getParameters() { sascha@3552: return iterations != null && !iterations.isEmpty() sascha@3552: ? iterations.get(iterations.size()-1).getParameters() sascha@3552: : null; sascha@3552: } sascha@3552: sascha@3552: public SQ [] getOutliers(int index) { sascha@3552: return index >= 0 && index < iterations.size() sascha@3552: ? iterations.get(index).getOutliers() sascha@3552: : null; sascha@3552: } sascha@3552: sascha@3552: public Parameters getParameters(int index) { sascha@3552: return index >= 0 && index < iterations.size() sascha@3552: ? iterations.get(index).getParameters() sascha@3552: : null; sascha@3552: } sascha@3552: sascha@3552: public SQ [] getMeasurements(int index) { sascha@3552: return index >= 0 && index < iterations.size() sascha@3552: ? iterations.get(index).getMeasurements() sascha@3552: : null; sascha@3552: } sascha@3552: sascha@3552: public int totalNumOutliers() { sascha@3552: int sum = 0; sascha@3552: if (iterations != null) { sascha@3552: for (Iteration iteration: iterations) { sascha@3552: sum += iteration.numOutliers(); sascha@3552: } sascha@3552: } sascha@3552: return sum; sascha@3552: } sascha@3552: sascha@3552: public int numMeasurements() { sascha@3392: return measurements != null sascha@3392: ? measurements.length sascha@3392: : 0; sascha@3392: } ingo@3101: } ingo@3101: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :