Skip to content

Commit 55549fa

Browse files
authored
Merge pull request #20 from Sassine/feature/refactor-envmodel-and-mockmain
refactor: objects called in generate method to EnvModel and mock valu…
2 parents 8baa093 + 2b687e8 commit 55549fa

File tree

11 files changed

+129
-66
lines changed

11 files changed

+129
-66
lines changed

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-beta1</version>
7+
<version>1.0.0-beta</version>
88
<name>sqlschema2java</name>
99
<packaging>pom</packaging>
1010
<groupId>dev.sassine.api</groupId>

sqlschema2java-core/pom.xml

Lines changed: 36 additions & 24 deletions
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-beta1</version>
9+
<version>1.0.0-beta</version>
1010
<name>sqlschema2java-core</name>
1111

1212
<description>Auto generate Class DTO, Entity and Repository from SQL Query. </description>
@@ -18,6 +18,19 @@
1818
<jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
1919
<copyright.holder>Sassine El-Asmar</copyright.holder>
2020
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
21+
<antlr4.version>4.3</antlr4.version>
22+
<pitest.version>1.7.5</pitest.version>
23+
<maven-resources.version>3.2.0</maven-resources.version>
24+
<maven-compiler>3.10.1</maven-compiler>
25+
<jax.version>2.3.1</jax.version>
26+
<logback.version>1.2.11</logback.version>
27+
<burningwave.version>12.47.0</burningwave.version>
28+
<lombok.version>1.18.22</lombok.version>
29+
<spring-jpa.version>2.6.6</spring-jpa.version>
30+
<commons-text.version>1.9</commons-text.version>
31+
<jackson.version>2.13.2</jackson.version>
32+
<log4j.version>2.17.2</log4j.version>
33+
<junit-4.version>4.13.2</junit-4.version>
2134
</properties>
2235

2336
<developers>
@@ -64,7 +77,7 @@
6477
<plugin>
6578
<groupId>org.pitest</groupId>
6679
<artifactId>pitest-maven</artifactId>
67-
<version>1.7.5</version>
80+
<version>${pitest.version}</version>
6881
<configuration>
6982
<targetClasses>
7083
<param>dev.sassine.api.structure.export.*</param>
@@ -87,7 +100,7 @@
87100
<plugin>
88101
<groupId>org.antlr</groupId>
89102
<artifactId>antlr4-maven-plugin</artifactId>
90-
<version>4.3</version>
103+
<version>${antlr4.version}</version>
91104
<executions>
92105
<execution>
93106
<id>antlr</id>
@@ -100,19 +113,19 @@
100113
<plugin>
101114
<groupId>org.apache.maven.plugins</groupId>
102115
<artifactId>maven-resources-plugin</artifactId>
103-
<version>2.6</version>
116+
<version>${maven-resources.version}</version>
104117
<configuration>
105-
<encoding>UTF-8</encoding>
118+
<encoding>${project.build.sourceEncoding}</encoding>
106119
</configuration>
107120
</plugin>
108121
<plugin>
109122
<groupId>org.apache.maven.plugins</groupId>
110123
<artifactId>maven-compiler-plugin</artifactId>
111-
<version>3.8.0</version>
124+
<version>${maven-compiler}</version>
112125
<configuration>
113-
<encoding>UTF-8</encoding>
114-
<source>11</source>
115-
<target>11</target>
126+
<encoding>${project.build.sourceEncoding}</encoding>
127+
<source>${java.version}</source>
128+
<target>${java.version}</target>
116129
</configuration>
117130
</plugin>
118131
<plugin>
@@ -128,7 +141,7 @@
128141
<dependency>
129142
<groupId>javax.xml.bind</groupId>
130143
<artifactId>jaxb-api</artifactId>
131-
<version>2.3.1</version>
144+
<version>${jax.version}</version>
132145
</dependency>
133146
</dependencies>
134147
</plugin>
@@ -166,37 +179,36 @@
166179
</plugins>
167180
</build>
168181

169-
170182
<dependencies>
171183
<dependency>
172184
<groupId>org.antlr</groupId>
173185
<artifactId>antlr4-runtime</artifactId>
174-
<version>4.3</version>
186+
<version>${antlr4.version}</version>
175187
</dependency>
176188

177189
<dependency>
178190
<groupId>ch.qos.logback</groupId>
179191
<artifactId>logback-classic</artifactId>
180-
<version>1.2.11</version>
192+
<version>${logback.version}</version>
181193
<scope>test</scope>
182194
</dependency>
183195

184196
<dependency>
185197
<groupId>org.burningwave</groupId>
186198
<artifactId>core</artifactId>
187-
<version>12.47.0</version>
199+
<version>${burningwave.version}</version>
188200
</dependency>
189201

190202
<dependency>
191203
<groupId>org.projectlombok</groupId>
192204
<artifactId>lombok</artifactId>
193-
<version>1.18.22</version>
205+
<version>${lombok.version}</version>
194206
</dependency>
195207

196208
<dependency>
197209
<groupId>org.springframework.boot</groupId>
198210
<artifactId>spring-boot-starter-data-jpa</artifactId>
199-
<version>2.4.2</version>
211+
<version>${spring-jpa.version}</version>
200212
<exclusions>
201213
<exclusion>
202214
<groupId>org.springframework.boot</groupId>
@@ -236,51 +248,51 @@
236248
<dependency>
237249
<groupId>org.apache.commons</groupId>
238250
<artifactId>commons-text</artifactId>
239-
<version>1.9</version>
251+
<version>${commons-text.version}</version>
240252
</dependency>
241253

242254
<dependency>
243255
<groupId>com.fasterxml.jackson.core</groupId>
244256
<artifactId>jackson-core</artifactId>
245-
<version>2.13.2</version>
257+
<version>${jackson.version}</version>
246258
</dependency>
247259

248260
<dependency>
249261
<groupId>com.fasterxml.jackson.core</groupId>
250262
<artifactId>jackson-annotations</artifactId>
251-
<version>2.13.2</version>
263+
<version>${jackson.version}</version>
252264
</dependency>
253265

254266
<dependency>
255267
<groupId>com.fasterxml.jackson.core</groupId>
256268
<artifactId>jackson-databind</artifactId>
257-
<version>2.13.2.2</version>
269+
<version>${jackson.version}</version>
258270
</dependency>
259271

260272
<dependency>
261273
<groupId>com.fasterxml.jackson.datatype</groupId>
262274
<artifactId>jackson-datatype-jsr310</artifactId>
263-
<version>2.13.2</version>
275+
<version>${jackson.version}</version>
264276
</dependency>
265277

266278
<dependency>
267279
<groupId>junit</groupId>
268280
<artifactId>junit</artifactId>
269-
<version>4.13.2</version>
281+
<version>${junit-4.version}</version>
270282
<scope>test</scope>
271283
</dependency>
272284

273285

274286
<dependency>
275287
<groupId>org.apache.logging.log4j</groupId>
276288
<artifactId>log4j-api</artifactId>
277-
<version>2.17.2</version>
289+
<version>${log4j.version}</version>
278290
</dependency>
279291

280292
<dependency>
281293
<groupId>org.apache.logging.log4j</groupId>
282294
<artifactId>log4j-core</artifactId>
283-
<version>2.17.2</version>
295+
<version>${log4j.version}</version>
284296
</dependency>
285297

286298

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package dev.sassine.api.structure;
22

3+
import static dev.sassine.api.structure.Sqlschema2Java.generate;
4+
import static dev.sassine.api.structure.model.java.EnvironmentModel.builder;
5+
import static java.nio.file.Paths.get;
6+
37
import java.io.FileNotFoundException;
48

59
public class Main {
610

711
public static void main(final String[] args) throws FileNotFoundException {
8-
Sqlschema2Java.generate("C:\\poc\\poc.sql", false, false,"dev.sassine.api.structure.delete");
12+
generate(builder()
13+
.packageName("dev.sassine.api.structure.generated")
14+
.sourceDirectory(get("src","test","resources","default.sql").toFile().getAbsolutePath())
15+
.build());
916
}
10-
11-
}
1217

13-
18+
}

sqlschema2java-core/src/main/java/dev/sassine/api/structure/Sqlschema2Java.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,31 @@
1414

1515
import dev.sassine.api.structure.export.builder.ClassSourceBuilder;
1616
import dev.sassine.api.structure.model.java.EntityModel;
17+
import dev.sassine.api.structure.model.java.EnvironmentModel;
1718
import dev.sassine.api.structure.model.sql.Database;
1819
import dev.sassine.api.structure.parser.SqlImport;
1920

2021
public class Sqlschema2Java {
2122

2223
private static final Logger log = getLogger();
2324

24-
public static void generate(String inputFile, boolean isPostgress, boolean isAutoGenerated, String packageName) {
25-
log.debug("preparing to read SQL file('{}') ", inputFile);
26-
try (InputStream in = new FileInputStream(inputFile)) {
25+
public static void generate(EnvironmentModel env) {
26+
log.debug("preparing to read SQL file('{}') ", env.getSourceDirectory());
27+
try (InputStream in = new FileInputStream(env.getSourceDirectory())) {
2728
log.debug("file read successfull");
28-
log.debug("Parameters ::: isPostgress: {} | isAutoGenerated: {} | packageName: {}", isPostgress, isAutoGenerated, packageName);
29-
process(read(in), isPostgress, isAutoGenerated, packageName);
29+
process(read(in), env);
3030
log.info("Congratulations build successful [√]");
3131
} catch (final Exception e) {
3232
log.error(e.getMessage(), e);
3333
}
3434
}
3535

36-
private static void process(final String sqlContent, boolean isPostgress, boolean isAutoGenerated, String packageName) {
36+
private static void process(final String sqlContent, EnvironmentModel env) {
3737
final Database database = SqlImport.init().getDatabase(sqlContent);
38-
convertTypeFromSQLDataBaseToEntityStore(database, isPostgress);
38+
convertTypeFromSQLDataBaseToEntityStore(database, env.getUsePostgreSQL());
3939
validate(database);
4040
List<EntityModel> entityModel = convert(database);
41-
ClassSourceBuilder.init().build(entityModel, isAutoGenerated, packageName);
41+
ClassSourceBuilder.init().build(entityModel, env.getUseAutoIncrement(), env.getPackageName());
4242
}
4343

4444
}

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,17 @@ public static ClassSourceBuilder init() {
2121
return new ClassSourceBuilder();
2222
}
2323

24-
public void build(List<EntityModel> entityModel, boolean isAutoGenerated, String packageName) {
25-
log.debug("Starting build Class Source");
26-
entityModel.forEach(e -> build(e, isAutoGenerated, packageName));
24+
public void build(List<EntityModel> entityModel, boolean useAutoGenerated, String packageName) {
25+
log.debug("Starting build Class Source ");
26+
log.debug("Parameters ::: isAutoGenerated: {} | PackageName {}", useAutoGenerated, packageName);
27+
entityModel.forEach(e -> build(e, useAutoGenerated, packageName));
2728
}
2829

29-
private void build(EntityModel entityModel,boolean isAutoGenerated, String packageName) {
30+
private void build(EntityModel entityModel,boolean useAutoGenerated, String packageName) {
3031
String nameClass = toCamelCase(entityModel.getName(), true, CHAR);
31-
createEntity().execute(entityModel, isAutoGenerated, nameClass, packageName);
32-
createDTO().execute(entityModel, isAutoGenerated, nameClass, packageName);
33-
createRepository().execute(entityModel, isAutoGenerated, nameClass, packageName);
32+
createEntity().execute(entityModel, useAutoGenerated, nameClass, packageName);
33+
createDTO().execute(entityModel, useAutoGenerated, nameClass, packageName);
34+
createRepository().execute(entityModel, useAutoGenerated, nameClass, packageName);
3435
}
3536

3637
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package dev.sassine.api.structure.model.java;
2+
3+
import lombok.Builder;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
7+
@Getter
8+
@Setter
9+
@Builder
10+
public class EnvironmentModel {
11+
12+
private String sourceDirectory;
13+
14+
private String packageName;
15+
16+
@Builder.Default
17+
private Boolean usePostgreSQL = false;
18+
19+
@Builder.Default
20+
private Boolean useAutoIncrement = true;
21+
22+
}

sqlschema2java-core/src/main/java/dev/sassine/api/structure/type/TypeConverter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class TypeConverter {
1919
public static final String TYPE_LOCAL_TIME = "LocalTime";
2020

2121
public static void convertTypeFromSQLDataBaseToEntityStore(final Database database, boolean isPostgress) {
22+
log.debug("Parameters ::: isPostgress: {} ",isPostgress);
2223
database.getTables().forEach(table -> {
2324
table.getColumnByNames().values().forEach(column -> {
2425
column.setConvertedType(convertTypeFromSQLToEntityStore(ofNullable(column.getType()).orElse(""), isPostgress));
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CREATE TABLE Company (
2+
id INT NOT NULL AUTO_INCREMENT,
3+
duns VARCHAR(9) UNIQUE,
4+
name VARCHAR(255),
5+
address VARCHAR(255),
6+
zip_code VARCHAR(5) DEFAULT '',
7+
company_creation Date DEFAULT CURRENT_TIMESTAMP,
8+
website VARCHAR(255),
9+
phone_number VARCHAR(255),
10+
city VARCHAR(255),
11+
PRIMARY KEY(id)
12+
);

sqlschema2java-example/pom.xml

Lines changed: 8 additions & 7 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-beta1</version>
8+
<version>1.0.0-beta</version>
99
<packaging>pom</packaging>
1010

1111
<developers>
@@ -22,9 +22,10 @@
2222
</developers>
2323

2424
<properties>
25-
<is.postgres>false</is.postgres>
25+
<use.postgresDB>false</use.postgresDB>
2626
<auto.increment.enabled>false</auto.increment.enabled>
27-
<path.arquivo>./input.sql</path.arquivo>
27+
<path.sqlFile>./input.sql</path.sqlFile>
28+
<packageName>dev.sassine.generated</packageName>
2829
</properties>
2930

3031

@@ -33,7 +34,7 @@
3334
<plugin>
3435
<groupId>dev.sassine.api</groupId>
3536
<artifactId>sqlschema2java-maven-plugin</artifactId>
36-
<version>1.0.0-beta1</version>
37+
<version>1.0.0-beta</version>
3738
<executions>
3839
<execution>
3940
<goals>
@@ -42,10 +43,10 @@
4243
</execution>
4344
</executions>
4445
<configuration>
45-
<isPostgres>${is.postgres}</isPostgres>
46-
<sourceDirectory>${path.arquivo}</sourceDirectory>
46+
<usePostgreSQL>${use.postgresDB}</usePostgreSQL>
47+
<sourceDirectory>${path.sqlFile}</sourceDirectory>
48+
<packageName>${packageName}</packageName>
4749
<useAutoIncrement>${auto.increment.enabled}</useAutoIncrement>
48-
<debugEnabled>false</debugEnabled>
4950
</configuration>
5051
</plugin>
5152
</plugins>

0 commit comments

Comments
 (0)