From 90958ed839dcff0d757dcc2b1c5ea51b78e2d3b8 Mon Sep 17 00:00:00 2001 From: Sassine El-Asmar Date: Fri, 15 Apr 2022 16:07:14 -0300 Subject: [PATCH 1/2] Feature: adding default value Date/Time --- .../export/builder/factory/impl/EntityFactory.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/factory/impl/EntityFactory.java b/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/factory/impl/EntityFactory.java index c425317..e75b309 100644 --- a/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/factory/impl/EntityFactory.java +++ b/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/factory/impl/EntityFactory.java @@ -2,13 +2,19 @@ import static dev.sassine.api.structure.export.builder.function.ImportBeanFunction.importJavaTime; import static dev.sassine.api.structure.export.builder.function.StoreClassFuncation.store; +import static dev.sassine.api.structure.type.TypeConverter.TYPE_LOCAL_DATE; +import static dev.sassine.api.structure.type.TypeConverter.TYPE_LOCAL_DATE_TIME; +import static dev.sassine.api.structure.type.TypeConverter.TYPE_LOCAL_TIME; import static java.lang.String.format; import static java.lang.reflect.Modifier.PRIVATE; import static java.lang.reflect.Modifier.PUBLIC; +import static java.util.Objects.nonNull; import static java.util.Optional.ofNullable; import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.apache.logging.log4j.LogManager.getLogger; +import java.util.Map; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -42,6 +48,11 @@ public class EntityFactory implements Factory { private static final String PARAM_NULLABLE = "nullable"; private static final String PARAM_NAME = "name"; + Map defaultValueLocal = Map.of( + TYPE_LOCAL_DATE, "LocalDate.now()", + TYPE_LOCAL_TIME, "LocalTime.now()", + TYPE_LOCAL_DATE_TIME, "LocalDateTime.now()"); + @Override public void execute(EntityModel entityModel, boolean isAutoGenerated, String nameClass, String packageName) { log.debug("ClassName: ({}) - PackageName: ({}) ", nameClass, packageName); @@ -66,6 +77,8 @@ public void execute(EntityModel entityModel, boolean isAutoGenerated, String nam private void setDefaultValue(VariableSourceGenerator field, FieldModel fieldModel) { if(isNotBlank(fieldModel.getDefaultValue())) { + var value = defaultValueLocal.get(fieldModel.getType()); + if(nonNull(value)) field.setValue(defaultValueLocal.get(fieldModel.getType())); field.addAnnotation(AnnotationSourceGenerator.create(ColumnDefault.class).addParameter("value", VariableSourceGenerator.create(format(FORMAT_STRING_FIELDS, fieldModel.getDefaultValue())))); } From 0375e9fe2cef8bc9cd37eb865d8428f9586522e3 Mon Sep 17 00:00:00 2001 From: Sassine El-Asmar Date: Fri, 15 Apr 2022 16:08:36 -0300 Subject: [PATCH 2/2] fix: import .class deserialize object --- .../builder/function/ImportBeanFunction.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/function/ImportBeanFunction.java b/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/function/ImportBeanFunction.java index 6cdbe52..042d043 100644 --- a/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/function/ImportBeanFunction.java +++ b/sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/function/ImportBeanFunction.java @@ -23,6 +23,9 @@ public class ImportBeanFunction { + private static final String TIME_DESERIALIZER = "LocalTimeDeserializer.class"; + private static final String DATE_DESERIALIZER = "LocalDateDeserializer.class"; + private static final String DATE_TIME_DESERIALIZER = "LocalDateTimeDeserializer.class"; private static final String PARAM_USING = "using"; private static final String FORMAT_IMPORT_ENTITY_PACKAGE = "%s.domain.%sEntity"; @@ -39,20 +42,21 @@ public static void importJavaTime(UnitSourceGenerator gen, FieldModel fieldModel public static void importJavaTimeAndJSONDeserialize(VariableSourceGenerator field, UnitSourceGenerator gen, FieldModel fieldModel) { if (TYPE_LOCAL_DATE_TIME.equals(fieldModel.getType())) { - field.addAnnotation(AnnotationSourceGenerator.create(JsonDeserialize.class).addParameter(PARAM_USING, - VariableSourceGenerator - .create(TypeDeclarationSourceGenerator.create(LocalDateTimeDeserializer.class)))); gen.addImport(LocalDateTime.class); + gen.addImport(LocalDateTimeDeserializer.class); + field.addAnnotation(AnnotationSourceGenerator.create(JsonDeserialize.class).addParameter(PARAM_USING, + VariableSourceGenerator.create(TypeDeclarationSourceGenerator.create(DATE_TIME_DESERIALIZER)))); } else if (TYPE_LOCAL_DATE.equals(fieldModel.getType())) { gen.addImport(LocalDate.class); + gen.addImport(LocalDateDeserializer.class); field.addAnnotation(AnnotationSourceGenerator.create(JsonDeserialize.class).addParameter(PARAM_USING, - VariableSourceGenerator - .create(TypeDeclarationSourceGenerator.create(LocalDateDeserializer.class)))); + VariableSourceGenerator.create(TypeDeclarationSourceGenerator.create(DATE_DESERIALIZER)))); } else if (TYPE_LOCAL_TIME.equals(fieldModel.getType())) { gen.addImport(LocalTime.class); + gen.addImport(LocalTimeDeserializer.class); field.addAnnotation(AnnotationSourceGenerator.create(JsonDeserialize.class).addParameter(PARAM_USING, - VariableSourceGenerator - .create(TypeDeclarationSourceGenerator.create(LocalTimeDeserializer.class)))); + VariableSourceGenerator.create(TypeDeclarationSourceGenerator.create(TIME_DESERIALIZER)))); + } } }