From 5694273c516d4535342b879923fa8461ed343837 Mon Sep 17 00:00:00 2001 From: Andreas Billmann Date: Mon, 5 Sep 2016 22:49:49 +0200 Subject: [PATCH] read constraints into an object instead of some map structure and change form init of validation editor --- .../ValidationEditorController.java | 45 +++++----- .../validation/ConstraintsConfiguration.java | 69 ++++++++++++++ .../validation/FieldConfiguration.java | 20 +++-- .../javafx/smartcsv/validation/Validator.java | 25 +++--- .../fx/validation/validationEditor.fxml | 89 +++++++++++-------- 5 files changed, 171 insertions(+), 77 deletions(-) create mode 100644 src/main/java/ninja/javafx/smartcsv/validation/ConstraintsConfiguration.java diff --git a/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java b/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java index c9bb88b..87da18f 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java @@ -26,15 +26,13 @@ package ninja.javafx.smartcsv.fx.validation; -import javafx.beans.binding.Bindings; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory; import ninja.javafx.smartcsv.fx.FXMLController; +import ninja.javafx.smartcsv.validation.ConstraintsConfiguration; import ninja.javafx.smartcsv.validation.FieldConfiguration; import ninja.javafx.smartcsv.validation.ValidationConfiguration; import org.fxmisc.richtext.CodeArea; @@ -52,10 +50,8 @@ import java.util.ResourceBundle; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static java.util.Arrays.asList; import static java.util.stream.Collectors.joining; import static javafx.beans.binding.Bindings.when; -import static ninja.javafx.smartcsv.validation.ValidationFormatHelper.doubleToInteger; /** * controller for editing column validations @@ -82,7 +78,7 @@ public class ValidationEditorController extends FXMLController { "transient", "true", "try", "void", "volatile", "while" }; - private static final String KEYWORD_PATTERN = "\\b(" + String.join("|", KEYWORDS) + ")\\b"; + private static final String KEYWORD_PATTERN = "\\b(" + String.join("|", (CharSequence[]) KEYWORDS) + ")\\b"; private static final String PAREN_PATTERN = "\\(|\\)"; private static final String BRACE_PATTERN = "\\{|\\}"; private static final String BRACKET_PATTERN = "\\[|\\]"; @@ -157,6 +153,7 @@ public class ValidationEditorController extends FXMLController { FieldConfiguration.Type.DATE, FieldConfiguration.Type.DATETIME, FieldConfiguration.Type.TIME); + typeComboBox.setValue(FieldConfiguration.Type.STRING); initMinMaxSpinner(); @@ -288,45 +285,49 @@ public class ValidationEditorController extends FXMLController { private void updateForm() { - updateCheckBox( - (Boolean)validationConfiguration.getFieldConfiguration(getSelectedColumn()).getConstraints().get("required"), - enableNotEmptyRule + FieldConfiguration config = validationConfiguration.getFieldConfiguration(getSelectedColumn()); + + if (config.getType() != null) { + typeComboBox.setValue(config.getType()); + } else { + typeComboBox.setValue(FieldConfiguration.Type.STRING); + } + + updateCodeAreaControl( + groovyRuleTextArea, + config.getGroovy(), + enableGroovyRule ); - updateCheckBox( - (Boolean)validationConfiguration.getFieldConfiguration(getSelectedColumn()).getConstraints().get("unique"), - enableUniqueRule - ); + ConstraintsConfiguration constraints = config.getConstraints(); + updateCheckBox(constraints != null ? constraints.getRequired() : false, enableNotEmptyRule); + updateCheckBox(constraints != null ? constraints.getUnique() : false, enableUniqueRule); updateSpinner( minLengthSpinner, - doubleToInteger((Double)validationConfiguration.getFieldConfiguration(getSelectedColumn()).getConstraints().get("minLength")), + constraints != null ? constraints.getMinLength() : null, enableMinLengthRule ); updateSpinner( maxLengthSpinner, - doubleToInteger((Double)validationConfiguration.getFieldConfiguration(getSelectedColumn()).getConstraints().get("maxLength")), + constraints != null ? constraints.getMaxLength() : null, enableMaxLengthRule ); updateTextInputControl( regexpRuleTextField, - (String)validationConfiguration.getFieldConfiguration(getSelectedColumn()).getConstraints().get("pattern"), + constraints != null ? constraints.getPattern() : null, enableRegexpRule ); updateTextInputControl( valueOfRuleTextField, - (String)validationConfiguration.getFieldConfiguration(getSelectedColumn()).getConstraints().get("enum"), + constraints != null ? constraints.getEnumeration() : null, enableValueOfRule ); - updateCodeAreaControl( - groovyRuleTextArea, - (String)validationConfiguration.getFieldConfiguration(getSelectedColumn()).getConstraints().get("groovy"), - enableGroovyRule - ); + } private void updateCheckBox(Boolean value, CheckBox ruleEnabled) { diff --git a/src/main/java/ninja/javafx/smartcsv/validation/ConstraintsConfiguration.java b/src/main/java/ninja/javafx/smartcsv/validation/ConstraintsConfiguration.java new file mode 100644 index 0000000..be6e7cb --- /dev/null +++ b/src/main/java/ninja/javafx/smartcsv/validation/ConstraintsConfiguration.java @@ -0,0 +1,69 @@ +package ninja.javafx.smartcsv.validation; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +/** + * Created by PC on 04.09.2016. + */ +public class ConstraintsConfiguration { + private Boolean required; + private Boolean unique; + private Integer minLength; + private Integer maxLength; + + private String pattern; + + @SerializedName("enum") + private List enumeration; + + public Boolean getRequired() { + return required; + } + + public void setRequired(Boolean required) { + this.required = required; + } + + public Boolean getUnique() { + return unique; + } + + public void setUnique(Boolean unique) { + this.unique = unique; + } + + public Integer getMinLength() { + return minLength; + } + + public void setMinLength(Integer minLength) { + this.minLength = minLength; + } + + public Integer getMaxLength() { + return maxLength; + } + + public void setMaxLength(Integer maxLength) { + this.maxLength = maxLength; + } + + public String getPattern() { + return pattern; + } + + public void setPattern(String pattern) { + this.pattern = pattern; + } + + public List getEnumeration() { + return enumeration; + } + + public void setEnumeration(List enumeration) { + this.enumeration = enumeration; + } + +} diff --git a/src/main/java/ninja/javafx/smartcsv/validation/FieldConfiguration.java b/src/main/java/ninja/javafx/smartcsv/validation/FieldConfiguration.java index 39af161..2497a99 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/FieldConfiguration.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/FieldConfiguration.java @@ -2,9 +2,6 @@ package ninja.javafx.smartcsv.validation; import com.google.gson.annotations.SerializedName; -import java.util.List; -import java.util.Map; - /** * @author abi */ @@ -25,7 +22,9 @@ public class FieldConfiguration { private String description; private String format; private Object missingValue; - private Map constraints; + private ConstraintsConfiguration constraints; + private String groovy; + public String getName() { return name; @@ -75,11 +74,20 @@ public class FieldConfiguration { this.missingValue = missingValue; } - public Map getConstraints() { + public ConstraintsConfiguration getConstraints() { return constraints; } - public void setConstraints(Map constraints) { + public void setConstraints(ConstraintsConfiguration constraints) { this.constraints = constraints; } + + public String getGroovy() { + return groovy; + } + + public void setGroovy(String groovy) { + this.groovy = groovy; + } + } diff --git a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java index a2a2a1a..dbca6c9 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java @@ -182,38 +182,41 @@ public class Validator { } } - if (column.getConstraints() != null) { - Boolean notEmptyRule = (Boolean)column.getConstraints().get("required"); + String groovy = column.getGroovy(); + if (groovy != null && !groovy.trim().isEmpty()) { + add(column.getName(), new GroovyValidation(groovy)); + } + + ConstraintsConfiguration constraints = column.getConstraints(); + if (constraints != null) { + Boolean notEmptyRule = constraints.getRequired(); if (notEmptyRule != null && notEmptyRule) { add(column.getName(), new NotEmptyValidation()); } - Boolean uniqueRule = (Boolean)column.getConstraints().get("unique"); + Boolean uniqueRule = constraints.getUnique(); if (uniqueRule != null && uniqueRule) { add(column.getName(), new UniqueValidation(columnValueProvider, column.getName())); } - Integer minLength = doubleToInteger((Double)column.getConstraints().get("minLength")); + Integer minLength = constraints.getMinLength(); if (minLength != null) { add(column.getName(), new MinLengthValidation(minLength)); } - Integer maxLength = doubleToInteger((Double)column.getConstraints().get("maxLength")); + Integer maxLength = constraints.getMaxLength(); if (maxLength != null) { add(column.getName(), new MaxLengthValidation(maxLength)); } - String regexp = (String)column.getConstraints().get("pattern"); + String regexp = constraints.getPattern(); if (regexp != null && !regexp.trim().isEmpty()) { add(column.getName(), new RegExpValidation(regexp)); } - String groovy = (String)column.getConstraints().get("groovy"); - if (groovy != null && !groovy.trim().isEmpty()) { - add(column.getName(), new GroovyValidation(groovy)); - } - List valueOfRule = (List)column.getConstraints().get("enum"); + + List valueOfRule = constraints.getEnumeration(); if (valueOfRule != null && !valueOfRule.isEmpty()) { add(column.getName(), new ValueOfValidation(valueOfRule)); } diff --git a/src/main/resources/ninja/javafx/smartcsv/fx/validation/validationEditor.fxml b/src/main/resources/ninja/javafx/smartcsv/fx/validation/validationEditor.fxml index e85fc6c..9699436 100644 --- a/src/main/resources/ninja/javafx/smartcsv/fx/validation/validationEditor.fxml +++ b/src/main/resources/ninja/javafx/smartcsv/fx/validation/validationEditor.fxml @@ -13,52 +13,65 @@ - + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + - +