Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQTimerange.java @ 4171:1d8faeedda0c
Sort calculation results of a historical discharge calculation based on their start date.
Therefore, there are two new inner classes TimerangeItem and HistoricalTimerangeItem that wrap
a W, Q, Timerange (and delta Q). WQTimerange and HistoricalWQTimerange now implement a sort()
that return the results (TimerangeItem or HistoricalWQTimerangeItem) sorted by their start date.
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 18 Oct 2012 09:28:51 +0200 |
parents | 200e70f31f6f |
children | 05eeedc5b156 |
comparison
equal
deleted
inserted
replaced
4170:c0cc002d52ca | 4171:1d8faeedda0c |
---|---|
1 package de.intevation.flys.artifacts.model; | 1 package de.intevation.flys.artifacts.model; |
2 | 2 |
3 import java.util.ArrayList; | 3 import java.util.ArrayList; |
4 import java.util.Collections; | |
4 import java.util.List; | 5 import java.util.List; |
5 | 6 |
6 | 7 |
7 /** | 8 /** |
8 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 9 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
9 */ | 10 */ |
10 public class WQTimerange extends WQ { | 11 public class WQTimerange extends WQ { |
12 | |
13 public static class TimerangeItem implements Comparable<TimerangeItem> { | |
14 public double q; | |
15 public double w; | |
16 public Timerange timerange; | |
17 | |
18 public TimerangeItem (Timerange timerange, double q, double w) { | |
19 this.timerange = timerange; | |
20 this.q = q; | |
21 this.w = w; | |
22 } | |
23 | |
24 public double[] get(double[] wq) { | |
25 if (wq.length >= 2) { | |
26 wq[0] = w; | |
27 wq[1] = q; | |
28 } | |
29 | |
30 return wq; | |
31 } | |
32 | |
33 @Override | |
34 public int compareTo(TimerangeItem other) { | |
35 if (other.timerange.getStart() < timerange.getStart()) { | |
36 return 1; | |
37 } | |
38 else if (other.timerange.getStart() > timerange.getStart()) { | |
39 return -1; | |
40 } | |
41 else if (other.timerange.getEnd() < timerange.getEnd()) { | |
42 return 1; | |
43 } | |
44 else if (other.timerange.getEnd() > timerange.getEnd()){ | |
45 return -1; | |
46 } | |
47 else { | |
48 return 0; | |
49 } | |
50 } | |
51 } | |
11 | 52 |
12 protected List<Timerange> ts; | 53 protected List<Timerange> ts; |
13 | 54 |
14 | 55 |
15 public WQTimerange() { | 56 public WQTimerange() { |
36 | 77 |
37 | 78 |
38 public Timerange[] getTimeranges() { | 79 public Timerange[] getTimeranges() { |
39 return ts.toArray(new Timerange[ts.size()]); | 80 return ts.toArray(new Timerange[ts.size()]); |
40 } | 81 } |
82 | |
83 public List<TimerangeItem> sort() { | |
84 ArrayList<TimerangeItem> items = new ArrayList<TimerangeItem>(ts.size()); | |
85 for (int i = 0, n = size(); i < n; i++) { | |
86 items.add(new TimerangeItem(getTimerange(i), getQ(i), getW(i))); | |
87 } | |
88 | |
89 Collections.sort(items); | |
90 return items; | |
91 } | |
41 } | 92 } |
42 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 93 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |