1500
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.client.client.utils; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 import com.google.gwt.core.client.GWT; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 import com.smartgwt.client.widgets.form.DynamicForm; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 import com.smartgwt.client.widgets.form.fields.FormItem; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 import com.google.gwt.i18n.client.NumberFormat; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 import java.util.Map; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 import de.intevation.flys.client.client.FLYSConstants; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 /** |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 * |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 * This validator is used for SmartGWT FormItems. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 * |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 * To use this validator an attribute named 'internalType' has to be set. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 * Values for 'internalType': |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 * 'double' |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 * 'integer' |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 public class Validator implements ChangedHandler { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 /** The interface that provides i18n messages. */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 protected FLYSConstants MSG = GWT.create(FLYSConstants.class); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 /** |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 * |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 public void onChanged(ChangedEvent e) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 FormItem item = e.getItem(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 DynamicForm form = e.getForm(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 Map errors = form.getErrors(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 String type = item.getAttribute("internalType"); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 if(type.equals("double")) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 validateFloat(item, errors); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 form.setErrors(errors, true); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 else if(type.equals("integer")) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 validateInteger(item, errors); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 form.setErrors(errors, true); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 else { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 GWT.log("No Attribute 'internalType' set. Not using any validator."); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 /** |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 * |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 protected boolean validateInteger(FormItem item, Map errors) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 boolean valid = true; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 String v = (String) item.getValue(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 NumberFormat f = NumberFormat.getDecimalFormat(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 try { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 if (v == null) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 throw new NumberFormatException("empty"); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 int value = Integer.parseInt(v); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 errors.remove(item.getFieldName()); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 catch (NumberFormatException nfe) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 errors.put(item.getFieldName(), MSG.wrongFormat()); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 item.focusInItem(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 valid = false; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 return valid; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 /** |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 * |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 protected boolean validateFloat(FormItem item, Map errors) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 boolean valid = true; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
86 String v = (String) item.getValue(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 NumberFormat f = NumberFormat.getDecimalFormat(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 try { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
91 if (v == null) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 throw new NumberFormatException("empty"); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
94 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 double value = f.parse(v); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
96 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
97 errors.remove(item.getFieldName()); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
98 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
99 catch (NumberFormatException nfe) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 errors.put(item.getFieldName(), MSG.wrongFormat()); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
101 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 item.focusInItem(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 valid = false; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
105 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
106 return valid; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
107 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
108 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 |