diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightData.java @ 7391:9513d1af7d58

Renamed artifacts/**/BedHeight(Single) to BedHeight(Single)Data, to resolve class name conflict with class in backend.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 17 Oct 2013 15:08:59 +0200
parents artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeight.java@3c8147ba35a6
children d0ea092a32f5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightData.java	Thu Oct 17 15:08:59 2013 +0200
@@ -0,0 +1,115 @@
+/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * 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.model.minfo;
+
+import org.apache.log4j.Logger;
+
+import gnu.trove.TDoubleArrayList;
+import org.dive4elements.river.artifacts.model.NamedObjectImpl;
+
+public class BedHeightData
+extends NamedObjectImpl
+{
+    private static Logger log = Logger.getLogger(BedHeightData.class);
+
+    protected TDoubleArrayList heights;
+    protected TDoubleArrayList station;
+
+    public BedHeightData() {
+        heights = new TDoubleArrayList();
+        station = new TDoubleArrayList();
+    }
+
+    public BedHeightData(String name) {
+        super(name);
+        heights = new TDoubleArrayList();
+        station = new TDoubleArrayList();
+    }
+
+    public BedHeightData(int capacity) {
+        this(capacity, "");
+    }
+
+    public BedHeightData(int capacity, String name) {
+        super(name);
+        heights = new TDoubleArrayList(capacity);
+        station = new TDoubleArrayList(capacity);
+    }
+
+    public void add(double value, double station) {
+        this.heights.add(value);
+        this.station.add(station);
+    }
+
+    public int size() {
+        return heights.size();
+    }
+
+    public double getHeight(int idx) {
+        return heights.getQuick(idx);
+    }
+
+    public double [] getHeights() {
+        return heights.toNativeArray();
+    }
+
+    public double [] get(int idx) {
+        return get(idx, new double [3]);
+    }
+
+    public double [] get(int idx, double [] dst) {
+        dst[0] = heights.getQuick(idx);
+        dst[1] = station.getQuick(idx);
+        return dst;
+    }
+
+   public double minHeights() {
+        return heights.min();
+    }
+
+    public TDoubleArrayList getStations() {
+        return this.station;
+    }
+
+    public double getHeight(double station) {
+        int index = this.station.indexOf(station);
+        return index >= 0 ? heights.getQuick(index) : Double.NaN;
+    }
+
+
+    public static void removeNaNs(TDoubleArrayList [] arrays) {
+
+        int dest = 0;
+
+        int A = arrays.length;
+        int N = arrays[0].size();
+
+        OUTER: for (int i = 0; i < N; ++i) {
+            for (int j = 0; j < A; ++j) {
+                TDoubleArrayList a = arrays[j];
+                double v = a.getQuick(i);
+                if (Double.isNaN(v)) {
+                    continue OUTER;
+                }
+                a.setQuick(dest, v);
+            }
+            ++dest;
+        }
+
+        if (dest < N) {
+            for (int i = 0; i < A; ++i) {
+                arrays[i].remove(dest, N-dest);
+            }
+        }
+    }
+
+    public void removeNaNs() {
+        removeNaNs(new TDoubleArrayList [] { heights });
+    }
+}

http://dive4elements.wald.intevation.org