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);

http://dive4elements.wald.intevation.org