diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/DeltaWTsKM.java @ 2783:cbb513a8f548

FixA: km indexed datastructure for delta w/t results. flys-artifacts/trunk@4522 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 25 May 2012 13:49:27 +0000
parents
children e63969c173e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/DeltaWTsKM.java	Fri May 25 13:49:27 2012 +0000
@@ -0,0 +1,83 @@
+package de.intevation.flys.artifacts.model.fixings;
+
+import java.io.Serializable;
+
+import java.util.Date;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class DeltaWTsKM
+implements   Serializable
+{
+    public static final double EPSILON = 1e-5;
+
+    public static class KM
+    implements          Serializable, Comparable<KM>
+    {
+        protected double km;
+
+        protected List<DeltaWT> deltaWTs;
+
+        public KM() {
+            deltaWTs = new ArrayList<DeltaWT>();
+        }
+
+        public KM(double km) {
+            this();
+            this.km = km;
+        }
+
+        public double getKm() {
+            return km;
+        }
+
+        public void setKm(double km) {
+            this.km = km;
+        }
+
+        public List<DeltaWT> getDeltaWTs() {
+            return deltaWTs;
+        }
+
+        public void setDeltaWTs(List<DeltaWT> deltaWTs) {
+            this.deltaWTs = deltaWTs;
+        }
+
+        public void add(DeltaWT deltaWT) {
+            deltaWTs.add(deltaWT);
+        }
+
+        @Override
+        public int compareTo(KM other) {
+            double d = km - other.km;
+            if (d < -EPSILON) return -1;
+            if (d >  EPSILON) return +1;
+            return 0;
+        }
+    } // class KM
+
+    protected List<KM> kms;
+
+    public DeltaWTsKM() {
+        this(10);
+    }
+
+    public DeltaWTsKM(int capacity) {
+        kms = new ArrayList<KM>(capacity);
+    }
+
+    public void add(KM km) {
+        kms.add(km);
+    }
+
+    public void sort() {
+        Collections.sort(kms);
+    }
+
+    public KM findByKm(double km) {
+        int idx = Collections.binarySearch(kms, new KM(km));
+        return idx >= 0 ? kms.get(idx) : null;
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org