This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch version3
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/version3 by this push:
new 9181cbf EMPIREDB-365
9181cbf is described below
commit 9181cbf6a4c8adbf0c45ab22a4929b4d20cb0ecc
Author: Rainer Döbele <[email protected]>
AuthorDate: Sat Jan 22 14:30:45 2022 +0100
EMPIREDB-365
---
.../java/org/apache/empire/commons/ObjectUtils.java | 12 ++++++++++++
.../main/java/org/apache/empire/db/DBRecord.java | 10 +++++-----
.../java/org/apache/empire/db/DBTableColumn.java | 21 +++++++++++----------
3 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
b/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
index ef23459..5163fb7 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
@@ -657,6 +657,10 @@ public final class ObjectUtils
return null;
if (v instanceof java.util.Date)
return ((java.util.Date)v);
+ if (v instanceof java.time.LocalDate)
+ return DateUtils.toDate((LocalDate)v);
+ if (v instanceof java.time.LocalDateTime)
+ return DateUtils.toDate((LocalDateTime)v);
// Convert from String
String str = v.toString();
if (str.length() > 10)
@@ -680,6 +684,10 @@ public final class ObjectUtils
return null;
if (v instanceof Date)
return ((Date)v);
+ if (v instanceof java.time.LocalDate)
+ return DateUtils.toDate((LocalDate)v);
+ if (v instanceof java.time.LocalDateTime)
+ return DateUtils.toDate((LocalDateTime)v);
// Get Calendar
if (v instanceof Number)
{ // Get Date from a number
@@ -715,6 +723,10 @@ public final class ObjectUtils
return null;
if (v instanceof java.util.Date)
return ((java.util.Date)v);
+ if (v instanceof java.time.LocalDate)
+ return DateUtils.toDate((LocalDate)v);
+ if (v instanceof java.time.LocalDateTime)
+ return DateUtils.toDate((LocalDateTime)v);
// Convert from String
String str = v.toString();
try
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
index 5c5964b..4d15c8f 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
@@ -642,6 +642,11 @@ public class DBRecord extends DBRecordData implements
DBContextAware, Record, Cl
boolean numeric = column.getDataType().isNumeric();
value = ObjectUtils.getEnumValue(enumVal, numeric);
}
+ // Is Value valid?
+ if (this.validateFieldValues)
+ { // validate
+ value = validateValue(column, value);
+ }
// Has Value changed?
if (ObjectUtils.compareEqual(current, value))
{ // value has not changed!
@@ -652,11 +657,6 @@ public class DBRecord extends DBRecordData implements
DBContextAware, Record, Cl
{ // Read Only column may be set
throw new FieldIsReadOnlyException(column);
}
- // Is Value valid?
- if (this.validateFieldValues)
- { // validate
- value = validateValue(column, value);
- }
// Init original values
modifyValue(index, value, true);
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
b/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
index c5f1f8c..0b9026e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
@@ -397,12 +397,16 @@ public class DBTableColumn extends DBColumn
// Check for LocalDate
if (value instanceof LocalDate)
break;
+ if (value instanceof LocalDateTime)
+ { value = ((LocalDateTime)value).toLocalDate();
+ break;
+ }
case DATETIME:
case TIMESTAMP:
// Check whether value is a valid date/time value!
if (!(value instanceof LocalDateTime) && !(value instanceof
Date) && !DBDatabase.SYSDATE.equals(value))
- { // Parse Date
- try {
+ { try {
+ // Parse Date
value = ObjectUtils.toDate(value);
} catch(ParseException e) {
log.info("Parsing '{}' to Date failed for column {}.
Message is "+e.toString(), value, getName());
@@ -420,7 +424,7 @@ public class DBTableColumn extends DBColumn
// check number
if (!(value instanceof java.lang.Number))
{ try
- { // Convert to String and check
+ { // Convert to Decimal
value = ObjectUtils.toDecimal(value);
// throws NumberFormatException if not a number!
} catch (NumberFormatException e) {
@@ -435,11 +439,10 @@ public class DBTableColumn extends DBColumn
case FLOAT:
if (!(value instanceof java.lang.Number))
{ try
- { // Convert to String and check
+ { // Convert to Double
value = ObjectUtils.toDouble(value);
// throws NumberFormatException if not a number!
- } catch (NumberFormatException e)
- {
+ } catch (NumberFormatException e) {
log.info("Parsing '{}' to Double failed for column {}.
Message is "+e.toString(), value, getName());
throw new FieldIllegalValueException(this,
String.valueOf(value), e);
}
@@ -457,11 +460,9 @@ public class DBTableColumn extends DBColumn
// check number
if (!(value instanceof java.lang.Number))
{ try
- { // Convert to String and check
+ { // Convert to Long
value = ObjectUtils.toLong(value);
- // throws NumberFormatException if not an integer!
- } catch (NumberFormatException e)
- {
+ } catch (NumberFormatException e) {
log.info("Parsing '{}' to Integer failed for column
{}. Message is "+e.toString(), value, getName());
throw new FieldIllegalValueException(this,
String.valueOf(value), e);
}