Skip to content

Add fieldAddon support #46

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jun 11, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,17 @@

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;

@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;
Expand All @@ -29,9 +40,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)
Expand Down Expand Up @@ -72,6 +80,22 @@ public void setEmail(String eMail) {
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;
}

public String getWebSite() {
return webSite;
}

public void setLastName(String lastName) {
this.lastName = lastName;
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/io/asfjava/ui/core/form/Number.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@

String placeHolder() default "";

String description() default "";
String description() default "";

String fieldAddonLeft() default"";

String fieldAddonRight() default"";

boolean noTitle() default false;

Expand Down
4 changes: 4 additions & 0 deletions src/main/java/io/asfjava/ui/core/form/Password.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
String placeHolder() default "";

String description() default "";

String fieldAddonLeft() default"";

String fieldAddonRight() default"";

boolean noTitle() default false;

Expand Down
4 changes: 4 additions & 0 deletions src/main/java/io/asfjava/ui/core/form/TextField.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@

String description() default "";

String fieldAddonLeft() default"";

String fieldAddonRight() default"";

String pattern() default "";

boolean noTitle() default false;
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/io/asfjava/ui/core/generators/NumberGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/io/asfjava/ui/core/generators/PasswordGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -163,6 +195,8 @@ public void testGenerate_ComboBox_WithCustomValuesContainer() throws JsonProcess
Assert.assertThat(json, hasJsonPath("$.form[?(@.key=='gender')].titleMap[?(@.name=='Female')].value",hasItem("female")));

}



}

Expand All @@ -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)
Expand Down