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;
+ }
}