Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoCalculationResult.java @ 8948:a4f1ac81f26d
Work on SINFO-FlowDepthMinMax.
Also rework of result row stuff, in order to reduce abstraction, using result type concept
author | gernotbelger |
---|---|
date | Wed, 14 Mar 2018 14:10:32 +0100 |
parents | 5d5d482da3e9 |
children | b194fa64506a |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoCalculationResult.java Wed Mar 14 14:09:33 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoCalculationResult.java Wed Mar 14 14:10:32 2018 +0100 @@ -13,23 +13,26 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.List; import org.dive4elements.river.artifacts.sinfo.util.WstInfo; +import gnu.trove.TDoubleArrayList; + /** * @author Gernot Belger */ -public abstract class AbstractSInfoCalculationResult<ROW extends AbstractSInfoResultRow> implements Serializable { +public abstract class AbstractSInfoCalculationResult implements Serializable { private static final long serialVersionUID = 1L; - private final Collection<ROW> rows; + private final Collection<SInfoResultRow> rows; private final String label; private final WstInfo wst; - public AbstractSInfoCalculationResult(final String label, final WstInfo wst, final Collection<ROW> rows) { + public AbstractSInfoCalculationResult(final String label, final WstInfo wst, final Collection<SInfoResultRow> rows) { this.label = label; this.wst = wst; this.rows = new ArrayList<>(rows); @@ -43,11 +46,41 @@ return this.wst; } - public final void addRow(final ROW resultRow) { + public final void addRow(final SInfoResultRow resultRow) { this.rows.add(resultRow); } - public final Collection<ROW> getRows() { + public final Collection<SInfoResultRow> getRows() { return Collections.unmodifiableCollection(this.rows); } + + public final double[][] getStationPoints(final SInfoResultType type) { + + final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); + final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); + + for (final SInfoResultRow row : this.rows) { + + final double station = row.getDoubleValue(SInfoResultType.station); + 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 SInfoResultType type) { + + final List<TYPE> values = new ArrayList<>(); + + for (final SInfoResultRow row : this.rows) { + @SuppressWarnings("unchecked") + final TYPE value = (TYPE) row.getValue(type); + values.add(value); + } + + return values; + } } \ No newline at end of file