diff --git a/src/main/java/ninja/javafx/smartcsv/validation/AlphaNumericValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/AlphaNumericValidation.java index c8cc094..cfcde8e 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/AlphaNumericValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/AlphaNumericValidation.java @@ -30,7 +30,7 @@ import static org.apache.commons.validator.GenericValidator.matchRegexp; /** * Checks if the value is alpha numeric */ -public class AlphaNumericValidation implements Validation { +public class AlphaNumericValidation extends EmptyAllowedValidation { @Override public void check(int row, String value, ValidationError error) { if (!matchRegexp(value, "[0-9a-zA-Z]*")) { @@ -42,4 +42,6 @@ public class AlphaNumericValidation implements Validation { public Type getType() { return Type.ALPHANUMERIC; } + + } diff --git a/src/main/java/ninja/javafx/smartcsv/validation/DateValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/DateValidation.java index 65db299..b96739c 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/DateValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/DateValidation.java @@ -30,7 +30,7 @@ import static org.apache.commons.validator.GenericValidator.isDate; /** * Checks if the date has the right format */ -public class DateValidation implements Validation { +public class DateValidation extends EmptyAllowedValidation { private String dateformat; diff --git a/src/main/java/ninja/javafx/smartcsv/validation/DoubleValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/DoubleValidation.java index 8224e3d..32d2431 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/DoubleValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/DoubleValidation.java @@ -30,7 +30,7 @@ import static org.apache.commons.validator.GenericValidator.isDouble; /** * Checks if the value is a double */ -public class DoubleValidation implements Validation { +public class DoubleValidation extends EmptyAllowedValidation { @Override public void check(int row, String value, ValidationError error) { diff --git a/src/main/java/ninja/javafx/smartcsv/validation/EmptyAllowedValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/EmptyAllowedValidation.java new file mode 100644 index 0000000..f4dcdc0 --- /dev/null +++ b/src/main/java/ninja/javafx/smartcsv/validation/EmptyAllowedValidation.java @@ -0,0 +1,12 @@ +package ninja.javafx.smartcsv.validation; + +/** + * Created by abi on 09.08.2016. + */ +public abstract class EmptyAllowedValidation implements Validation { + + @Override + public boolean canBeChecked(String value) { + return value != null && !value.isEmpty(); + } +} diff --git a/src/main/java/ninja/javafx/smartcsv/validation/GroovyValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/GroovyValidation.java index 3d74bd8..8aa2f54 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/GroovyValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/GroovyValidation.java @@ -33,7 +33,7 @@ import org.codehaus.groovy.control.CompilationFailedException; /** * Executes the given groovy as check */ -public class GroovyValidation implements Validation { +public class GroovyValidation extends EmptyAllowedValidation { private String groovyScript; private GroovyShell shell = new GroovyShell(); diff --git a/src/main/java/ninja/javafx/smartcsv/validation/IntegerValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/IntegerValidation.java index 198bf36..46580f9 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/IntegerValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/IntegerValidation.java @@ -30,7 +30,7 @@ import static org.apache.commons.validator.GenericValidator.isInt; /** * Checks if the value is an integer */ -public class IntegerValidation implements Validation { +public class IntegerValidation extends EmptyAllowedValidation { @Override public void check(int row, String value, ValidationError error) { diff --git a/src/main/java/ninja/javafx/smartcsv/validation/MaxLengthValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/MaxLengthValidation.java index add6740..6969209 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/MaxLengthValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/MaxLengthValidation.java @@ -30,7 +30,7 @@ import static org.apache.commons.validator.GenericValidator.maxLength; /** * Checks if the value is shorter or exactly as long as the given max length */ -public class MaxLengthValidation implements Validation { +public class MaxLengthValidation extends EmptyAllowedValidation { private int maxLength; diff --git a/src/main/java/ninja/javafx/smartcsv/validation/MinLengthValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/MinLengthValidation.java index 7a2080c..2b21042 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/MinLengthValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/MinLengthValidation.java @@ -30,7 +30,7 @@ import static org.apache.commons.validator.GenericValidator.minLength; /** * Checks if the value is at minimum long as the given min length */ -public class MinLengthValidation implements Validation { +public class MinLengthValidation extends EmptyAllowedValidation { private int minLength; diff --git a/src/main/java/ninja/javafx/smartcsv/validation/NotEmptyValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/NotEmptyValidation.java index 12deaba..809fbb2 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/NotEmptyValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/NotEmptyValidation.java @@ -43,4 +43,9 @@ public class NotEmptyValidation implements Validation { public Type getType() { return Type.NOT_EMPTY; } + + @Override + public boolean canBeChecked(String value) { + return true; + } } diff --git a/src/main/java/ninja/javafx/smartcsv/validation/RegExpValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/RegExpValidation.java index 0f6f6be..36bb312 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/RegExpValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/RegExpValidation.java @@ -30,7 +30,7 @@ import static org.apache.commons.validator.GenericValidator.matchRegexp; /** * Checks the value against the given reg exp */ -public class RegExpValidation implements Validation { +public class RegExpValidation extends EmptyAllowedValidation { private String regexp; diff --git a/src/main/java/ninja/javafx/smartcsv/validation/UniqueValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/UniqueValidation.java index 4b769c0..10c4f24 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/UniqueValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/UniqueValidation.java @@ -30,7 +30,7 @@ import java.util.HashMap; /** * Checks if the value is unique in the column */ -public class UniqueValidation implements Validation { +public class UniqueValidation extends EmptyAllowedValidation { private HashMap columnValueMap = new HashMap<>(); diff --git a/src/main/java/ninja/javafx/smartcsv/validation/Validation.java b/src/main/java/ninja/javafx/smartcsv/validation/Validation.java index 27c4b76..931b0ad 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/Validation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/Validation.java @@ -33,4 +33,5 @@ public interface Validation { enum Type { NOT_EMPTY, UNIQUE, DOUBLE, INTEGER, MIN_LENGTH, MAX_LENGTH, DATE, ALPHANUMERIC, REGEXP, VALUE_OF, GROOVY } void check(int row, String value, ValidationError error); Type getType(); + boolean canBeChecked(String value); } diff --git a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java index b7de5a4..4a94f5f 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/Validator.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/Validator.java @@ -86,13 +86,8 @@ public class Validator { Map validationMap = columnValidationMap.get(column); if (validationMap != null) { for (Validation validation: validationMap.values()) { - - if (validation.getType() == Validation.Type.NOT_EMPTY) { + if (validation.canBeChecked(value)) { validation.check(row, value, error); - } else { - if (value != null && !value.isEmpty()) { - validation.check(row, value, error); - } } } } diff --git a/src/main/java/ninja/javafx/smartcsv/validation/ValueOfValidation.java b/src/main/java/ninja/javafx/smartcsv/validation/ValueOfValidation.java index 670e339..44032db 100644 --- a/src/main/java/ninja/javafx/smartcsv/validation/ValueOfValidation.java +++ b/src/main/java/ninja/javafx/smartcsv/validation/ValueOfValidation.java @@ -32,7 +32,7 @@ import static java.util.stream.Collectors.joining; /** * Checks if the value is part of a list of values */ -public class ValueOfValidation implements Validation { +public class ValueOfValidation extends EmptyAllowedValidation { private List values;