-package com.vaadin.tests.validation;\r
-\r
-import com.vaadin.data.Validator;\r
-import com.vaadin.data.validator.AbstractStringValidator;\r
-import com.vaadin.data.validator.CompositeValidator;\r
-import com.vaadin.data.validator.DoubleValidator;\r
-import com.vaadin.data.validator.EmailValidator;\r
-import com.vaadin.data.validator.IntegerValidator;\r
-import com.vaadin.data.validator.RegexpValidator;\r
-import com.vaadin.data.validator.StringLengthValidator;\r
-import com.vaadin.tests.components.TestBase;\r
-import com.vaadin.ui.Button;\r
-import com.vaadin.ui.Form;\r
-import com.vaadin.ui.TextField;\r
-import com.vaadin.ui.VerticalLayout;\r
-import com.vaadin.ui.Button.ClickEvent;\r
-import com.vaadin.ui.Button.ClickListener;\r
-import com.vaadin.ui.Window.Notification;\r
-\r
-public class TestValidators extends TestBase {\r
-\r
- @Override\r
- protected Integer getTicketNumber() {\r
- return 680;\r
- }\r
-\r
- @Override\r
- protected String getDescription() {\r
- return "This test verifies that various validators work correctly";\r
- }\r
-\r
- @Override\r
- public void setup() {\r
- final Form form = new Form(new VerticalLayout());\r
-\r
- // simple validators\r
-\r
- TextField tf = new TextField("A field, must contain 1-2 chars");\r
- tf\r
- .addValidator(new StringLengthValidator("Invalid length", 1, 2,\r
- false));\r
- tf.setRequired(true);\r
- tf.setValue("ab");\r
- form.addField("a", tf);\r
-\r
- tf = new TextField("A field, must contain an integer");\r
- tf.addValidator(new IntegerValidator("Invalid integer {0}"));\r
- tf.setRequired(true);\r
- tf.setValue("123");\r
- form.addField("b", tf);\r
-\r
- tf = new TextField("A field, must contain an integer or be empty");\r
- tf.addValidator(new IntegerValidator("Invalid integer {0}"));\r
- tf.setValue("-321");\r
- form.addField("c", tf);\r
-\r
- tf = new TextField(\r
- "A field, must contain a floating point number or be empty");\r
- tf.addValidator(new DoubleValidator("Invalid double {0}"));\r
- tf.setValue("-123.45e6");\r
- form.addField("d", tf);\r
-\r
- tf = new TextField(\r
- "A field, must contain an e-mail address or be empty");\r
- tf.addValidator(new EmailValidator("Invalid e-mail address {0}"));\r
- tf.setValue("a.b@example.com");\r
- form.addField("e", tf);\r
-\r
- // regular expressions\r
-\r
- tf = new TextField("A field, must match the regular expression a.*b.*c");\r
- tf.addValidator(new RegexpValidator("a.*b.*c",\r
- "{0} does not match the regular expression"));\r
- tf.setValue("aagsabeqgc");\r
- form.addField("f", tf);\r
-\r
- tf = new TextField(\r
- "A field, must contain the regular expression a.*b.*c");\r
- tf.addValidator(new RegexpValidator("a.*b.*c", false,\r
- "{0} does not contain the regular expression"));\r
- tf.setValue("aagsabeqgc");\r
- form.addField("g", tf);\r
-\r
- tf = new TextField(\r
- "A field, must match the regular expression ^a.*b.*c$");\r
- tf.addValidator(new RegexpValidator("^a.*b.*c$", false,\r
- "{0} does not match the regular expression with ^ and $"));\r
- tf.setValue("aagsabeqgc");\r
- form.addField("h", tf);\r
-\r
- tf = new TextField(\r
- "A field, must contain the regular expression ^a.*b.*c$");\r
- tf.addValidator(new RegexpValidator("^a.*b.*c$", false,\r
- "{0} does not contain the regular expression with ^ and $"));\r
- tf.setValue("aagsabeqgc");\r
- form.addField("i", tf);\r
-\r
- // TODO CompositeValidator\r
- tf = new TextField(\r
- "A field, must be a floating point number with 4-5 chars");\r
- CompositeValidator cv = new CompositeValidator(\r
- CompositeValidator.MODE_AND,\r
- "The field must contain a floating point number with 4-5 characters");\r
- cv\r
- .addValidator(new StringLengthValidator(\r
- "String length of '{0}' should be 4-5 characters", 4,\r
- 5, false));\r
- cv.addValidator(new DoubleValidator(\r
- "{0} must be a floating point number"));\r
- tf.addValidator(cv);\r
- tf.setValue("12.34");\r
- form.addField("j", tf);\r
-\r
- // Postal code that must be 5 digits (10000-99999).\r
- tf = new TextField("Postal Code");\r
- tf.setColumns(5);\r
-\r
- // Create the validator - this would be even easier with RegexpValidator\r
- Validator postalCodeValidator = new AbstractStringValidator(\r
- "Postal code must be a number 10000-99999.") {\r
- @Override\r
- protected boolean isValidString(String value) {\r
- return value.matches("[1-9][0-9]{4}");\r
- }\r
- };\r
- tf.addValidator(postalCodeValidator);\r
- tf.setValue("12345");\r
- form.addField("k", tf);\r
-\r
- Button b = new Button("Commit", new ClickListener() {\r
-\r
- public void buttonClick(ClickEvent event) {\r
- try {\r
- form.commit();\r
- if (form.isValid()) {\r
- getMainWindow().showNotification(\r
- "OK! Form validated and no error was thrown",\r
- Notification.TYPE_HUMANIZED_MESSAGE);\r
- } else {\r
- getMainWindow().showNotification(\r
- "Form is invalid but no exception was thrown",\r
- Notification.TYPE_ERROR_MESSAGE);\r
- }\r
- } catch (Exception e) {\r
- if (form.isValid()) {\r
- getMainWindow().showNotification(\r
- "Form is valid but an exception was thrown",\r
- Notification.TYPE_ERROR_MESSAGE);\r
- } else {\r
- getMainWindow().showNotification(\r
- "OK! Error was thrown for an invalid input",\r
- Notification.TYPE_HUMANIZED_MESSAGE);\r
-\r
- }\r
- }\r
- }\r
-\r
- });\r
-\r
- addComponent(form);\r
- addComponent(b);\r
- }\r
-}\r
+package com.vaadin.tests.validation;
+
+import com.vaadin.data.Validator;
+import com.vaadin.data.validator.AbstractStringValidator;
+import com.vaadin.data.validator.CompositeValidator;
+import com.vaadin.data.validator.DoubleValidator;
+import com.vaadin.data.validator.EmailValidator;
+import com.vaadin.data.validator.IntegerValidator;
+import com.vaadin.data.validator.RegexpValidator;
+import com.vaadin.data.validator.StringLengthValidator;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Form;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Window.Notification;
+
+public class TestValidators extends TestBase {
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 680;
+ }
+
+ @Override
+ protected String getDescription() {
+ return "This test verifies that various validators work correctly";
+ }
+
+ @Override
+ public void setup() {
+ final Form form = new Form(new VerticalLayout());
+
+ // simple validators
+
+ TextField tf = new TextField("A field, must contain 1-2 chars");
+ tf
+ .addValidator(new StringLengthValidator("Invalid length", 1, 2,
+ false));
+ tf.setRequired(true);
+ tf.setValue("ab");
+ form.addField("a", tf);
+
+ tf = new TextField("A field, must contain an integer");
+ tf.addValidator(new IntegerValidator("Invalid integer {0}"));
+ tf.setRequired(true);
+ tf.setValue("123");
+ form.addField("b", tf);
+
+ tf = new TextField("A field, must contain an integer or be empty");
+ tf.addValidator(new IntegerValidator("Invalid integer {0}"));
+ tf.setValue("-321");
+ form.addField("c", tf);
+
+ tf = new TextField(
+ "A field, must contain a floating point number or be empty");
+ tf.addValidator(new DoubleValidator("Invalid double {0}"));
+ tf.setValue("-123.45e6");
+ form.addField("d", tf);
+
+ tf = new TextField(
+ "A field, must contain an e-mail address or be empty");
+ tf.addValidator(new EmailValidator("Invalid e-mail address {0}"));
+ tf.setValue("a.b@example.com");
+ form.addField("e", tf);
+
+ // regular expressions
+
+ tf = new TextField("A field, must match the regular expression a.*b.*c");
+ tf.addValidator(new RegexpValidator("a.*b.*c",
+ "{0} does not match the regular expression"));
+ tf.setValue("aagsabeqgc");
+ form.addField("f", tf);
+
+ tf = new TextField(
+ "A field, must contain the regular expression a.*b.*c");
+ tf.addValidator(new RegexpValidator("a.*b.*c", false,
+ "{0} does not contain the regular expression"));
+ tf.setValue("aagsabeqgc");
+ form.addField("g", tf);
+
+ tf = new TextField(
+ "A field, must match the regular expression ^a.*b.*c$");
+ tf.addValidator(new RegexpValidator("^a.*b.*c$", false,
+ "{0} does not match the regular expression with ^ and $"));
+ tf.setValue("aagsabeqgc");
+ form.addField("h", tf);
+
+ tf = new TextField(
+ "A field, must contain the regular expression ^a.*b.*c$");
+ tf.addValidator(new RegexpValidator("^a.*b.*c$", false,
+ "{0} does not contain the regular expression with ^ and $"));
+ tf.setValue("aagsabeqgc");
+ form.addField("i", tf);
+
+ // TODO CompositeValidator
+ tf = new TextField(
+ "A field, must be a floating point number with 4-5 chars");
+ CompositeValidator cv = new CompositeValidator(
+ CompositeValidator.MODE_AND,
+ "The field must contain a floating point number with 4-5 characters");
+ cv
+ .addValidator(new StringLengthValidator(
+ "String length of '{0}' should be 4-5 characters", 4,
+ 5, false));
+ cv.addValidator(new DoubleValidator(
+ "{0} must be a floating point number"));
+ tf.addValidator(cv);
+ tf.setValue("12.34");
+ form.addField("j", tf);
+
+ tf = new TextField(
+ "A field, must be a floating point number or 4-5 chars");
+ cv = new CompositeValidator(CompositeValidator.MODE_OR,
+ "The field must contain a floating point or with 4-5 characters");
+ cv
+ .addValidator(new StringLengthValidator(
+ "String length of '{0}' should be 4-5 characters", 4,
+ 5, false));
+ cv.addValidator(new DoubleValidator(
+ "{0} must be a floating point number"));
+ tf.addValidator(cv);
+ tf.setValue("12.34g");
+ form.addField("jb", tf);
+
+ // Postal code that must be 5 digits (10000-99999).
+ tf = new TextField("Postal Code");
+ tf.setColumns(5);
+
+ // Create the validator - this would be even easier with RegexpValidator
+ Validator postalCodeValidator = new AbstractStringValidator(
+ "Postal code must be a number 10000-99999.") {
+ @Override
+ protected boolean isValidString(String value) {
+ return value.matches("[1-9][0-9]{4}");
+ }
+ };
+ tf.addValidator(postalCodeValidator);
+ tf.setValue("12345");
+ form.addField("k", tf);
+
+ Button b = new Button("Commit", new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ try {
+ form.commit();
+ if (form.isValid()) {
+ getMainWindow().showNotification(
+ "OK! Form validated and no error was thrown",
+ Notification.TYPE_HUMANIZED_MESSAGE);
+ } else {
+ getMainWindow().showNotification(
+ "Form is invalid but no exception was thrown",
+ Notification.TYPE_ERROR_MESSAGE);
+ }
+ } catch (Exception e) {
+ if (form.isValid()) {
+ getMainWindow().showNotification(
+ "Form is valid but an exception was thrown",
+ Notification.TYPE_ERROR_MESSAGE);
+ } else {
+ getMainWindow().showNotification(
+ "OK! Error was thrown for an invalid input",
+ Notification.TYPE_HUMANIZED_MESSAGE);
+
+ }
+ }
+ }
+
+ });
+
+ addComponent(form);
+ addComponent(b);
+ }
+}