Skip to content

Commit 6fd15c2

Browse files
authored
Merge pull request #46 from ahdbk/master
Add fieldAddon support
2 parents cc5a947 + 7e9834b commit 6fd15c2

File tree

8 files changed

+127
-4
lines changed

8 files changed

+127
-4
lines changed

demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,17 @@
1313

1414
public class DemoForm implements Serializable {
1515

16+
17+
@TextField(title = "Pesonal Website",fieldAddonLeft="http://", description = "This is TextField with fieldAddonLeft")
18+
private String webSite;
19+
20+
@TextField(title = "Your Github Mail",fieldAddonRight="@github.com", description = "This is TextField with fieldAddonRight")
21+
private String gitHub;
22+
23+
// @Tab(title = "Contact", index = 2)
24+
@Password(title = "Password", placeHolder = "Please set you password", description = "This is password")
25+
private String password;
26+
1627
@Tab(title = "Info", index = 1)
1728
@TextField(title = "First Name", placeHolder = "Your first name", description = "This is a description for your first name field")
1829
private String firstName;
@@ -29,9 +40,6 @@ public class DemoForm implements Serializable {
2940
@Number(title = "Number of children", placeHolder = "Number of children", description = "This is a number")
3041
private Integer number;
3142

32-
// @Tab(title = "Contact", index = 2)
33-
@Password(title = "Password", placeHolder = "Please set you password", description = "This is password")
34-
private String password;
3543

3644
@Tab(title = "Info", index = 1)
3745
@ComboBox(title = "Gender", titleMap = GenderTitleMap.class)
@@ -72,6 +80,22 @@ public void setEmail(String eMail) {
7280
public String getEmail() {
7381
return email;
7482
}
83+
84+
public void setGitHub(String github) {
85+
this.gitHub = github;
86+
}
87+
88+
public String getGitHub() {
89+
return gitHub;
90+
}
91+
92+
public void setWebSite(String website) {
93+
this.webSite = website;
94+
}
95+
96+
public String getWebSite() {
97+
return webSite;
98+
}
7599

76100
public void setLastName(String lastName) {
77101
this.lastName = lastName;

src/main/java/io/asfjava/ui/core/form/Number.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313

1414
String placeHolder() default "";
1515

16-
String description() default "";
16+
String description() default "";
17+
18+
String fieldAddonLeft() default"";
19+
20+
String fieldAddonRight() default"";
1721

1822
boolean noTitle() default false;
1923

src/main/java/io/asfjava/ui/core/form/Password.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
String placeHolder() default "";
1515

1616
String description() default "";
17+
18+
String fieldAddonLeft() default"";
19+
20+
String fieldAddonRight() default"";
1721

1822
boolean noTitle() default false;
1923

src/main/java/io/asfjava/ui/core/form/TextField.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515

1616
String description() default "";
1717

18+
String fieldAddonLeft() default"";
19+
20+
String fieldAddonRight() default"";
21+
1822
String pattern() default "";
1923

2024
boolean noTitle() default false;

src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ public void generate(ObjectNode fieldFormDefinition, Field field) {
1919
fieldFormDefinition.put("title", title);
2020
}
2121

22+
String fieldAddonLeft = annotation.fieldAddonLeft();
23+
if (!fieldAddonLeft.isEmpty()) {
24+
fieldFormDefinition.put("fieldAddonLeft", fieldAddonLeft);
25+
}
26+
27+
String fieldAddonRight = annotation.fieldAddonRight();
28+
if (!fieldAddonRight.isEmpty()) {
29+
fieldFormDefinition.put("fieldAddonRight", fieldAddonRight);
30+
}
31+
2232
String description = annotation.description();
2333
if (!description.isEmpty()) {
2434
fieldFormDefinition.put("description", description);

src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ public void generate(ObjectNode fieldFormDefinition, Field field) {
1818
if (!description.isEmpty()) {
1919
fieldFormDefinition.put("description", description);
2020
}
21+
22+
String fieldAddonLeft = annotation.fieldAddonLeft();
23+
if (!fieldAddonLeft.isEmpty()) {
24+
fieldFormDefinition.put("fieldAddonLeft", fieldAddonLeft);
25+
}
26+
27+
String fieldAddonRight = annotation.fieldAddonRight();
28+
if (!fieldAddonRight.isEmpty()) {
29+
fieldFormDefinition.put("fieldAddonRight", fieldAddonRight);
30+
}
31+
2132
String placeHolder = annotation.placeHolder();
2233
if (!placeHolder.isEmpty()) {
2334
fieldFormDefinition.put("placeholder", placeHolder);

src/main/java/io/asfjava/ui/core/generators/TextFieldGenerator.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ public void generate(ObjectNode fieldFormDefinition, Field field) {
1717
if (!description.isEmpty()) {
1818
fieldFormDefinition.put("description", description);
1919
}
20+
21+
String fieldAddonLeft = annotation.fieldAddonLeft();
22+
if (!fieldAddonLeft.isEmpty()) {
23+
fieldFormDefinition.put("fieldAddonLeft", fieldAddonLeft);
24+
}
25+
26+
String fieldAddonRight = annotation.fieldAddonRight();
27+
if (!fieldAddonRight.isEmpty()) {
28+
fieldFormDefinition.put("fieldAddonRight", fieldAddonRight);
29+
}
2030

2131
String placeHolder = annotation.placeHolder();
2232
if (!placeHolder.isEmpty()) {

src/test/java/io/asfjava/ui/core/schema/UiFormSchemaGeneratorTest.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,38 @@ public void testGenerate_textField() throws JsonProcessingException {
4646
//Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].type",hasItem("textField")));
4747

4848
}
49+
50+
@Test
51+
public void testGenerate_textField_WithFieldAddonRight() throws JsonProcessingException {
52+
UiForm ui = UiFormSchemaGenerator.get().generate(TextFieldForm2.class);
53+
String json = new ObjectMapper().writeValueAsString(ui);
54+
55+
56+
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.title",equalTo("First Name")));
57+
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.pattern",equalTo("[a-z]")));
58+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')]",hasSize(1)));
59+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].description",hasItem("This is a description for your first name field")));
60+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].placeholder",hasItem("Your first name")));
61+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].validationMessage",hasItem("this is a validation msg")));
62+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].fieldAddonRight",hasItem("@")));
63+
64+
}
65+
66+
@Test
67+
public void testGenerate_textField_WithFieldAddonLeft() throws JsonProcessingException {
68+
UiForm ui = UiFormSchemaGenerator.get().generate(TextFieldForm3.class);
69+
String json = new ObjectMapper().writeValueAsString(ui);
70+
71+
72+
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.title",equalTo("First Name")));
73+
Assert.assertThat(json, hasJsonPath("$.schema.properties.firstName.pattern",equalTo("[a-z]")));
74+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')]",hasSize(1)));
75+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].description",hasItem("This is a description for your first name field")));
76+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].placeholder",hasItem("Your first name")));
77+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].validationMessage",hasItem("this is a validation msg")));
78+
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='firstName')].fieldAddonLeft",hasItem("@")));
79+
80+
}
4981

5082
@Test
5183
public void testGenerate_Number() throws JsonProcessingException {
@@ -163,6 +195,8 @@ public void testGenerate_ComboBox_WithCustomValuesContainer() throws JsonProcess
163195
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].titleMap[?(@.name=='Female')].value",hasItem("female")));
164196

165197
}
198+
199+
166200

167201
}
168202

@@ -177,6 +211,28 @@ public String getFirstName() {
177211

178212
}
179213

214+
class TextFieldForm2 implements Serializable {
215+
216+
@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")
217+
private String firstName;
218+
219+
public String getFirstName() {
220+
return firstName;
221+
}
222+
223+
}
224+
225+
class TextFieldForm3 implements Serializable {
226+
227+
@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")
228+
private String firstName;
229+
230+
public String getFirstName() {
231+
return firstName;
232+
}
233+
234+
}
235+
180236
class NumberForm implements Serializable {
181237

182238
@Number(title = "Number of children", placeHolder = "Number of children", description = "This is a number", noTitle = true, validationMessage = "this is a validation msg", readOnly = true)

0 commit comments

Comments
 (0)