gernotbelger@8915: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8915: * Software engineering by gernotbelger@8915: * Björnsen Beratende Ingenieure GmbH gernotbelger@8915: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8915: * gernotbelger@8915: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8915: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8915: * documentation coming with Dive4Elements River for details. gernotbelger@8915: */ gernotbelger@8915: package org.dive4elements.river.artifacts.sinfo.common; gernotbelger@8915: gernotbelger@8915: import java.io.Serializable; gernotbelger@8915: import java.util.ArrayList; gernotbelger@8915: import java.util.Collection; gernotbelger@8915: import java.util.Collections; gernotbelger@8948: import java.util.List; gernotbelger@8915: gernotbelger@8915: import org.dive4elements.river.artifacts.sinfo.util.WstInfo; gernotbelger@8915: gernotbelger@8948: import gnu.trove.TDoubleArrayList; gernotbelger@8948: gernotbelger@8915: /** gernotbelger@8915: * @author Gernot Belger gernotbelger@8915: */ gernotbelger@8948: public abstract class AbstractSInfoCalculationResult implements Serializable { gernotbelger@8915: gernotbelger@8915: private static final long serialVersionUID = 1L; gernotbelger@8915: gernotbelger@8948: private final Collection rows; gernotbelger@8915: gernotbelger@8915: private final String label; gernotbelger@8915: gernotbelger@8915: private final WstInfo wst; gernotbelger@8915: gernotbelger@8948: public AbstractSInfoCalculationResult(final String label, final WstInfo wst, final Collection rows) { gernotbelger@8915: this.label = label; gernotbelger@8915: this.wst = wst; gernotbelger@8915: this.rows = new ArrayList<>(rows); gernotbelger@8915: } gernotbelger@8915: gernotbelger@8915: public final String getLabel() { gernotbelger@8915: return this.label; gernotbelger@8915: } gernotbelger@8915: gernotbelger@8915: public final WstInfo getWst() { gernotbelger@8915: return this.wst; gernotbelger@8915: } gernotbelger@8915: gernotbelger@8948: public final void addRow(final SInfoResultRow resultRow) { gernotbelger@8915: this.rows.add(resultRow); gernotbelger@8915: } gernotbelger@8915: gernotbelger@8948: public final Collection getRows() { gernotbelger@8915: return Collections.unmodifiableCollection(this.rows); gernotbelger@8915: } gernotbelger@8948: gernotbelger@8948: public final double[][] getStationPoints(final SInfoResultType type) { gernotbelger@8948: gernotbelger@8948: final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); gernotbelger@8948: final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); gernotbelger@8948: gernotbelger@8948: for (final SInfoResultRow row : this.rows) { gernotbelger@8948: gernotbelger@8948: final double station = row.getDoubleValue(SInfoResultType.station); gernotbelger@8948: final double value = row.getDoubleValue(type); gernotbelger@8948: gernotbelger@8948: xPoints.add(station); gernotbelger@8948: yPoints.add(value); gernotbelger@8948: } gernotbelger@8948: gernotbelger@8948: return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; gernotbelger@8948: } gernotbelger@8948: gernotbelger@8948: protected final List getValues(final SInfoResultType type) { gernotbelger@8948: gernotbelger@8948: final List values = new ArrayList<>(); gernotbelger@8948: gernotbelger@8948: for (final SInfoResultRow row : this.rows) { gernotbelger@8948: @SuppressWarnings("unchecked") gernotbelger@8948: final TYPE value = (TYPE) row.getValue(type); gernotbelger@8948: values.add(value); gernotbelger@8948: } gernotbelger@8948: gernotbelger@8948: return values; gernotbelger@8948: } gernotbelger@8915: }