annotate flys-client/src/main/java/de/intevation/flys/client/client/utils/Validator.java @ 1500:2a8b5dcbe8ca

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

http://dive4elements.wald.intevation.org