Mercurial > dive4elements > river
comparison 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 |
comparison
equal
deleted
inserted
replaced
2782:7c2b24fb0316 | 2783:cbb513a8f548 |
---|---|
1 package de.intevation.flys.artifacts.model.fixings; | |
2 | |
3 import java.io.Serializable; | |
4 | |
5 import java.util.Date; | |
6 import java.util.List; | |
7 import java.util.ArrayList; | |
8 import java.util.Collections; | |
9 | |
10 public class DeltaWTsKM | |
11 implements Serializable | |
12 { | |
13 public static final double EPSILON = 1e-5; | |
14 | |
15 public static class KM | |
16 implements Serializable, Comparable<KM> | |
17 { | |
18 protected double km; | |
19 | |
20 protected List<DeltaWT> deltaWTs; | |
21 | |
22 public KM() { | |
23 deltaWTs = new ArrayList<DeltaWT>(); | |
24 } | |
25 | |
26 public KM(double km) { | |
27 this(); | |
28 this.km = km; | |
29 } | |
30 | |
31 public double getKm() { | |
32 return km; | |
33 } | |
34 | |
35 public void setKm(double km) { | |
36 this.km = km; | |
37 } | |
38 | |
39 public List<DeltaWT> getDeltaWTs() { | |
40 return deltaWTs; | |
41 } | |
42 | |
43 public void setDeltaWTs(List<DeltaWT> deltaWTs) { | |
44 this.deltaWTs = deltaWTs; | |
45 } | |
46 | |
47 public void add(DeltaWT deltaWT) { | |
48 deltaWTs.add(deltaWT); | |
49 } | |
50 | |
51 @Override | |
52 public int compareTo(KM other) { | |
53 double d = km - other.km; | |
54 if (d < -EPSILON) return -1; | |
55 if (d > EPSILON) return +1; | |
56 return 0; | |
57 } | |
58 } // class KM | |
59 | |
60 protected List<KM> kms; | |
61 | |
62 public DeltaWTsKM() { | |
63 this(10); | |
64 } | |
65 | |
66 public DeltaWTsKM(int capacity) { | |
67 kms = new ArrayList<KM>(capacity); | |
68 } | |
69 | |
70 public void add(KM km) { | |
71 kms.add(km); | |
72 } | |
73 | |
74 public void sort() { | |
75 Collections.sort(kms); | |
76 } | |
77 | |
78 public KM findByKm(double km) { | |
79 int idx = Collections.binarySearch(kms, new KM(km)); | |
80 return idx >= 0 ? kms.get(idx) : null; | |
81 } | |
82 } | |
83 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |