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

http://dive4elements.wald.intevation.org