Mercurial > dive4elements > river
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 :