Skip to content

Commit c0704e0

Browse files
committed
Issues Fixed
1. Switch from Set to List to maintain order 2. Make Embeddable and Enum as public in template 3. Update the mappings file
1 parent d6eebc7 commit c0704e0

File tree

12 files changed

+104
-65
lines changed

12 files changed

+104
-65
lines changed

README.md

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,49 @@ jar to be run as a standalone tool. It internally uses JSqlParser to parse the D
1919

2020
**sqlscript2jpa-codegen** is available
2121
at [Maven Central Repository](https://central.sonatype.com/artifact/io.github.ngbsn/sqlscript2jpa-codegen-maven-plugin).
22-
To use it, simply declare the following plugin in your pom file:
22+
To use it, simply declare the following plugins in your pom file:
2323

2424
```xml
25-
<plugin>
26-
<groupId>io.github.ngbsn</groupId>
27-
<artifactId>sqlscript2jpa-codegen-maven-plugin</artifactId>
28-
<version>${latest-version-from-maven-central}</version>
29-
<executions>
30-
<execution>
25+
<plugins>
26+
<plugin>
27+
<groupId>io.github.ngbsn</groupId>
28+
<artifactId>sqlscript2jpa-codegen-maven-plugin</artifactId>
29+
<version>${latest-version-from-maven-central}</version>
30+
<executions>
31+
<execution>
3132
<id>parse-schema</id>
32-
<phase>compile</phase>
33+
<phase>generate-sources</phase>
3334
<goals>
34-
<goal>parse-schema</goal>
35+
<goal>parse-schema</goal>
3536
</goals>
3637
<configuration>
37-
<sqlFilePath>${basedir}/src/main/resources/sql/organization.sql</sqlFilePath>
38-
<packageName>org.mycompany.entities</packageName>
38+
<sqlFilePath>${basedir}/src/main/resources/sql/organization.sql</sqlFilePath>
39+
<packageName>org.mycompany.entities</packageName>
3940
</configuration>
40-
</execution>
41-
</executions>
42-
</plugin>
41+
</execution>
42+
</executions>
43+
</plugin>
44+
<plugin>
45+
<groupId>org.codehaus.mojo</groupId>
46+
<artifactId>build-helper-maven-plugin</artifactId>
47+
<version>3.2.0</version>
48+
<executions>
49+
<execution>
50+
<id>add-source</id>
51+
<phase>generate-sources</phase>
52+
<goals>
53+
<goal>add-source</goal>
54+
</goals>
55+
<configuration>
56+
<sources>
57+
<source>target/generated-sources/sqlscript2jpa/src/main/java/</source>
58+
</sources>
59+
</configuration>
60+
</execution>
61+
</executions>
62+
</plugin>
63+
</plugins>
64+
4365
```
4466

4567
Also, you would need to add lombok to your dependencies:

src/main/java/io/github/ngbsn/generator/BiDirectionalMappingsGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import io.github.ngbsn.model.annotations.field.ManyToManyAnnotation;
99
import io.github.ngbsn.util.Util;
1010

11-
import java.util.HashSet;
11+
import java.util.ArrayList;
1212
import java.util.List;
1313
import java.util.Set;
1414

@@ -35,11 +35,11 @@ static void addBiDirectionalMappings(Table table, List<ForeignKeyConstraint> for
3535
column1.setFieldName(Util.convertSnakeCaseToCamelCase(table2.getTableName(), false));
3636
column1.setType(table2.getClassName());
3737
column1.getAnnotations().add(ManyToManyAnnotation.builder().build().toString());
38-
Set<JoinColumnAnnotation> joinColumnAnnotations = new HashSet<>();
38+
List<JoinColumnAnnotation> joinColumnAnnotations = new ArrayList<>();
3939
for (String column : foreignKeyConstraintList.get(0).getColumns()) {
4040
joinColumnAnnotations.add(JoinColumnAnnotation.builder().name(column).build());
4141
}
42-
Set<JoinColumnAnnotation> joinInverseColumnAnnotations = new HashSet<>();
42+
List<JoinColumnAnnotation> joinInverseColumnAnnotations = new ArrayList<>();
4343
for (String column : foreignKeyConstraintList.get(1).getColumns()) {
4444
joinInverseColumnAnnotations.add(JoinColumnAnnotation.builder().name(column).build());
4545
}

src/main/java/io/github/ngbsn/generator/ModelGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,14 @@ private static void processCreateTableStatements(final List<Statement> statement
106106
className = SourceVersion.isKeyword(className) ? className + "Entity" : className;
107107
table.setClassName(className);
108108

109-
Set<String> tableAnnotations = new HashSet<>();
109+
List<String> tableAnnotations = new ArrayList<>();
110110
table.setAnnotations(tableAnnotations);
111111
//Adding @Entity
112112
tableAnnotations.add(new EntityAnnotation().toString());
113113
//Adding @Table
114114
tableAnnotations.add(TableAnnotation.builder().tableName(table.getTableName()).build().toString());
115115

116-
Set<Column> columns = new HashSet<>();
116+
List<Column> columns = new ArrayList<>();
117117
table.setColumns(columns);
118118

119119
//extract columns
@@ -222,11 +222,11 @@ private static void extractPrimaryKeys(final Index primaryKeyIndex, final Table
222222
* @param parsedTable JSQL CreateTable
223223
* @param columns Set of generated column models
224224
*/
225-
private static void extractColumns(final Table table, final CreateTable parsedTable, final Set<Column> columns) {
225+
private static void extractColumns(final Table table, final CreateTable parsedTable, final List<Column> columns) {
226226
parsedTable.getColumnDefinitions().forEach(columnDefinition -> {
227227
Column column = new Column();
228228
columns.add(column);
229-
Set<String> columnAnnotations = new HashSet<>();
229+
List<String> columnAnnotations = new ArrayList<>();
230230
column.setAnnotations(columnAnnotations);
231231
column.setColumnName(columnDefinition.getColumnName().replaceAll(REGEX_ALL_QUOTES, ""));
232232
//Adding @Column

src/main/java/io/github/ngbsn/generator/UniDirectionalMappingsGenerator.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
import io.github.ngbsn.util.Util;
99
import org.apache.commons.text.WordUtils;
1010

11-
import java.util.HashSet;
12-
import java.util.Optional;
13-
import java.util.Set;
11+
import java.util.*;
1412
import java.util.stream.Collectors;
1513
import java.util.stream.Stream;
1614

@@ -101,7 +99,7 @@ private static void handleCompositeForeignKey(Table table, ForeignKeyConstraint
10199
setOfForeignKeyColumns.forEach(column -> table.getColumns().remove(column));
102100
}
103101

104-
Set<JoinColumnAnnotation> joinColumns = new HashSet<>();
102+
List<JoinColumnAnnotation> joinColumns = new ArrayList<>();
105103
//Create the @JoinColumn annotations for the parentTableField
106104
for (int i = 0; i < foreignKeyConstraint.getColumns().size(); i++) {
107105
JoinColumnAnnotation joinColumnAnnotation = JoinColumnAnnotation.builder().name(foreignKeyConstraint.getColumns().get(i)).referencedColumnName(foreignKeyConstraint.getReferencedColumns().get(i)).build();

src/main/java/io/github/ngbsn/model/Column.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import lombok.Getter;
44
import lombok.Setter;
55

6-
import java.util.HashSet;
6+
import java.util.ArrayList;
7+
import java.util.List;
78
import java.util.Set;
89

910
@Setter
@@ -15,5 +16,5 @@ public class Column {
1516
private String type;
1617
private boolean primaryKey;
1718
private boolean sharedPrimaryKey;
18-
private Set<String> annotations = new HashSet<>();
19+
private List<String> annotations = new ArrayList<>();
1920
}

src/main/java/io/github/ngbsn/model/EmbeddableClass.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
import lombok.Getter;
44
import lombok.Setter;
55

6-
import java.util.HashSet;
6+
import java.util.ArrayList;
7+
import java.util.List;
78
import java.util.Set;
89

910
@Setter
1011
@Getter
1112
public class EmbeddableClass {
1213
private String fieldName;
1314
private String className;
14-
private Set<Column> columns = new HashSet<>();
15+
private List<Column> columns = new ArrayList<>();
1516
private boolean embeddedId;
1617
}

src/main/java/io/github/ngbsn/model/Table.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import lombok.Setter;
55

66
import java.util.ArrayList;
7-
import java.util.HashSet;
87
import java.util.List;
98
import java.util.Set;
109

@@ -15,10 +14,10 @@ public class Table {
1514

1615
private String tableName;
1716
private String className;
18-
private Set<Column> columns = new HashSet<>();
19-
private Set<String> annotations = new HashSet<>();
17+
private List<Column> columns = new ArrayList<>();
18+
private List<String> annotations = new ArrayList<>();
2019
private int numOfPrimaryKeyColumns;
2120
private List<ForeignKeyConstraint> foreignKeyConstraints = new ArrayList<>();
22-
private Set<EmbeddableClass> embeddableClasses = new HashSet<>();
23-
private Set<TableEnum> tableEnums = new HashSet<>();
21+
private List<EmbeddableClass> embeddableClasses = new ArrayList<>();
22+
private List<TableEnum> tableEnums = new ArrayList<>();
2423
}

src/main/java/io/github/ngbsn/model/annotations/field/JoinColumnsAnnotation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
import io.github.ngbsn.model.annotations.Annotation;
44
import lombok.Builder;
55

6+
import java.util.List;
67
import java.util.Set;
78
import java.util.stream.Collectors;
89

910
@Builder
1011
public class JoinColumnsAnnotation implements Annotation {
11-
private Set<JoinColumnAnnotation> joinColumns;
12+
private List<JoinColumnAnnotation> joinColumns;
1213

1314
@Override
1415
public String toString() {

src/main/java/io/github/ngbsn/model/annotations/field/JoinTableAnnotation.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
import io.github.ngbsn.model.annotations.Annotation;
44
import lombok.Builder;
55

6+
import java.util.List;
67
import java.util.Set;
78
import java.util.stream.Collectors;
89

910
@Builder
1011
public class JoinTableAnnotation implements Annotation {
1112
private String tableName;
12-
private Set<JoinColumnAnnotation> joinColumns;
13-
private Set<JoinColumnAnnotation> inverseJoinColumns;
13+
private List<JoinColumnAnnotation> joinColumns;
14+
private List<JoinColumnAnnotation> inverseJoinColumns;
1415

1516
@Override
1617
public String toString() {

src/main/java/io/github/ngbsn/util/SQLTypeToJpaTypeMapping.java

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,41 @@
66
public class SQLTypeToJpaTypeMapping {
77

88
public static final String STRING = "String";
9-
public static final String BYTE_ARRAY = "byte[]";
10-
public static final String DOUBLE = "double";
11-
public static final String INT = "int";
12-
public static final String FLOAT = "float";
9+
public static final String BYTE_ARRAY = "Byte[]";
10+
public static final String DOUBLE = "Double";
11+
public static final String INT = "Integer";
12+
public static final String FLOAT = "Float";
1313
public static final String BIG_DECIMAL = "java.math.BigDecimal";
1414
private static final Map<String, String> sqlToJavaMap = new HashMap<>();
1515

16+
public static final String LONG = "Long";
17+
18+
public static final String BOOLEAN = "Boolean";
19+
20+
public static final String JAVA_SQL_TIMESTAMP = "java.sql.Timestamp";
21+
22+
public static final String JAVA_SQL_DATE = "java.sql.Date";
23+
24+
public static final String JAVA_SQL_TIME = "java.sql.Time";
25+
26+
public static final String SHORT = "Short";
27+
28+
public static final String BYTE = "Byte";
29+
1630
static {
1731
//Id
1832
sqlToJavaMap.put("UUID", "java.util.UUID");
1933

2034
// Numeric Types
2135
sqlToJavaMap.put("NUMERIC", BIG_DECIMAL);
2236
sqlToJavaMap.put("DECIMAL", BIG_DECIMAL);
23-
sqlToJavaMap.put("TINYINT", "byte");
24-
sqlToJavaMap.put("SMALLINT", "short");
37+
sqlToJavaMap.put("TINYINT", BYTE);
38+
sqlToJavaMap.put("SMALLINT", SHORT);
2539
sqlToJavaMap.put("MEDIUMINT", INT);
2640
sqlToJavaMap.put("INTEGER", INT);
2741
sqlToJavaMap.put("INT", INT);
28-
sqlToJavaMap.put("BIGINT", "long");
29-
sqlToJavaMap.put("LONG", "long");
42+
sqlToJavaMap.put("BIGINT", LONG);
43+
sqlToJavaMap.put("LONG", LONG);
3044
sqlToJavaMap.put("REAL", FLOAT);
3145
sqlToJavaMap.put("BINARY_FLOAT", DOUBLE);
3246
sqlToJavaMap.put("BINARY_DOUBLE", DOUBLE);
@@ -38,14 +52,14 @@ public class SQLTypeToJpaTypeMapping {
3852
sqlToJavaMap.put("BIGSERIAL", INT);
3953

4054
//Boolean types
41-
sqlToJavaMap.put("BIT", "boolean");
42-
sqlToJavaMap.put("BOOLEAN", "boolean");
55+
sqlToJavaMap.put("BIT", BOOLEAN);
56+
sqlToJavaMap.put("BOOLEAN", BOOLEAN);
4357

4458
//Date and Time Types
45-
sqlToJavaMap.put("DATE", "java.sql.Date");
46-
sqlToJavaMap.put("TIME", "java.sql.Time");
47-
sqlToJavaMap.put("TIMESTAMP", "java.sql.Timestamp");
48-
sqlToJavaMap.put("DATETIME", "java.sql.Timestamp"); // Use @Temporal
59+
sqlToJavaMap.put("DATE", JAVA_SQL_DATE);
60+
sqlToJavaMap.put("TIME", JAVA_SQL_TIME);
61+
sqlToJavaMap.put("TIMESTAMP", JAVA_SQL_TIMESTAMP);
62+
sqlToJavaMap.put("DATETIME", JAVA_SQL_TIMESTAMP); // Use @Temporal
4963

5064
//String Types
5165
sqlToJavaMap.put("CHARACTER", STRING);
@@ -68,17 +82,17 @@ public class SQLTypeToJpaTypeMapping {
6882

6983
// Use @Lob
7084
sqlToJavaMap.put("BYTEA", STRING);
71-
sqlToJavaMap.put("CLOB ", STRING);
72-
sqlToJavaMap.put("NCLOB ", STRING);
73-
sqlToJavaMap.put("TINYTEXT ", STRING);
74-
sqlToJavaMap.put("TEXT ", STRING);
75-
sqlToJavaMap.put("MEDIUMTEXT ", STRING);
76-
sqlToJavaMap.put("LONGTEXT ", STRING);
77-
78-
sqlToJavaMap.put("TINYBLOB ", BYTE_ARRAY);
79-
sqlToJavaMap.put("BLOB ", BYTE_ARRAY);
80-
sqlToJavaMap.put("MEDIUMBLOB ", BYTE_ARRAY);
81-
sqlToJavaMap.put("LONGBLOB ", BYTE_ARRAY);
85+
sqlToJavaMap.put("CLOB", STRING);
86+
sqlToJavaMap.put("NCLOB", STRING);
87+
sqlToJavaMap.put("TINYTEXT", STRING);
88+
sqlToJavaMap.put("TEXT", STRING);
89+
sqlToJavaMap.put("MEDIUMTEXT", STRING);
90+
sqlToJavaMap.put("LONGTEXT", STRING);
91+
92+
sqlToJavaMap.put("TINYBLOB", BYTE_ARRAY);
93+
sqlToJavaMap.put("BLOB", BYTE_ARRAY);
94+
sqlToJavaMap.put("MEDIUMBLOB", BYTE_ARRAY);
95+
sqlToJavaMap.put("LONGBLOB", BYTE_ARRAY);
8296

8397
sqlToJavaMap.put("RAW", BYTE_ARRAY);
8498
sqlToJavaMap.put("LONG RAW", BYTE_ARRAY);

0 commit comments

Comments
 (0)