Skip to content

Commit ae85835

Browse files
authored
Merge pull request #6 from Sassine/feature/LocalTime-Deserialize
feature: Adding @JsonDeserialize Local-DateTime/Date/Time in DTO
2 parents 0d42802 + 13e8152 commit ae85835

3 files changed

Lines changed: 39 additions & 5 deletions

File tree

sqlschema2java-core/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@
180180
<version>2.13.2.2</version>
181181
</dependency>
182182

183+
<dependency>
184+
<groupId>com.fasterxml.jackson.datatype</groupId>
185+
<artifactId>jackson-datatype-jsr310</artifactId>
186+
<version>2.13.2</version>
187+
</dependency>
188+
183189
<dependency>
184190
<groupId>junit</groupId>
185191
<artifactId>junit</artifactId>

sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/factory/impl/DTOFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dev.sassine.api.structure.export.builder.factory.impl;
22

33
import static dev.sassine.api.structure.export.builder.function.ImportBeanFunction.importEntityClass;
4-
import static dev.sassine.api.structure.export.builder.function.ImportBeanFunction.importJavaTime;
4+
import static dev.sassine.api.structure.export.builder.function.ImportBeanFunction.importJavaTimeAndJSONDeserialize;
55
import static dev.sassine.api.structure.export.builder.function.StoreClassFuncation.store;
66
import static java.lang.String.format;
77
import static java.lang.reflect.Modifier.PUBLIC;
@@ -38,7 +38,7 @@ public class DTOFactory implements Factory {
3838
private static final String FORMAT_NEW_ENTITY_METHOD = "%s entity = new %s();";
3939
private static final String FORMAT_STRING_FIELDS = "\"%s\"";
4040
private static final String FORMAT_PACKAGE_DOT_PACKAGE = "%s.%s";
41-
private static final String FORMAT_SETTER_EQ_GETTER = "this.%s = entity.get%s();";
41+
private static final String FORMAT_SET_VALUE = "entity.set%s(this.%s);";
4242
private static final String PARAM_VALUE = "value";
4343

4444
@Override
@@ -56,7 +56,7 @@ public void execute(EntityModel entityModel,boolean isAutoGenerated, String name
5656
log.debug("Prepare generate ({}) fields", entityModel.getFields().size());
5757
entityModel.getFields().forEach(fieldModel -> {
5858
VariableSourceGenerator field = this.buildField(fieldModel);
59-
importJavaTime(gen, fieldModel);
59+
importJavaTimeAndJSONDeserialize(field,gen, fieldModel);
6060
this.addFunctionToMethodFunction(fm, fieldModel);
6161
log.debug("Adding field in functionMethod toEntity");
6262
clDTO.addField(field);
@@ -76,7 +76,7 @@ private void closeMethodFunction(FunctionSourceGenerator functionMethodToEntity)
7676
}
7777

7878
private void addFunctionToMethodFunction(FunctionSourceGenerator functionMethodToEntity, FieldModel fieldModel) {
79-
functionMethodToEntity.addBodyCodeLine(format(FORMAT_SETTER_EQ_GETTER, fieldModel.getCamelName(), fieldModel.getCamelNameUpper()));
79+
functionMethodToEntity.addBodyCodeLine(format(FORMAT_SET_VALUE, fieldModel.getCamelNameUpper(), fieldModel.getCamelName()));
8080
}
8181

8282
private VariableSourceGenerator buildField(FieldModel fieldModel) {

sqlschema2java-core/src/main/java/dev/sassine/api/structure/export/builder/function/ImportBeanFunction.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,21 @@
99
import java.time.LocalDateTime;
1010
import java.time.LocalTime;
1111

12+
import org.burningwave.core.classes.AnnotationSourceGenerator;
13+
import org.burningwave.core.classes.TypeDeclarationSourceGenerator;
1214
import org.burningwave.core.classes.UnitSourceGenerator;
15+
import org.burningwave.core.classes.VariableSourceGenerator;
16+
17+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
18+
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
19+
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
20+
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
1321

1422
import dev.sassine.api.structure.model.java.FieldModel;
1523

1624
public class ImportBeanFunction {
1725

26+
private static final String PARAM_USING = "using";
1827
private static final String FORMAT_IMPORT_ENTITY_PACKAGE = "%s.domain.%sEntity";
1928

2029
public static void importEntityClass(String nameClass, String packageName, UnitSourceGenerator gen) {
@@ -26,5 +35,24 @@ public static void importJavaTime(UnitSourceGenerator gen, FieldModel fieldModel
2635
else if (TYPE_LOCAL_DATE.equals(fieldModel.getType())) gen.addImport(LocalDate.class);
2736
else if (TYPE_LOCAL_TIME.equals(fieldModel.getType())) gen.addImport(LocalTime.class);
2837
}
29-
38+
39+
public static void importJavaTimeAndJSONDeserialize(VariableSourceGenerator field, UnitSourceGenerator gen,
40+
FieldModel fieldModel) {
41+
if (TYPE_LOCAL_DATE_TIME.equals(fieldModel.getType())) {
42+
field.addAnnotation(AnnotationSourceGenerator.create(JsonDeserialize.class).addParameter(PARAM_USING,
43+
VariableSourceGenerator
44+
.create(TypeDeclarationSourceGenerator.create(LocalDateTimeDeserializer.class))));
45+
gen.addImport(LocalDateTime.class);
46+
} else if (TYPE_LOCAL_DATE.equals(fieldModel.getType())) {
47+
gen.addImport(LocalDate.class);
48+
field.addAnnotation(AnnotationSourceGenerator.create(JsonDeserialize.class).addParameter(PARAM_USING,
49+
VariableSourceGenerator
50+
.create(TypeDeclarationSourceGenerator.create(LocalDateDeserializer.class))));
51+
} else if (TYPE_LOCAL_TIME.equals(fieldModel.getType())) {
52+
gen.addImport(LocalTime.class);
53+
field.addAnnotation(AnnotationSourceGenerator.create(JsonDeserialize.class).addParameter(PARAM_USING,
54+
VariableSourceGenerator
55+
.create(TypeDeclarationSourceGenerator.create(LocalTimeDeserializer.class))));
56+
}
57+
}
3058
}

0 commit comments

Comments
 (0)