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 e479c51..ac6615e 100644 --- a/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java +++ b/src/main/java/ninja/javafx/smartcsv/fx/validation/ValidationEditorController.java @@ -107,6 +107,9 @@ public class ValidationEditorController extends FXMLController { @FXML private CheckBox alphanumericRuleCheckBox; + @FXML + private CheckBox uniqueRuleCheckBox; + @FXML private Spinner minLengthSpinner; @@ -155,6 +158,9 @@ public class ValidationEditorController extends FXMLController { @FXML private CheckBox enableGroovyRule; + @FXML + private CheckBox enableUniqueRule; + @Value("${fxml.smartcvs.validation.editor.view}") @Override @@ -172,6 +178,7 @@ public class ValidationEditorController extends FXMLController { initCheckBox(integerRuleCheckBox, enableIntegerRule); initCheckBox(doublerRuleCheckBox, enableDoubleRule); initCheckBox(alphanumericRuleCheckBox, enableAlphanumericRule); + initCheckBox(uniqueRuleCheckBox, enableUniqueRule); initSpinner(minLengthSpinner, enableMinLengthRule); initSpinner(maxLengthSpinner, enableMaxLengthRule); initTextInputControl(dateformatRuleTextField, enableDateRule); @@ -214,6 +221,12 @@ public class ValidationEditorController extends FXMLController { validationConfiguration.setNotEmptyRuleFor(selectedColumn.getValue(), null); } + if (enableUniqueRule.isSelected()) { + validationConfiguration.setUniqueRuleFor(selectedColumn.getValue(), uniqueRuleCheckBox.isSelected()); + } else { + validationConfiguration.setUniqueRuleFor(selectedColumn.getValue(), null); + } + if (enableDoubleRule.isSelected()) { validationConfiguration.setDoubleRuleFor(selectedColumn.getValue(), doublerRuleCheckBox.isSelected()); } else { @@ -289,6 +302,12 @@ public class ValidationEditorController extends FXMLController { enableAlphanumericRule ); + updateCheckBox( + uniqueRuleCheckBox, + validationConfiguration.getUniqueRuleFor(getSelectedColumn()), + enableUniqueRule + ); + updateSpinner( minLengthSpinner, validationConfiguration.getMinLengthRuleFor(getSelectedColumn()), diff --git a/src/main/java/ninja/javafx/smartcsv/validation/ValidationConfiguration.java b/src/main/java/ninja/javafx/smartcsv/validation/ValidationConfiguration.java index a00da4b..3bbf172 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/ValidationConfiguration.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/ValidationConfiguration.java @@ -52,7 +52,7 @@ public class ValidationConfiguration { headerConfiguration.setNames(headerNames); } - public Boolean getUniquenessRuleFor(String column) { + public Boolean getUniqueRuleFor(String column) { return (Boolean)getValue(column, "unique"); } @@ -114,6 +114,11 @@ public class ValidationConfiguration { setValue(column, value, "not empty"); } + public void setUniqueRuleFor(String column, Boolean value) { + setValue(column, value, "unique"); + } + + public void setMinLengthRuleFor(String column, Integer value) { setValue(column, value == null ? null : value.doubleValue(), "minlength"); } diff --git a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java index b604da8..2f6d999 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java @@ -32,7 +32,6 @@ import groovy.lang.Script; import org.codehaus.groovy.control.CompilationFailedException; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; @@ -112,7 +111,7 @@ public class Validator { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private void checkUniqueness(String column, String value, Integer lineNumber, ValidationError error) { - if (validationConfig.getUniquenessRuleFor(column) != null && validationConfig.getUniquenessRuleFor(column)) { + if (validationConfig.getUniqueRuleFor(column) != null && validationConfig.getUniqueRuleFor(column)) { HashMap columnValueMap = uniquenessLookupTable.get(column); columnValueMap = getColumnValueMap(column, columnValueMap); Integer valueInLineNumber = columnValueMap.get(value); diff --git a/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv.properties b/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv.properties index d3bc7c1..b47010a 100644 --- a/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv.properties +++ b/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv.properties @@ -71,6 +71,7 @@ validation.rule.label.groovy = groovy: validation.rules.active = active validation.rules.name = rule validation.rules.value = value +validation.rule.label.unique = Unique in column: dialog.validation.rules.title = Validation rules dialog.validation.rules.header = Validation rules of column "{0}" diff --git a/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv_de.properties b/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv_de.properties index f677635..a13561b 100644 --- a/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv_de.properties +++ b/src/main/resources/ninja/javafx/smartcsv/fx/smartcsv_de.properties @@ -80,6 +80,7 @@ validation.rule.label.groovy = groovy: validation.rules.active = Aktiv validation.rules.name = Regel validation.rules.value = Wert +validation.rule.label.unique = Einmalig in Spalte: dialog.validation.rules.title = Pr\u00fcfregeln dialog.validation.rules.header = Pr\u00fcfregeln f\u00fcr die Spalte "{0}" 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 d827480..201c598 100644 --- a/src/main/resources/ninja/javafx/smartcsv/fx/validation/validationEditor.fxml +++ b/src/main/resources/ninja/javafx/smartcsv/fx/validation/validationEditor.fxml @@ -1,17 +1,16 @@ + - - - + @@ -31,41 +30,46 @@ +