From 14aa98b682f1fad864501ccce92f195668785694 Mon Sep 17 00:00:00 2001 From: ahdbk Date: Sun, 11 Jun 2017 13:43:22 +0100 Subject: [PATCH 1/6] Add fieldAddon Right and Left to Password - Add fieldAddonRight and fieldAddonLeft to Password - Update generator --- src/main/java/io/asfjava/ui/core/form/Password.java | 4 ++++ .../asfjava/ui/core/generators/PasswordGenerator.java | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/io/asfjava/ui/core/form/Password.java b/src/main/java/io/asfjava/ui/core/form/Password.java index 6af8779..f680bdb 100644 --- a/src/main/java/io/asfjava/ui/core/form/Password.java +++ b/src/main/java/io/asfjava/ui/core/form/Password.java @@ -14,6 +14,10 @@ String placeHolder() default ""; String description() default ""; + + String fieldAddonLeft() default""; + + String fieldAddonRight() default""; boolean noTitle() default false; diff --git a/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java b/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java index 45c577d..df69b2a 100644 --- a/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java @@ -18,6 +18,17 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { if (!description.isEmpty()) { fieldFormDefinition.put("description", description); } + + String fieldAddonLeft = annotation.fieldAddonLeft(); + if (!fieldAddonLeft.isEmpty()) { + fieldFormDefinition.put("fieldAddonLeft", fieldAddonLeft); + } + + String fieldAddonRight = annotation.fieldAddonRight(); + if (!fieldAddonRight.isEmpty()) { + fieldFormDefinition.put("fieldAddonRight", fieldAddonRight); + } + String placeHolder = annotation.placeHolder(); if (!placeHolder.isEmpty()) { fieldFormDefinition.put("placeholder", placeHolder); From 8274c343717160e60f2d27286a6c48fc75f408a4 Mon Sep 17 00:00:00 2001 From: ahdbk Date: Sun, 11 Jun 2017 13:49:10 +0100 Subject: [PATCH 2/6] Add fieldAddon Right and Left to Number - Add fieldAddonRight and fieldAddonLeft to Number - update generator --- src/main/java/io/asfjava/ui/core/form/Number.java | 6 +++++- .../io/asfjava/ui/core/generators/NumberGenerator.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/asfjava/ui/core/form/Number.java b/src/main/java/io/asfjava/ui/core/form/Number.java index db3a1e8..daf450f 100644 --- a/src/main/java/io/asfjava/ui/core/form/Number.java +++ b/src/main/java/io/asfjava/ui/core/form/Number.java @@ -13,7 +13,11 @@ String placeHolder() default ""; - String description() default ""; + String description() default ""; + + String fieldAddonLeft() default""; + + String fieldAddonRight() default""; boolean noTitle() default false; diff --git a/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java b/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java index 58dd7c4..1e4433d 100644 --- a/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java @@ -19,6 +19,16 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { fieldFormDefinition.put("title", title); } + String fieldAddonLeft = annotation.fieldAddonLeft(); + if (!fieldAddonLeft.isEmpty()) { + fieldFormDefinition.put("fieldAddonLeft", fieldAddonLeft); + } + + String fieldAddonRight = annotation.fieldAddonRight(); + if (!fieldAddonRight.isEmpty()) { + fieldFormDefinition.put("fieldAddonRight", fieldAddonRight); + } + String description = annotation.description(); if (!description.isEmpty()) { fieldFormDefinition.put("description", description); From ba90eedc62e02a7abb4be68693622ace405d78d8 Mon Sep 17 00:00:00 2001 From: ahdbk Date: Sun, 11 Jun 2017 13:50:17 +0100 Subject: [PATCH 3/6] Add fieldAddon Right and Left to TextField - Add fieldAddonRight and fieldAddonLeft to TextField - Update generator --- src/main/java/io/asfjava/ui/core/form/TextField.java | 4 ++++ .../asfjava/ui/core/generators/TextFieldGenerator.java | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/io/asfjava/ui/core/form/TextField.java b/src/main/java/io/asfjava/ui/core/form/TextField.java index dcaf2c4..bf861ce 100644 --- a/src/main/java/io/asfjava/ui/core/form/TextField.java +++ b/src/main/java/io/asfjava/ui/core/form/TextField.java @@ -15,6 +15,10 @@ String description() default ""; + String fieldAddonLeft() default""; + + String fieldAddonRight() default""; + String pattern() default ""; boolean noTitle() default false; diff --git a/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java b/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java index 690f33c..92c35f2 100644 --- a/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java +++ b/src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java @@ -17,6 +17,16 @@ public void generate(ObjectNode fieldFormDefinition, Field field) { if (!description.isEmpty()) { fieldFormDefinition.put("description", description); } + + String fieldAddonLeft = annotation.fieldAddonLeft(); + if (!fieldAddonLeft.isEmpty()) { + fieldFormDefinition.put("fieldAddonLeft", fieldAddonLeft); + } + + String fieldAddonRight = annotation.fieldAddonRight(); + if (!fieldAddonRight.isEmpty()) { + fieldFormDefinition.put("fieldAddonRight", fieldAddonRight); + } String placeHolder = annotation.placeHolder(); if (!placeHolder.isEmpty()) { From b2727cc161d8bfb5b025d53cc7cfa1c3948ed3b0 Mon Sep 17 00:00:00 2001 From: ahdbk Date: Sun, 11 Jun 2017 13:58:16 +0100 Subject: [PATCH 4/6] Add TextField with fieldAddonLeft to DemoForm Add TextField with fieldAddonLeft sample --- .../io/asfjava/ui/demo/screen/DemoForm.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java b/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java index 4934d83..8974fc3 100644 --- a/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java +++ b/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java @@ -13,6 +13,14 @@ public class DemoForm implements Serializable { + + @TextField(title = "Pesonal Website",fieldAddonLeft="http://", description = "This is TextField with fieldAddonLeft") + private String webSite; + +// @Tab(title = "Contact", index = 2) + @Password(title = "Password", placeHolder = "Please set you password", description = "This is password") + private String password; + @Tab(title = "Info", index = 1) @TextField(title = "First Name", placeHolder = "Your first name", description = "This is a description for your first name field") private String firstName; @@ -29,9 +37,6 @@ public class DemoForm implements Serializable { @Number(title = "Number of children", placeHolder = "Number of children", description = "This is a number") private Integer number; -// @Tab(title = "Contact", index = 2) - @Password(title = "Password", placeHolder = "Please set you password", description = "This is password") - private String password; @Tab(title = "Info", index = 1) @ComboBox(title = "Gender", titleMap = GenderTitleMap.class) @@ -72,6 +77,14 @@ public void setEmail(String eMail) { public String getEmail() { return email; } + + public void setWebSite(String website) { + this.webSite = website; + } + + public String getWebSite() { + return webSite; + } public void setLastName(String lastName) { this.lastName = lastName; From c46d18ca40c3a085c58f80cc224863d236e29219 Mon Sep 17 00:00:00 2001 From: ahdbk Date: Sun, 11 Jun 2017 14:06:08 +0100 Subject: [PATCH 5/6] Add TextField with fieldAddonRigh to demo Add TextField with fieldAddonRigh sample --- .../main/java/io/asfjava/ui/demo/screen/DemoForm.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java b/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java index 8974fc3..849ff4f 100644 --- a/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java +++ b/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java @@ -17,6 +17,9 @@ public class DemoForm implements Serializable { @TextField(title = "Pesonal Website",fieldAddonLeft="http://", description = "This is TextField with fieldAddonLeft") private String webSite; + @TextField(title = "Your Github Mail",fieldAddonRight="@github.com", description = "This is TextField with fieldAddonRight") + private String gitHub; + // @Tab(title = "Contact", index = 2) @Password(title = "Password", placeHolder = "Please set you password", description = "This is password") private String password; @@ -78,6 +81,14 @@ public String getEmail() { return email; } + public void setGitHub(String github) { + this.gitHub = github; + } + + public String getGitHub() { + return gitHub; + } + public void setWebSite(String website) { this.webSite = website; } From 7e9834b761f6857b5498f541f0da15a46b43623f Mon Sep 17 00:00:00 2001 From: ahdbk Date: Sun, 11 Jun 2017 14:30:51 +0100 Subject: [PATCH 6/6] Update Unit Test --- .../schema/UiFormSchemaGeneratorTest.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java index 22f9be6..13ecdf2 100644 --- a/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java +++ b/src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java @@ -46,6 +46,38 @@ public void testGenerate_textField() throws JsonProcessingException { //Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].type",hasItem("textField"))); } + + @Test + public void testGenerate_textField_WithFieldAddonRight() throws JsonProcessingException { + UiForm ui = UiFormSchemaGenerator.get().generate(TextFieldForm2.class); + String json = new ObjectMapper().writeValueAsString(ui); + + + Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.title",equalTo("First Name"))); + Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.pattern",equalTo("[a-z]"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')]",hasSize(1))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].description",hasItem("This is a description for your first name field"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].placeholder",hasItem("Your first name"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].validationMessage",hasItem("this is a validation msg"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].fieldAddonRight",hasItem("@"))); + + } + + @Test + public void testGenerate_textField_WithFieldAddonLeft() throws JsonProcessingException { + UiForm ui = UiFormSchemaGenerator.get().generate(TextFieldForm3.class); + String json = new ObjectMapper().writeValueAsString(ui); + + + Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.title",equalTo("First Name"))); + Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.pattern",equalTo("[a-z]"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')]",hasSize(1))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].description",hasItem("This is a description for your first name field"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].placeholder",hasItem("Your first name"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].validationMessage",hasItem("this is a validation msg"))); + Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].fieldAddonLeft",hasItem("@"))); + + } @Test public void testGenerate_Number() throws JsonProcessingException { @@ -163,6 +195,8 @@ public void testGenerate_ComboBox_WithCustomValuesContainer() throws JsonProcess Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].titleMap[?(@.name=='Female')].value",hasItem("female"))); } + + } @@ -177,6 +211,28 @@ public String getFirstName() { } +class TextFieldForm2 implements Serializable { + + @TextField(title = "First Name", placeHolder = "Your first name", fieldAddonRight = "@", pattern = "[a-z]", noTitle = true, validationMessage = "this is a validation msg", description = "This is a description for your first name field") + private String firstName; + + public String getFirstName() { + return firstName; + } + +} + +class TextFieldForm3 implements Serializable { + + @TextField(title = "First Name", placeHolder = "Your first name", fieldAddonLeft = "@", pattern = "[a-z]", noTitle = true, validationMessage = "this is a validation msg", description = "This is a description for your first name field") + private String firstName; + + public String getFirstName() { + return firstName; + } + +} + class NumberForm implements Serializable { @Number(title = "Number of children", placeHolder = "Number of children", description = "This is a number", noTitle = true, validationMessage = "this is a validation msg", readOnly = true)