diff --git a/pom.xml b/pom.xml index cf5f2a1..f4957b8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 sqlschema2java - 1.0.0-SNAPSHOT + 1.0.0-beta1 sqlschema2java pom dev.sassine.api diff --git a/sqlschema2java-core/pom.xml b/sqlschema2java-core/pom.xml index ab1983e..fc20ddd 100644 --- a/sqlschema2java-core/pom.xml +++ b/sqlschema2java-core/pom.xml @@ -6,7 +6,7 @@ dev.sassine.api sqlschema2java-core - 1.0.1-SNAPSHOT + 1.0.0-beta1 sqlschema2java-core Auto generate Class DTO, Entity and Repository from SQL Query. 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 f5d6e25..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,12 +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; @@ -20,6 +27,7 @@ import org.burningwave.core.classes.TypeDeclarationSourceGenerator; import org.burningwave.core.classes.UnitSourceGenerator; import org.burningwave.core.classes.VariableSourceGenerator; +import org.hibernate.annotations.ColumnDefault; import dev.sassine.api.structure.export.builder.factory.Factory; import dev.sassine.api.structure.model.java.EntityModel; @@ -40,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); @@ -51,6 +64,7 @@ public void execute(EntityModel entityModel, boolean isAutoGenerated, String nam entityModel.getFields().forEach(fieldModel -> { VariableSourceGenerator field = this.buildField(fieldModel); importJavaTime(gen, fieldModel); + this.setDefaultValue(field,fieldModel); this.generateEntityPK(isAutoGenerated, fieldModel, field, entityModel); log.debug("Generated EntityPK"); clEntity.addField(field); @@ -61,6 +75,15 @@ public void execute(EntityModel entityModel, boolean isAutoGenerated, String nam log.debug("ClassEntity ({}) stored", nameClass); } + 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())))); + } + } + private ClassSourceGenerator buildClassSource(EntityModel entityModel, String nameClass) { return ClassSourceGenerator .create(TypeDeclarationSourceGenerator.create(format(FORMAT_ENTITY_CLASSNAME, nameClass))) diff --git a/sqlschema2java-example/pom.xml b/sqlschema2java-example/pom.xml index 9967671..de957c9 100644 --- a/sqlschema2java-example/pom.xml +++ b/sqlschema2java-example/pom.xml @@ -5,7 +5,7 @@ 4.0.0 dev.sasine.api sqlschema2java-example - 1.0.0-SNAPSHOT + 1.0.0-beta1 pom @@ -33,7 +33,7 @@ dev.sassine.api sqlschema2java-maven-plugin - 1.0.1-SNAPSHOT + 1.0.0-beta1 diff --git a/sqlschema2java-maven-plugin/pom.xml b/sqlschema2java-maven-plugin/pom.xml index 1c75c88..b45d306 100644 --- a/sqlschema2java-maven-plugin/pom.xml +++ b/sqlschema2java-maven-plugin/pom.xml @@ -6,7 +6,7 @@ 4.0.0 dev.sassine.api sqlschema2java-maven-plugin - 1.0.1-SNAPSHOT + 1.0.0-beta1 sqlschema2java-maven-plugin maven-plugin @@ -81,7 +81,7 @@ - 1.0.1-SNAPSHOT + 1.0.0-beta1 1.8 1.8 3.6.2