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:

http://dive4elements.wald.intevation.org