Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java @ 3635:6342166ccdef
Fix issue774 (wrong items).
flys-artifacts/trunk@5343 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Sun, 02 Sep 2012 08:44:23 +0000 |
parents | 200e70f31f6f |
children | b220287a171e |
comparison
equal
deleted
inserted
replaced
3634:001e35349203 | 3635:6342166ccdef |
---|---|
28 import de.intevation.flys.artifacts.model.WstFactory; | 28 import de.intevation.flys.artifacts.model.WstFactory; |
29 import de.intevation.flys.utils.FLYSUtils; | 29 import de.intevation.flys.utils.FLYSUtils; |
30 | 30 |
31 | 31 |
32 /** | 32 /** |
33 * State to input W/Q data. | |
33 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 34 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
34 */ | 35 */ |
35 public class WQAdapted extends DefaultState { | 36 public class WQAdapted extends DefaultState { |
36 | 37 |
37 /** The logger used in this state.*/ | 38 /** The logger used in this state.*/ |
54 } // class GaugeOrder | 55 } // class GaugeOrder |
55 | 56 |
56 public static final GaugeOrder GAUGE_UP = new GaugeOrder(true); | 57 public static final GaugeOrder GAUGE_UP = new GaugeOrder(true); |
57 public static final GaugeOrder GAUGE_DOWN = new GaugeOrder(false); | 58 public static final GaugeOrder GAUGE_DOWN = new GaugeOrder(false); |
58 | 59 |
60 /** Trivial, empty constructor. */ | |
59 public WQAdapted() { | 61 public WQAdapted() { |
60 } | 62 } |
61 | 63 |
62 | 64 |
63 /** | 65 /** |
95 return null; | 97 return null; |
96 } | 98 } |
97 } | 99 } |
98 | 100 |
99 | 101 |
102 /** Creates "Q" and "W" items. */ | |
100 protected Element[] createModeItems( | 103 protected Element[] createModeItems( |
101 XMLUtils.ElementCreator cr, | 104 XMLUtils.ElementCreator cr, |
102 Artifact artifact, | 105 Artifact artifact, |
103 String name, | 106 String name, |
104 CallContext context) | 107 CallContext context) |
132 if (num == 0) { | 135 if (num == 0) { |
133 logger.warn("Selected distance matches no gauges."); | 136 logger.warn("Selected distance matches no gauges."); |
134 return null; | 137 return null; |
135 } | 138 } |
136 | 139 |
137 Element[] elements = new Element[num]; | 140 List<Element> elements = new ArrayList<Element>(); |
138 | 141 |
139 double rangeFrom = dist[0]; | 142 double rangeFrom = dist[0]; |
140 double rangeTo = dist[1]; | 143 double rangeTo = dist[1]; |
141 | 144 |
142 int idx = 0; | 145 int idx = 0; |
146 for (Gauge gauge: gauges) { | 149 for (Gauge gauge: gauges) { |
147 Range range = gauge.getRange(); | 150 Range range = gauge.getRange(); |
148 double lower = range.getA().doubleValue(); | 151 double lower = range.getA().doubleValue(); |
149 double upper = range.getB().doubleValue(); | 152 double upper = range.getB().doubleValue(); |
150 | 153 |
154 // If gauge out of range, skip it. | |
155 if (upper <= rangeFrom || lower >= rangeTo) { | |
156 continue; | |
157 } | |
158 | |
151 double from = lower < rangeFrom ? rangeFrom : lower; | 159 double from = lower < rangeFrom ? rangeFrom : lower; |
152 double to = upper > rangeTo ? rangeTo : upper; | 160 double to = upper > rangeTo ? rangeTo : upper; |
153 | 161 |
154 double[] mmQ = determineMinMaxQ(gauge, wst); | 162 double[] mmQ = determineMinMaxQ(gauge, wst); |
155 double[] mmW = gauge.determineMinMaxW(); | 163 double[] mmW = gauge.determineMinMaxW(); |
156 | 164 |
157 elements[idx++] = createItem( | 165 elements.add(createItem( |
158 cr, new String[] { from + ";" + to, ""}, mmQ, mmW); | 166 cr, new String[] { from + ";" + to, ""}, mmQ, mmW)); |
159 } | 167 } |
160 } | 168 } |
161 else { | 169 else { |
162 Collections.sort(gauges, GAUGE_DOWN); | 170 Collections.sort(gauges, GAUGE_DOWN); |
163 rangeFrom = dist[1]; | 171 rangeFrom = dist[1]; |
168 double upper = range.getB().doubleValue(); | 176 double upper = range.getB().doubleValue(); |
169 | 177 |
170 double from = lower < rangeFrom ? rangeFrom : lower; | 178 double from = lower < rangeFrom ? rangeFrom : lower; |
171 double to = upper > rangeTo ? rangeTo : upper; | 179 double to = upper > rangeTo ? rangeTo : upper; |
172 | 180 |
181 // TODO probably need to continue out if oof range (see above). | |
182 | |
173 double[] mmQ = determineMinMaxQ(gauge, wst); | 183 double[] mmQ = determineMinMaxQ(gauge, wst); |
174 double[] mmW = gauge.determineMinMaxW(); | 184 double[] mmW = gauge.determineMinMaxW(); |
175 | 185 |
176 elements[idx++] = createItem( | 186 elements.add(createItem( |
177 cr, new String[] { to + ";" + from, ""}, mmQ, mmW); | 187 cr, new String[] { to + ";" + from, ""}, mmQ, mmW)); |
178 } | 188 } |
179 } | 189 } |
180 | 190 |
181 return elements; | 191 Element[] els = new Element[elements.size()]; |
192 return elements.toArray(els); | |
182 } | 193 } |
183 | 194 |
184 | 195 |
185 protected Element createItem(XMLUtils.ElementCreator cr, Object obj) { | 196 protected Element createItem(XMLUtils.ElementCreator cr, Object obj) { |
186 return createItem(cr, obj, null, null); | 197 return createItem(cr, obj, null, null); |