Skip to content

Commit 19e5c51

Browse files
authored
Merge pull request #7 from Sassine/release/1.0.0-beta1
Release/1.0.0 beta1
2 parents b4cc773 + 0b583aa commit 19e5c51

9 files changed

Lines changed: 65 additions & 27 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
66
<artifactId>sqlschema2java</artifactId>
7-
<version>1.0.0-SNAPSHOT</version>
7+
<version>1.0.0-beta1</version>
88
<name>sqlschema2java</name>
99
<packaging>pom</packaging>
1010
<groupId>dev.sassine.api</groupId>

sqlschema2java-core/pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>dev.sassine.api</groupId>
88
<artifactId>sqlschema2java-core</artifactId>
9-
<version>1.0.0-SNAPSHOT</version>
9+
<version>1.0.0-beta1</version>
1010
<name>sqlschema2java-core</name>
1111

1212
<description>Auto generate Class DTO, Entity and Repository from SQL Query. </description>
@@ -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/factory/impl/EntityFactory.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static java.lang.reflect.Modifier.PRIVATE;
77
import static java.lang.reflect.Modifier.PUBLIC;
88
import static java.util.Optional.ofNullable;
9+
import static org.apache.commons.lang3.StringUtils.isNotBlank;
910
import static org.apache.logging.log4j.LogManager.getLogger;
1011

1112
import javax.persistence.Column;
@@ -20,6 +21,7 @@
2021
import org.burningwave.core.classes.TypeDeclarationSourceGenerator;
2122
import org.burningwave.core.classes.UnitSourceGenerator;
2223
import org.burningwave.core.classes.VariableSourceGenerator;
24+
import org.hibernate.annotations.ColumnDefault;
2325

2426
import dev.sassine.api.structure.export.builder.factory.Factory;
2527
import dev.sassine.api.structure.model.java.EntityModel;
@@ -51,6 +53,7 @@ public void execute(EntityModel entityModel, boolean isAutoGenerated, String nam
5153
entityModel.getFields().forEach(fieldModel -> {
5254
VariableSourceGenerator field = this.buildField(fieldModel);
5355
importJavaTime(gen, fieldModel);
56+
this.setDefaultValue(field,fieldModel);
5457
this.generateEntityPK(isAutoGenerated, fieldModel, field, entityModel);
5558
log.debug("Generated EntityPK");
5659
clEntity.addField(field);
@@ -61,6 +64,13 @@ public void execute(EntityModel entityModel, boolean isAutoGenerated, String nam
6164
log.debug("ClassEntity ({}) stored", nameClass);
6265
}
6366

67+
private void setDefaultValue(VariableSourceGenerator field, FieldModel fieldModel) {
68+
if(isNotBlank(fieldModel.getDefaultValue())) {
69+
field.addAnnotation(AnnotationSourceGenerator.create(ColumnDefault.class).addParameter("value",
70+
VariableSourceGenerator.create(format(FORMAT_STRING_FIELDS, fieldModel.getDefaultValue()))));
71+
}
72+
}
73+
6474
private ClassSourceGenerator buildClassSource(EntityModel entityModel, String nameClass) {
6575
return ClassSourceGenerator
6676
.create(TypeDeclarationSourceGenerator.create(format(FORMAT_ENTITY_CLASSNAME, nameClass)))

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.burningwave.core.classes.GenericSourceGenerator;
1717
import org.burningwave.core.classes.TypeDeclarationSourceGenerator;
1818
import org.burningwave.core.classes.UnitSourceGenerator;
19+
import org.springframework.data.jpa.repository.JpaRepository;
1920
import org.springframework.stereotype.Repository;
2021

2122
import dev.sassine.api.structure.export.builder.factory.Factory;
@@ -25,8 +26,6 @@ public class RepositoryFactory implements Factory {
2526

2627
private static final Logger log = getLogger();
2728

28-
private static final String PACKAGE_JPAREPOSITORY = "org.springframework.data.jpa.repository.JpaRepository";
29-
private static final String CLASSNAME_JPAREPOSITORY = "JpaRepository";
3029
private static final String DOT_REPOSITORY = ".repository";
3130
private static final String ENTITY_REPOSITORY = "EntityRepository";
3231
private static final String ENTITY = "Entity";
@@ -39,16 +38,15 @@ public void execute(EntityModel entityModel, boolean isAutoGenerated, String nam
3938
ClassSourceGenerator interfaceClass = this.buildClassSource(entityModel, nameClass);
4039
log.debug("InterfaceRepository builded");
4140
importEntityClass(nameClass, packageName, gen);
42-
gen.addImport(PACKAGE_JPAREPOSITORY);
4341
gen.addClass(interfaceClass);
4442
store(gen);
4543
log.debug("Repository EntityClass ({}) stored", nameClass);
4644
}
4745

4846
private ClassSourceGenerator buildClassSource(EntityModel entityModel, String nameClass) {
4947
return ClassSourceGenerator
50-
.createInterface(TypeDeclarationSourceGenerator.create(ENTITY_REPOSITORY))
51-
.expands(TypeDeclarationSourceGenerator.create(CLASSNAME_JPAREPOSITORY)
48+
.createInterface(TypeDeclarationSourceGenerator.create(nameClass.concat(ENTITY_REPOSITORY)))
49+
.expands(TypeDeclarationSourceGenerator.create(JpaRepository.class)
5250
.addGeneric(GenericSourceGenerator.create(nameClass.concat(ENTITY)))
5351
.addGeneric(GenericSourceGenerator.create(this.getIdClassType(entityModel))))
5452
.addModifier(PUBLIC)

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
}

sqlschema2java-example/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>dev.sasine.api</groupId>
77
<artifactId>sqlschema2java-example</artifactId>
8-
<version>1.0.0-SNAPSHOT</version>
8+
<version>1.0.0-beta1</version>
99
<packaging>pom</packaging>
1010

1111
<developers>
@@ -33,11 +33,11 @@
3333
<plugin>
3434
<groupId>dev.sassine.api</groupId>
3535
<artifactId>sqlschema2java-maven-plugin</artifactId>
36-
<version>1.0.0-SNAPSHOT</version>
36+
<version>1.0.0-beta1</version>
3737
<executions>
3838
<execution>
3939
<goals>
40-
<goal>sqlschema2java</goal>
40+
<goal>generate</goal>
4141
</goals>
4242
</execution>
4343
</executions>

sqlschema2java-maven-plugin/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<modelVersion>4.0.0</modelVersion>
77
<groupId>dev.sassine.api</groupId>
88
<artifactId>sqlschema2java-maven-plugin</artifactId>
9-
<version>1.0.0-SNAPSHOT</version>
9+
<version>1.0.0-beta1</version>
1010
<name>sqlschema2java-maven-plugin</name>
1111
<packaging>maven-plugin</packaging>
1212

@@ -81,7 +81,7 @@
8181
</reporting>
8282

8383
<properties>
84-
<sqlschema2java-core.version>1.0.0-SNAPSHOT</sqlschema2java-core.version>
84+
<sqlschema2java-core.version>1.0.0-beta1</sqlschema2java-core.version>
8585
<maven.compiler.target>1.8</maven.compiler.target>
8686
<maven.compiler.source>1.8</maven.compiler.source>
8787
<maven-plugin-api.version>3.6.2</maven-plugin-api.version>

sqlschema2java-maven-plugin/src/main/java/dev/sassine/api/maven/plugin/start/SqlSchema2Java.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
package dev.sassine.api.maven.plugin.start;
2+
import static dev.sassine.api.structure.Sqlschema2Java.generate;
3+
import static java.lang.String.format;
4+
25
import org.apache.maven.plugin.AbstractMojo;
36
import org.apache.maven.plugin.MojoExecutionException;
47
import org.apache.maven.plugin.MojoFailureException;
@@ -7,9 +10,7 @@
710
import org.apache.maven.plugins.annotations.Parameter;
811
import org.apache.maven.project.MavenProject;
912

10-
import dev.sassine.api.structure.Sqlschema2Java;
11-
12-
@Mojo(name = "sqlschema2java", defaultPhase = LifecyclePhase.NONE)
13+
@Mojo(name = "generate", defaultPhase = LifecyclePhase.NONE)
1314
public class SqlSchema2Java extends AbstractMojo {
1415

1516
@Parameter(defaultValue = "${project}", required = true, readonly = true)
@@ -27,15 +28,10 @@ public class SqlSchema2Java extends AbstractMojo {
2728
@Parameter(property = "sql.type.auto.increment.enabled" , defaultValue = "true", required = false, readonly = true)
2829
Boolean useAutoIncrement;
2930

30-
@Parameter(property = "log.debug.enabled" , defaultValue = "false", required = false, readonly = true)
31-
String debugEnabled;
32-
33-
3431

3532
public void execute() throws MojoExecutionException, MojoFailureException {
36-
getLog().info(" ");
37-
Sqlschema2Java.generate(sourceDirectory, isPostgres, useAutoIncrement,packageName);
38-
getLog().info(" ");
33+
getLog().info(format(" packageName %s - sourceDirectory %s - isPostgres %s - useAutoIncrement %s", sourceDirectory, packageName, isPostgres, useAutoIncrement));
34+
generate(sourceDirectory, isPostgres, useAutoIncrement, packageName);
3935
}
4036

4137
}

0 commit comments

Comments
 (0)