diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java @ 2182:5ff481ab24a1

Refactored class hierachy to integrate model for W~W. flys-artifacts/trunk@3786 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 27 Jan 2012 10:45:34 +0000
parents bda04ae1154f
children bcf25d8c183e
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java	Fri Jan 27 10:32:09 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java	Fri Jan 27 10:45:34 2012 +0000
@@ -3,34 +3,27 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import de.intevation.flys.utils.DataUtil;
-
 import gnu.trove.TDoubleArrayList;
 
 import org.apache.log4j.Logger;
 
 public class WQ
-extends      NamedObjectImpl
+extends      W
 {
     public static final Pattern NUMBERS_PATTERN =
         Pattern.compile("\\D*(\\d++.\\d*)\\D*");
 
-
-    private static Logger logger = Logger.getLogger(WQ.class);
+    private static Logger log = Logger.getLogger(WQ.class);
 
-    // TODO: s/w/ws/g
-    protected TDoubleArrayList w;
-
-    // TODO: s/q/qs/g
-    protected TDoubleArrayList q;
+    protected TDoubleArrayList qs;
 
     public WQ() {
         this("");
     }
 
     public WQ(String name) {
-        w = new TDoubleArrayList();
-        q = new TDoubleArrayList();
+        super(name);
+        qs = new TDoubleArrayList();
     }
 
     public WQ(int capacity) {
@@ -39,9 +32,8 @@
 
 
     public WQ(int capacity, String name) {
-        super(name);
-        w = new TDoubleArrayList(capacity);
-        q = new TDoubleArrayList(capacity);
+        super(capacity, name);
+        qs = new TDoubleArrayList(capacity);
     }
 
     public WQ(double [] qs, double [] ws) {
@@ -50,8 +42,8 @@
 
     public WQ(double [] qs, double [] ws, String name) {
         super(name);
-        w = new TDoubleArrayList(ws);
-        q = new TDoubleArrayList(qs);
+        this.ws = new TDoubleArrayList(ws);
+        this.qs = new TDoubleArrayList(qs);
     }
 
 
@@ -77,127 +69,34 @@
         return null;
     }
 
-
     public void add(double w, double q) {
-        this.w.add(w);
-        this.q.add(q);
-    }
-
-    public int size() {
-        return w.size();
-    }
-
-    public double getW(int idx) {
-        return w.getQuick(idx);
+        ws.add(w);
+        qs.add(q);
     }
 
     public double getQ(int idx) {
-        return q.getQuick(idx);
+        return qs.getQuick(idx);
     }
 
+    @Override
     public double [] get(int idx) {
         return get(idx, new double [2]);
     }
 
+    @Override
     public double [] get(int idx, double [] dst) {
-        dst[0] = w.getQuick(idx);
-        dst[1] = q.getQuick(idx);
+        dst[0] = ws.getQuick(idx);
+        dst[1] = qs.getQuick(idx);
         return dst;
     }
 
-    public double [] getWs() {
-        return w.toNativeArray();
-    }
-
     public double [] getQs() {
-        return q.toNativeArray();
-    }
-
-    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 [] { w, q });
-    }
-
-    public boolean guessWaterIncreasing() {
-        return guessWaterIncreasing(0.05f);
-    }
-
-    public boolean guessWaterIncreasing(float factor) {
-        return DataUtil.guessWaterIncreasing(w, factor);
+        return qs.toNativeArray();
     }
 
-    public int [] longestIncreasingWRangeIndices() {
-        return longestIncreasingWRangeIndices(new int[2]);
-    }
-
-    public int [] longestIncreasingWRangeIndices(int [] bounds) {
-
-        int N = size();
-        int start = 0;
-        int stop  = 0;
-
-        double lastW = Double.MAX_VALUE;
-
-        for (int i = 0; i < N; ++i) {
-            double v = w.getQuick(i);
-            if (v <= lastW) {
-                if (stop-start > bounds[1]-bounds[0]) {
-                    bounds[0] = start;
-                    bounds[1] = stop;
-                    if (logger.isDebugEnabled()) {
-                        logger.debug("new range: " +
-                            bounds[0] + " - " + bounds[1] + " (" +
-                            w.getQuick(bounds[0]) + ", " +
-                            w.getQuick(bounds[1]) + ")");
-
-                    }
-                }
-                start = stop = i;
-            }
-            else {
-                stop = i;
-            }
-            lastW = v;
-        }
-
-        if (stop-start > bounds[1]-bounds[0]) {
-            bounds[0] = start;
-            bounds[1] = stop;
-            if (logger.isDebugEnabled()) {
-                logger.debug("new range @end: " +
-                    bounds[0] + " - " + bounds[1] + " (" +
-                    w.getQuick(bounds[0]) + ", " +
-                    w.getQuick(bounds[1]) + ")");
-
-            }
-        }
-
-        return bounds;
+    @Override
+    public void removeNaNs() {
+        removeNaNs(new TDoubleArrayList [] { ws, qs });
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org