Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCalculationResult.java @ 8999:e3b3ce32c825
Work on uinfo
author | gernotbelger |
---|---|
date | Thu, 12 Apr 2018 19:15:42 +0200 |
parents | |
children | 23945061daec |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCalculationResult.java Thu Apr 12 19:15:42 2018 +0200 @@ -0,0 +1,85 @@ +/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde + * Software engineering by + * Björnsen Beratende Ingenieure GmbH + * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ +package org.dive4elements.river.artifacts.common; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.dive4elements.river.artifacts.common.IResultType; +import gnu.trove.TDoubleArrayList; + +/** + * @author Gernot Belger + */ +public abstract class AbstractCalculationResult implements Serializable { + + private static final long serialVersionUID = 1L; + + protected final Collection<ResultRow> rows; + + private final String label; + + + + public AbstractCalculationResult(final String label, final Collection<ResultRow> rows) { + this.label = label; + this.rows = new ArrayList<>(rows); + } + + public final String getLabel() { + return this.label; + } + + + public boolean isEmpty() { + return this.rows.isEmpty(); + } + + public final void addRow(final ResultRow resultRow) { + this.rows.add(resultRow); + } + + public final Collection<ResultRow> getRows() { + return Collections.unmodifiableCollection(this.rows); + } + + public final double[][] getStationPoints(final IResultType type) { //gehört die Methode hier rein? oder in erbende Klassen? + + final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); + final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); + + for (final ResultRow row : this.rows) { + + final double station = row.getDoubleValue(GeneralResultType.station); //TODO: move "station" (and others) to common + final double value = row.getDoubleValue(type); + + xPoints.add(station); + yPoints.add(value); + } + + return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; + } + + protected final <TYPE> List<TYPE> getValues(final IResultType type) { + + final List<TYPE> values = new ArrayList<>(); + + for (final ResultRow row : this.rows) { + @SuppressWarnings("unchecked") + final TYPE value = (TYPE) row.getValue(type); + values.add(value); + } + + return values; + } +} \ No newline at end of file