Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java @ 9222:5a0e8d76582e
uinfo.salix regional workflow
author | gernotbelger |
---|---|
date | Wed, 04 Jul 2018 13:06:28 +0200 |
parents | aafae1ab25f0 |
children | c3994657c15d |
comparison
equal
deleted
inserted
replaced
9221:5c34fe17ef15 | 9222:5a0e8d76582e |
---|---|
17 import org.dive4elements.river.client.shared.model.DataItem; | 17 import org.dive4elements.river.client.shared.model.DataItem; |
18 import org.dive4elements.river.client.shared.model.DataList; | 18 import org.dive4elements.river.client.shared.model.DataList; |
19 import org.dive4elements.river.client.shared.model.DefaultData; | 19 import org.dive4elements.river.client.shared.model.DefaultData; |
20 import org.dive4elements.river.client.shared.model.DefaultDataItem; | 20 import org.dive4elements.river.client.shared.model.DefaultDataItem; |
21 | 21 |
22 import com.smartgwt.client.util.SC; | |
22 import com.smartgwt.client.widgets.Canvas; | 23 import com.smartgwt.client.widgets.Canvas; |
23 import com.smartgwt.client.widgets.Label; | 24 import com.smartgwt.client.widgets.Label; |
24 import com.smartgwt.client.widgets.form.fields.TextItem; | 25 import com.smartgwt.client.widgets.form.fields.TextItem; |
25 import com.smartgwt.client.widgets.layout.HLayout; | 26 import com.smartgwt.client.widgets.layout.HLayout; |
26 import com.smartgwt.client.widgets.layout.VLayout; | 27 import com.smartgwt.client.widgets.layout.VLayout; |
31 */ | 32 */ |
32 public abstract class AbstractSingleItemPanel extends AbstractUIProvider { | 33 public abstract class AbstractSingleItemPanel extends AbstractUIProvider { |
33 | 34 |
34 private static final long serialVersionUID = 1L; | 35 private static final long serialVersionUID = 1L; |
35 | 36 |
36 protected enum Type { | 37 public enum Type { |
37 single, multi // "SingleItem" (Klassenname) meint, dass es nur ein einziges Eingabefeld gibt (nicht from-to; epoch) | 38 single, multi, limit5 // "SingleItem" (Klassenname) meint, dass es nur ein einziges Eingabefeld gibt (nicht from-to; epoch) |
38 // Type multi: append (year): es können mehrere Werte eingegeben werden; Leerzeichen-getrennt | 39 // Type multi: append (year): es können mehrere Werte eingegeben werden; Leerzeichen-getrennt |
39 // Type single: append (year, sohlhöhendifferenz): nur ein Wert ist zulässig | 40 // Type single: append (year, sohlhöhendifferenz): nur ein Wert ist zulässig |
41 // Type limit5 TODO: generalize, if needed | |
40 } | 42 } |
41 | 43 |
42 private final Type type; | 44 private final Type type; |
43 | 45 |
44 private TextItem inputItem; | 46 private TextItem inputItem; |
138 | 140 |
139 private final List<String> validateSingleInput(final String sValue) { | 141 private final List<String> validateSingleInput(final String sValue) { |
140 final List<String> errors = new ArrayList<String>(); | 142 final List<String> errors = new ArrayList<String>(); |
141 // String filtered = ""; | 143 // String filtered = ""; |
142 // int goodValues = 0; | 144 // int goodValues = 0; |
143 | 145 errors.addAll(validateNumber(sValue)); |
144 try { | |
145 Integer.parseInt(sValue); | |
146 } | |
147 catch (final NumberFormatException e) { | |
148 errors.add(this.MSG.wrongFormat() + ": " + sValue); | |
149 | |
150 } | |
151 boolean isGood = false; | 146 boolean isGood = false; |
152 for (final String validYear : this.validInputs) { | 147 for (final String validYear : this.validInputs) { |
153 /* No list contains for strings? */ | 148 /* No list contains for strings? */ |
154 if (sValue.equals(validYear)) { | 149 if (sValue.equals(validYear)) { |
155 isGood = true; | 150 isGood = true; |
166 // if (goodValues > 1) { | 161 // if (goodValues > 1) { |
167 // filtered += " " + Integer.toString(value); | 162 // filtered += " " + Integer.toString(value); |
168 // } else { | 163 // } else { |
169 // filtered = Integer.toString(value); | 164 // filtered = Integer.toString(value); |
170 // } | 165 // } |
166 return errors; | |
167 } | |
168 | |
169 private final List<String> validateNumber(final String sValue) { | |
170 final List<String> errors = new ArrayList<String>(); | |
171 | |
172 try { | |
173 Integer.parseInt(sValue); | |
174 } | |
175 catch (final NumberFormatException e) { | |
176 errors.add(this.MSG.wrongFormat() + ": " + sValue); | |
177 | |
178 } | |
171 return errors; | 179 return errors; |
172 } | 180 } |
173 | 181 |
174 protected abstract String errorForItemMsg(); | 182 protected abstract String errorForItemMsg(); |
175 | 183 |
184 else | 192 else |
185 this.inputItem.setValue(value); | 193 this.inputItem.setValue(value); |
186 | 194 |
187 break; | 195 break; |
188 | 196 |
197 case limit5: | |
198 // APPEND = ADD to existing -> MULTI YEAR | |
199 final String oldValues = this.inputItem.getValueAsString(); | |
200 if (oldValues != null && !oldValues.isEmpty()) { | |
201 final String[] oldVals = oldValues.split(" "); | |
202 if (oldVals.length < 5)// TODO: generalize, if needed | |
203 this.inputItem.setValue(oldValues.trim() + " " + value); | |
204 else { | |
205 // msg TODO: generalize, if needed | |
206 SC.warn(this.MSG.error_limit_exceeded_salix()); | |
207 } | |
208 } | |
209 | |
210 else | |
211 this.inputItem.setValue(value); | |
212 | |
213 break; | |
214 | |
189 case single: | 215 case single: |
190 this.inputItem.setValue(value); | 216 this.inputItem.setValue(value); |
191 break; | 217 break; |
192 | 218 |
193 default: | 219 default: |
203 | 229 |
204 final String sValue = this.inputItem.getValueAsString(); | 230 final String sValue = this.inputItem.getValueAsString(); |
205 | 231 |
206 switch (this.type) { | 232 switch (this.type) { |
207 case multi: | 233 case multi: |
234 | |
208 final String[] sValues = sValue.trim().split(" "); | 235 final String[] sValues = sValue.trim().split(" "); |
209 for (final String value : sValues) { | 236 for (final String value : sValues) { |
210 errors.addAll(this.validateSingleInput(value)); | 237 errors.addAll(this.validateSingleInput(value)); |
211 } | 238 } |
212 break; | 239 break; |
213 | 240 case limit5: |
241 final String[] values = sValue.trim().split(" "); | |
242 if (values.length > 5) { | |
243 errors.add(this.MSG.error_limit_exceeded_salix());// TODO generalize if needed | |
244 } | |
245 for (int i = 0; i < values.length; i++) { | |
246 if (i < 5) | |
247 errors.addAll(this.validateNumber(values[i])); | |
248 } | |
249 break; | |
214 case single: | 250 case single: |
215 errors.addAll(this.validateSingleInput(sValue)); | 251 errors.addAll(this.validateSingleInput(sValue)); |
216 break; | 252 break; |
217 | 253 |
218 default: | 254 default: |