evitare che l'update inserisca i valori di default
This commit is contained in:
@@ -60,7 +60,6 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
import java.sql.Blob;
|
import java.sql.Blob;
|
||||||
import java.sql.Clob;
|
import java.sql.Clob;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
@@ -1183,32 +1182,28 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyDefault(String fieldName) throws IllegalAccessException, IOException {
|
public void applyDefault(String fieldName) throws IllegalAccessException, IOException {
|
||||||
List<Field> fields = getEntityHolder().getFields(this.getClass());
|
List<EntityHierarchy.Field> fields = getEntityHolder().getEntityFields(this.getClass(),
|
||||||
|
x -> (fieldName == null || x.getFieldName().equalsIgnoreCase(fieldName)) && x.isSqlField());
|
||||||
|
|
||||||
if (!UtilityString.isNullOrEmpty(fieldName)) {
|
|
||||||
fields = fields.stream()
|
|
||||||
.filter(x -> x.getName().equalsIgnoreCase(fieldName))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Field field : fields) {
|
for (EntityHierarchy.Field entityHierarchyField : fields) {
|
||||||
SqlField sqlField = field.getAnnotation(SqlField.class);
|
Field field = entityHierarchyField.getField();
|
||||||
if (sqlField != null) {
|
SqlField sqlField = entityHierarchyField.getSqlField();
|
||||||
String defaultValue = sqlField.defaultObjectValue();
|
|
||||||
String format = sqlField.format();
|
|
||||||
field.setAccessible(true);
|
|
||||||
Object object = field.get(this);
|
|
||||||
|
|
||||||
// NB: aiuta a rispettare la regola del default nel troncare la
|
String defaultValue = sqlField.defaultObjectValue();
|
||||||
// data anche se passata dall'esterno
|
String format = sqlField.format();
|
||||||
if (object instanceof Date && (CommonConstants.SYSDATE.equals(format) || CommonConstants.SYSDATE.equals(defaultValue))) {
|
field.setAccessible(true);
|
||||||
field.set(this, DateUtils.truncate(object, Calendar.DAY_OF_MONTH));
|
Object object = field.get(this);
|
||||||
}
|
|
||||||
|
|
||||||
if (object == null && !"".equals(defaultValue)) {
|
// NB: aiuta a rispettare la regola del default nel troncare la
|
||||||
object = UtilityString.stringToObject(defaultValue, field.getType());
|
// data anche se passata dall'esterno
|
||||||
field.set(this, object);
|
if (object instanceof Date && (CommonConstants.SYSDATE.equals(format) || CommonConstants.SYSDATE.equals(defaultValue))) {
|
||||||
}
|
field.set(this, DateUtils.truncate(object, Calendar.DAY_OF_MONTH));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (object == null && !defaultValue.isEmpty()) {
|
||||||
|
object = UtilityString.stringToObject(defaultValue, field.getType());
|
||||||
|
field.set(this, object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2008,7 +2003,6 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String defaultValue = null;
|
|
||||||
int maxValueLength = -1;
|
int maxValueLength = -1;
|
||||||
boolean nullableValue = true;
|
boolean nullableValue = true;
|
||||||
|
|
||||||
@@ -2016,15 +2010,6 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
|||||||
Object prevValue = entityHierachyfield.isPrimaryKey() ? SqlFieldHolder.getSqlValueFieldAsString(originalObject, sqlField.trimSpaces()) : null;
|
Object prevValue = entityHierachyfield.isPrimaryKey() ? SqlFieldHolder.getSqlValueFieldAsString(originalObject, sqlField.trimSpaces()) : null;
|
||||||
|
|
||||||
if (entityHierachyfield.isSqlField()) {
|
if (entityHierachyfield.isSqlField()) {
|
||||||
defaultValue = sqlField.defaultObjectValue();
|
|
||||||
|
|
||||||
SimpleDateFormat sdf = null;
|
|
||||||
if (CommonConstants.SYSDATE.equals(defaultValue)) sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
else if (CommonConstants.TIMESTAMP.equals(defaultValue))
|
|
||||||
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
||||||
|
|
||||||
if (sdf != null) defaultValue = sdf.format(new Date());
|
|
||||||
|
|
||||||
maxValueLength = sqlField.maxLength();
|
maxValueLength = sqlField.maxLength();
|
||||||
nullableValue = sqlField.nullable();
|
nullableValue = sqlField.nullable();
|
||||||
}
|
}
|
||||||
@@ -2036,7 +2021,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (originalObject == null && UtilityString.isNullOrEmpty(defaultValue))
|
if (originalObject == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!entityHierachyfield.isSqlField() || field.getName().startsWith("refUuid"))
|
if (!entityHierachyfield.isSqlField() || field.getName().startsWith("refUuid"))
|
||||||
@@ -2047,23 +2032,21 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (entityHierachyfield.isClob()) {
|
if (entityHierachyfield.isClob()) {
|
||||||
if (originalObject != null)
|
resultList.add(new Quartet<>(
|
||||||
resultList.add(new Quartet<>(
|
SqlFieldHolder.getSqlValue(sqlField.value(), field),
|
||||||
SqlFieldHolder.getSqlValue(sqlField.value(), field),
|
prepareClobData(originalObject),
|
||||||
prepareClobData(originalObject),
|
false,
|
||||||
false,
|
prevValue));
|
||||||
prevValue));
|
|
||||||
|
|
||||||
} else if (entityHierachyfield.isBlob()) {
|
} else if (entityHierachyfield.isBlob()) {
|
||||||
if (originalObject != null)
|
resultList.add(new Quartet<>(
|
||||||
resultList.add(new Quartet<>(
|
SqlFieldHolder.getSqlValue(sqlField.value(), field),
|
||||||
SqlFieldHolder.getSqlValue(sqlField.value(), field),
|
prepareBlobData(originalObject),
|
||||||
prepareBlobData(originalObject),
|
false,
|
||||||
false,
|
prevValue));
|
||||||
prevValue));
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Object finalValue = SqlFieldHolder.getSqlValueFieldAsObject(originalObject == null ? defaultValue : originalObject, sqlField.trimSpaces());
|
Object finalValue = SqlFieldHolder.getSqlValueFieldAsObject(originalObject, sqlField.trimSpaces());
|
||||||
|
|
||||||
if (finalValue instanceof Character) {
|
if (finalValue instanceof Character) {
|
||||||
finalValue = finalValue.toString();
|
finalValue = finalValue.toString();
|
||||||
|
|||||||
Reference in New Issue
Block a user