diff --git a/pom.xml b/pom.xml index 80aa036..60657b6 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.github.jonpereiradev jfile-reader - 0.5.0 + 0.6.0 jar ${project.groupId}:${project.artifactId} API for read and parse a file into an object diff --git a/src/main/java/com/jonpereiradev/jfile/reader/file/JFileColumn.java b/src/main/java/com/jonpereiradev/jfile/reader/file/JFileColumn.java index 4e0b912..77992ae 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/file/JFileColumn.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/file/JFileColumn.java @@ -12,14 +12,18 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.Arrays; import java.util.Date; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.function.Function; +import java.util.regex.Pattern; public class JFileColumn implements Comparable { + private static final Pattern DEFAULT_ARRAY_SEPARATOR = Pattern.compile(",\\s*"); private static final ConcurrentMap, Function> MAPPER = new ConcurrentHashMap<>(); static { @@ -56,24 +60,6 @@ public JFileColumn(JFileReaderContext context, int position, String content) { this.content = content; } - @Override - public int compareTo(JFileColumn o) { - return Integer.compare(position, o.position); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - JFileColumn that = (JFileColumn) o; - return position == that.position; - } - - @Override - public int hashCode() { - return Objects.hash(position); - } - public int getPosition() { return position; } @@ -87,6 +73,14 @@ public String getText() { return content; } + public String[] getTextArray() { + return getTextArray(DEFAULT_ARRAY_SEPARATOR); + } + + public String[] getTextArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getText).toArray(String[]::new)); + } + public Character getCharacter() { if (StringUtils.isBlank(content) || content.length() > 1) { return null; @@ -95,12 +89,32 @@ public Character getCharacter() { return content.charAt(0); } + public Character[] getCharacterArray() { + return getCharacterArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Character[] getCharacterArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getCharacter).toArray(Character[]::new)); + } + public Short getShort() { if (StringUtils.isBlank(content)) { return null; } - return Short.valueOf(content); + try { + return Short.valueOf(content); + } catch (NumberFormatException e) { + return null; + } + } + + public Short[] getShortArray() { + return getShortArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Short[] getShortArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getShort).toArray(Short[]::new)); } public Integer getInt() { @@ -108,7 +122,19 @@ public Integer getInt() { return null; } - return Integer.valueOf(content); + try { + return Integer.valueOf(content); + } catch (NumberFormatException e) { + return null; + } + } + + public Integer[] getIntArray() { + return getIntArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Integer[] getIntArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getInt).toArray(Integer[]::new)); } public Long getLong() { @@ -116,7 +142,19 @@ public Long getLong() { return null; } - return Long.valueOf(content); + try { + return Long.valueOf(content); + } catch (NumberFormatException e) { + return null; + } + } + + public Long[] getLongArray() { + return getLongArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Long[] getLongArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getLong).toArray(Long[]::new)); } public Float getFloat() { @@ -124,7 +162,19 @@ public Float getFloat() { return null; } - return Float.valueOf(content); + try { + return Float.valueOf(content); + } catch (NumberFormatException e) { + return null; + } + } + + public Float[] getFloatArray() { + return getFloatArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Float[] getFloatArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getFloat).toArray(Float[]::new)); } public Double getDouble() { @@ -132,7 +182,19 @@ public Double getDouble() { return null; } - return Double.valueOf(content); + try { + return Double.valueOf(content); + } catch (NumberFormatException e) { + return null; + } + } + + public Double[] getDoubleArray() { + return getDoubleArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Double[] getDoubleArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getDouble).toArray(Double[]::new)); } public Boolean getBoolean() { @@ -151,12 +213,32 @@ public Boolean getBoolean() { return BooleanUtils.toBooleanObject(booleanString); } + public Boolean[] getBooleanArray() { + return getBooleanArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Boolean[] getBooleanArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getBoolean).toArray(Boolean[]::new)); + } + public BigInteger getBigInteger() { if (StringUtils.isBlank(content)) { return null; } - return new BigInteger(content); + try { + return new BigInteger(content); + } catch (NumberFormatException e) { + return null; + } + } + + public BigInteger[] getBigIntegerArray() { + return getBigIntegerArray(DEFAULT_ARRAY_SEPARATOR); + } + + public BigInteger[] getBigIntegerArray(Pattern pattern) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(JFileColumn::getBigInteger).toArray(BigInteger[]::new)); } public BigDecimal getBigDecimal() { @@ -171,10 +253,22 @@ public BigDecimal getBigDecimal(DecimalFormat bigDecimalFormatter) { try { return (BigDecimal) bigDecimalFormatter.parse(content); } catch (ParseException e) { - throw new NumberFormatException(e.getMessage()); + return null; } } + public BigDecimal[] getBigDecimalArray() { + return getBigDecimalArray(DEFAULT_ARRAY_SEPARATOR); + } + + public BigDecimal[] getBigDecimalArray(Pattern pattern) { + return getBigDecimalArray(pattern, context.getBigDecimalFormatter()); + } + + public BigDecimal[] getBigDecimalArray(Pattern pattern, DecimalFormat bigDecimalFormatter) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(o -> o.getBigDecimal(bigDecimalFormatter)).toArray(BigDecimal[]::new)); + } + public Date getDate() { return getDate(context.getDateFormat()); } @@ -191,6 +285,18 @@ public Date getDate(DateFormat pattern) { } } + public Date[] getDateArray() { + return getDateArray(DEFAULT_ARRAY_SEPARATOR); + } + + public Date[] getDateArray(Pattern pattern) { + return getDateArray(pattern, context.getDateFormat()); + } + + public Date[] getDateArray(Pattern pattern, DateFormat dateFormat) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(o -> o.getDate(dateFormat)).toArray(Date[]::new)); + } + public LocalDate getLocalDate() { return getLocalDate(context.getLocalDateFormatter()); } @@ -200,7 +306,23 @@ public LocalDate getLocalDate(DateTimeFormatter dateTimeFormatter) { return null; } - return LocalDate.parse(content, dateTimeFormatter); + try { + return LocalDate.parse(content, dateTimeFormatter); + } catch (DateTimeParseException e) { + return null; + } + } + + public LocalDate[] getLocalDateArray() { + return getLocalDateArray(DEFAULT_ARRAY_SEPARATOR); + } + + public LocalDate[] getLocalDateArray(Pattern pattern) { + return getLocalDateArray(pattern, context.getLocalDateFormatter()); + } + + public LocalDate[] getLocalDateArray(Pattern pattern, DateTimeFormatter dateTimeFormatter) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(o -> o.getLocalDate(dateTimeFormatter)).toArray(LocalDate[]::new)); } public LocalDateTime getLocalDateTime() { @@ -212,10 +334,49 @@ public LocalDateTime getLocalDateTime(DateTimeFormatter dateTimeFormatter) { return null; } - return LocalDateTime.parse(content, dateTimeFormatter); + try { + return LocalDateTime.parse(content, dateTimeFormatter); + } catch (DateTimeParseException e) { + return null; + } + } + + public LocalDateTime[] getLocalDateTimeArray() { + return getLocalDateTimeArray(DEFAULT_ARRAY_SEPARATOR); + } + + public LocalDateTime[] getLocalDateTimeArray(Pattern pattern) { + return getLocalDateTimeArray(pattern, context.getLocalDateTimeFormatter()); + } + + public LocalDateTime[] getLocalDateTimeArray(Pattern pattern, DateTimeFormatter dateTimeFormatter) { + return getArrayOf(pattern, array -> Arrays.stream(array).map(o -> o.getLocalDateTime(dateTimeFormatter)).toArray(LocalDateTime[]::new)); + } + + private T[] getArrayOf(Pattern pattern, Function function) { + String[] split = pattern.split(content); + return function.apply(Arrays.stream(split).map(s -> new JFileColumn(context, position, s)).toArray(JFileColumn[]::new)); } public JFileReaderContext getContext() { return context; } + + @Override + public int compareTo(JFileColumn o) { + return Integer.compare(position, o.position); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + JFileColumn that = (JFileColumn) o; + return position == that.position; + } + + @Override + public int hashCode() { + return Objects.hash(position); + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigDecimalTypeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigDecimalTypeRule.java index 27b05fc..8baf06d 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigDecimalTypeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigDecimalTypeRule.java @@ -15,11 +15,7 @@ public BigDecimalTypeRule(int position, DecimalFormat decimalFormat) { @Override public boolean isValid(JFileColumn fileColumn) { - try { - return fileColumn.getText().isEmpty() || fileColumn.getBigDecimal(decimalFormat) != null; - } catch (NumberFormatException e) { - return false; - } + return fileColumn.getText().isEmpty() || fileColumn.getBigDecimal(decimalFormat) != null; } @Override diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigIntegerTypeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigIntegerTypeRule.java index 85b1152..aa760db 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigIntegerTypeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/BigIntegerTypeRule.java @@ -10,11 +10,7 @@ public BigIntegerTypeRule(int position) { @Override public boolean isValid(JFileColumn fileColumn) { - try { - return fileColumn.getText().isEmpty() || fileColumn.getBigInteger() != null; - } catch (NumberFormatException e) { - return false; - } + return fileColumn.getText().isEmpty() || fileColumn.getBigInteger() != null; } @Override diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/CnpjRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/CnpjRule.java index a6971fc..9fce975 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/CnpjRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/CnpjRule.java @@ -2,8 +2,24 @@ import com.jonpereiradev.jfile.reader.file.JFileColumn; +import java.util.Arrays; +import java.util.List; + public class CnpjRule extends AbstractColumnRule { + private static final List INVALID_CNPJS = Arrays.asList( + "00000000000000", + "11111111111111", + "22222222222222", + "33333333333333", + "44444444444444", + "55555555555555", + "66666666666666", + "77777777777777", + "88888888888888", + "99999999999999" + ); + public CnpjRule(int position) { super(position); } @@ -12,7 +28,7 @@ public CnpjRule(int position) { public boolean isValid(JFileColumn fileColumn) { String cnpj = fileColumn.getText(); - if (cnpj.equals("00000000000000") || cnpj.length() != 14) { + if (cnpj.length() != 14 || INVALID_CNPJS.contains(cnpj)) { return false; } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateAfterRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateAfterRule.java index f4e5cf5..b2d6654 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateAfterRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateAfterRule.java @@ -31,6 +31,11 @@ public boolean isValid(JFileColumn fileColumn) { return date.compareTo(getComparingDate()) > 0; } + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDate(dateFormat) != null && getComparingDate() != null; + } + private Date getComparingDate() { if (columnPosition == -1) { return min; diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateBeforeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateBeforeRule.java index 78e70f3..eae1840 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateBeforeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateBeforeRule.java @@ -31,6 +31,11 @@ public boolean isValid(JFileColumn fileColumn) { return date.compareTo(getComparingDate()) < 0; } + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDate(dateFormat) != null && getComparingDate() != null; + } + private Date getComparingDate() { if (columnPosition == -1) { return max; diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureOrPresentRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureOrPresentRule.java index dbcbf0a..a4043b9 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureOrPresentRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureOrPresentRule.java @@ -22,4 +22,9 @@ public boolean isValid(JFileColumn fileColumn) { return current.compareTo(date) <= 0; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDate(dateFormat) != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureRule.java index 2b6716c..81e3147 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DateFutureRule.java @@ -8,18 +8,23 @@ public class DateFutureRule extends AbstractColumnRule { - private final DateFormat formatter; + private final DateFormat dateFormat; - public DateFutureRule(int position, DateFormat formatter) { + public DateFutureRule(int position, DateFormat dateFormat) { super(position); - this.formatter = formatter; + this.dateFormat = dateFormat; } @Override public boolean isValid(JFileColumn fileColumn) { - Date date = fileColumn.getDate(formatter); + Date date = fileColumn.getDate(dateFormat); Date current = Calendar.getInstance().getTime(); return current.before(date); } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDate(dateFormat) != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastOrPresentRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastOrPresentRule.java index fd26765..5309d04 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastOrPresentRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastOrPresentRule.java @@ -22,4 +22,9 @@ public boolean isValid(JFileColumn fileColumn) { return current.compareTo(date) >= 0; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDate(dateFormat) != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastRule.java index 170273c..21afb45 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DatePastRule.java @@ -8,18 +8,23 @@ public class DatePastRule extends AbstractColumnRule { - private final DateFormat formatter; + private final DateFormat dateFormat; - public DatePastRule(int position, DateFormat formatter) { + public DatePastRule(int position, DateFormat dateFormat) { super(position); - this.formatter = formatter; + this.dateFormat = dateFormat; } @Override public boolean isValid(JFileColumn fileColumn) { - Date date = fileColumn.getDate(formatter); + Date date = fileColumn.getDate(dateFormat); Date current = Calendar.getInstance().getTime(); return current.after(date); } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDate(dateFormat) != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainCharacterRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainCharacterRule.java index 2cd0d84..ef5264f 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainCharacterRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainCharacterRule.java @@ -17,4 +17,9 @@ public DomainCharacterRule(int position, List domains) { public boolean isValid(JFileColumn fileColumn) { return domains.contains(fileColumn.getCharacter()); } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getCharacter() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainIntegerRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainIntegerRule.java index 94a96b1..2193ce4 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainIntegerRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainIntegerRule.java @@ -17,4 +17,9 @@ public DomainIntegerRule(int position, List domains) { public boolean isValid(JFileColumn fileColumn) { return domains.contains(fileColumn.getInt()); } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getInt() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainLongRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainLongRule.java index 61c91f8..4385815 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainLongRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainLongRule.java @@ -17,4 +17,9 @@ public DomainLongRule(int position, List domains) { public boolean isValid(JFileColumn fileColumn) { return domains.contains(fileColumn.getLong()); } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getLong() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainShortRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainShortRule.java index 71df55e..d843fcb 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainShortRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DomainShortRule.java @@ -17,4 +17,9 @@ public DomainShortRule(int position, List domains) { public boolean isValid(JFileColumn fileColumn) { return domains.contains(fileColumn.getShort()); } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getShort() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DoubleTypeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DoubleTypeRule.java index 3c83ec3..5d90dc2 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DoubleTypeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/DoubleTypeRule.java @@ -10,11 +10,7 @@ public DoubleTypeRule(int position) { @Override public boolean isValid(JFileColumn fileColumn) { - try { - return fileColumn.getText().isEmpty() || fileColumn.getDouble() != null; - } catch (NumberFormatException e) { - return false; - } + return fileColumn.getText().isEmpty() || fileColumn.getDouble() != null; } @Override diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/FloatTypeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/FloatTypeRule.java index ffa2cae..25a1b52 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/FloatTypeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/FloatTypeRule.java @@ -10,11 +10,7 @@ public FloatTypeRule(int position) { @Override public boolean isValid(JFileColumn fileColumn) { - try { - return fileColumn.getText().isEmpty() || fileColumn.getFloat() != null; - } catch (NumberFormatException e) { - return false; - } + return fileColumn.getText().isEmpty() || fileColumn.getFloat() != null; } @Override diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/IntegerTypeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/IntegerTypeRule.java index d45e442..abf2869 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/IntegerTypeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/IntegerTypeRule.java @@ -10,11 +10,7 @@ public IntegerTypeRule(int position) { @Override public boolean isValid(JFileColumn fileColumn) { - try { - return fileColumn.getText().isEmpty() || fileColumn.getInt() != null; - } catch (NumberFormatException e) { - return false; - } + return fileColumn.getText().isEmpty() || fileColumn.getInt() != null; } @Override diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateAfterRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateAfterRule.java index c4f55f6..0c8b101 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateAfterRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateAfterRule.java @@ -33,7 +33,7 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDate(dateTimeFormatter) != null && getComparingDate() != null; } private LocalDate getComparingDate() { diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateBeforeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateBeforeRule.java index 51c81df..af18aa8 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateBeforeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateBeforeRule.java @@ -33,7 +33,7 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDate(dateTimeFormatter) != null && getComparingDate() != null; } private LocalDate getComparingDate() { diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureOrPresentRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureOrPresentRule.java index 096a91c..50ee2d8 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureOrPresentRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureOrPresentRule.java @@ -24,6 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDate(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureRule.java index 495d8db..2e81c94 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateFutureRule.java @@ -24,6 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDate(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastOrPresentRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastOrPresentRule.java index 3679ee2..e4515b7 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastOrPresentRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastOrPresentRule.java @@ -24,6 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDate(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastRule.java index d60ef72..baf77a3 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDatePastRule.java @@ -24,6 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDate(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeAfterRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeAfterRule.java index 7af4c5d..c50f1fc 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeAfterRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeAfterRule.java @@ -33,7 +33,7 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDateTime(dateTimeFormatter) != null && getComparingDate() != null; } private LocalDateTime getComparingDate() { diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeBeforeRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeBeforeRule.java index 662eee7..471ff6e 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeBeforeRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeBeforeRule.java @@ -33,7 +33,7 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDateTime(dateTimeFormatter) != null && getComparingDate() != null; } private LocalDateTime getComparingDate() { diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureOrPresentRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureOrPresentRule.java index bc06265..e24b7be 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureOrPresentRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureOrPresentRule.java @@ -24,6 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTimeTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDateTime(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureRule.java index 5960f67..1f14fb2 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimeFutureRule.java @@ -24,6 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTimeTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDateTime(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastOrPresentRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastOrPresentRule.java index 8f3961e..767b867 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastOrPresentRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastOrPresentRule.java @@ -24,6 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - return new LocalDateTimeTypeRule(getPosition(), dateTimeFormatter).isValid(fileColumn); + return fileColumn.getLocalDateTime(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastRule.java index a89ff3f..5392d4a 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/LocalDateTimePastRule.java @@ -4,20 +4,19 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeParseException; public class LocalDateTimePastRule extends AbstractColumnRule { - private final DateTimeFormatter formatter; + private final DateTimeFormatter dateTimeFormatter; - public LocalDateTimePastRule(int position, DateTimeFormatter formatter) { + public LocalDateTimePastRule(int position, DateTimeFormatter dateTimeFormatter) { super(position); - this.formatter = formatter; + this.dateTimeFormatter = dateTimeFormatter; } @Override public boolean isValid(JFileColumn fileColumn) { - LocalDateTime date = fileColumn.getLocalDateTime(formatter); + LocalDateTime date = fileColumn.getLocalDateTime(dateTimeFormatter); LocalDateTime current = LocalDateTime.now(); return current.compareTo(date) > 0; @@ -25,10 +24,6 @@ public boolean isValid(JFileColumn fileColumn) { @Override public boolean canValidate(JFileColumn fileColumn) { - try { - return fileColumn.getLocalDateTime(formatter) != null; - } catch (DateTimeParseException e) { - return false; - } + return fileColumn.getLocalDateTime(dateTimeFormatter) != null; } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigDecimalRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigDecimalRule.java index 76b006f..dd30dab 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigDecimalRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigDecimalRule.java @@ -20,4 +20,9 @@ public MaxBigDecimalRule(int position, BigDecimal max, DecimalFormat decimalForm public boolean isValid(JFileColumn fileColumn) { return fileColumn.getBigDecimal(decimalFormat).compareTo(max) <= 0; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getBigDecimal(decimalFormat) != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigIntegerRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigIntegerRule.java index 7315a46..aa43c2f 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigIntegerRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxBigIntegerRule.java @@ -17,4 +17,9 @@ public MaxBigIntegerRule(int position, BigInteger max) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getBigInteger().compareTo(max) <= 0; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getBigInteger() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxDoubleRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxDoubleRule.java index b49f550..3b9e506 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxDoubleRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxDoubleRule.java @@ -15,4 +15,9 @@ public MaxDoubleRule(int position, double max) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getDouble() <= max; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDouble() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxFloatRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxFloatRule.java index 9156ee1..5d3e739 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxFloatRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxFloatRule.java @@ -15,4 +15,9 @@ public MaxFloatRule(int position, float max) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getFloat() <= max; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getFloat() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxIntegerRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxIntegerRule.java index ad813e3..c600d15 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxIntegerRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxIntegerRule.java @@ -15,4 +15,9 @@ public MaxIntegerRule(int position, int max) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getInt() <= max; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getInt() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxLongRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxLongRule.java index aa6546f..a2a29e9 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxLongRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxLongRule.java @@ -15,4 +15,9 @@ public MaxLongRule(int position, long max) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getLong() <= max; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getLong() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxShortRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxShortRule.java index 9a8fd50..f1ef28d 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxShortRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MaxShortRule.java @@ -15,4 +15,9 @@ public MaxShortRule(int position, short max) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getShort() <= max; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getShort() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigDecimalRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigDecimalRule.java index 4bfcc86..286d86d 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigDecimalRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigDecimalRule.java @@ -20,4 +20,9 @@ public MinBigDecimalRule(int position, BigDecimal min, DecimalFormat decimalForm public boolean isValid(JFileColumn fileColumn) { return fileColumn.getBigDecimal(decimalFormat).compareTo(min) >= 0; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getBigDecimal(decimalFormat) != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigIntegerRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigIntegerRule.java index 3ce3042..f7daab2 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigIntegerRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinBigIntegerRule.java @@ -17,4 +17,9 @@ public MinBigIntegerRule(int position, BigInteger min) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getBigInteger().compareTo(min) >= 0; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getBigInteger() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinDoubleRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinDoubleRule.java index f2f165f..9db24ac 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinDoubleRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinDoubleRule.java @@ -15,4 +15,9 @@ public MinDoubleRule(int position, double min) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getDouble() >= min; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getDouble() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinFloatRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinFloatRule.java index a3927c9..d07a079 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinFloatRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinFloatRule.java @@ -15,4 +15,9 @@ public MinFloatRule(int position, float min) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getFloat() >= min; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getFloat() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinIntegerRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinIntegerRule.java index 25ee79a..b83cab9 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinIntegerRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinIntegerRule.java @@ -15,4 +15,9 @@ public MinIntegerRule(int position, int min) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getInt() >= min; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getInt() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinLongRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinLongRule.java index aa40440..4aa6228 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinLongRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinLongRule.java @@ -15,4 +15,9 @@ public MinLongRule(int position, long min) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getLong() >= min; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getLong() != null; + } } diff --git a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinShortRule.java b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinShortRule.java index 236bb21..9fc37f9 100644 --- a/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinShortRule.java +++ b/src/main/java/com/jonpereiradev/jfile/reader/rule/column/MinShortRule.java @@ -15,4 +15,9 @@ public MinShortRule(int position, short min) { public boolean isValid(JFileColumn fileColumn) { return fileColumn.getShort() >= min; } + + @Override + public boolean canValidate(JFileColumn fileColumn) { + return fileColumn.getShort() != null; + } }