Skip to content

Commit ec619b2

Browse files
committed
BugFix: GeneratedValue(xxxx) and CR-LF in DbComment
1 parent bbb36fe commit ec619b2

File tree

12 files changed

+89
-61
lines changed

12 files changed

+89
-61
lines changed

src/main/java/org/telosys/tools/dsl/model/DslModelVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*/
2121
public class DslModelVersion {
2222

23-
public static final String VERSION = "4.1.1.c";
23+
public static final String VERSION = "4.1.1.d";
2424

2525
private DslModelVersion(){}
2626
}

src/main/java/org/telosys/tools/dsl/model/dbmodel/AttributeUtils.java renamed to src/main/java/org/telosys/tools/dsl/model/dbmodel/DbConvUtils.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@
2626
* @author Laurent GUERIN
2727
*
2828
*/
29-
public class AttributeUtils {
29+
public class DbConvUtils {
3030

3131
/**
3232
* Constructor
3333
*/
34-
private AttributeUtils() {
34+
private DbConvUtils() {
3535
}
3636

3737
protected static String getAttributeType(int jdbcSqlType) {
@@ -117,13 +117,32 @@ else if ( v3.startsWith("\"") ) {
117117
}
118118
}
119119

120+
/**
121+
* Clean the raw comment value (for TABLE comment and COLUMN comment)
122+
* @param value
123+
* @return
124+
* @since 4.1.1
125+
*/
126+
protected static String cleanComment(String value) {
127+
return removeSpecialCharacters(value);
128+
}
129+
130+
/**
131+
* Replaces all 'control-char' by a blank (eg CR, LF, etc)
132+
* @param value
133+
* @return
134+
*/
120135
protected static String removeSpecialCharacters(String value) {
121136
StringBuilder sb = new StringBuilder();
122137
for (int i = 0; i < value.length(); i++) {
123138
char c = value.charAt(i);
124139
if (c >= ' ') {
125140
// Not a special character => keep it
126141
sb.append(c);
142+
}
143+
else {
144+
// Replace Ctrl-char by a blank
145+
sb.append(' ');
127146
}
128147
}
129148
return sb.toString();

src/main/java/org/telosys/tools/dsl/model/dbmodel/DbToAttributeConverter.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public DslModelAttribute createAttribute(DatabaseColumn dbCol ) {
5151

5252
//--- Create a new "attribute" for this "column"
5353
String attributeName = NameConverter.columnNameToAttributeName(dbCol.getColumnName());
54-
String attributeType = AttributeUtils.getAttributeType(dbCol.getJdbcTypeCode());
54+
String attributeType = DbConvUtils.getAttributeType(dbCol.getJdbcTypeCode());
5555
DslModelAttribute attribute = new DslModelAttribute(attributeName, attributeType);
5656

5757
String size = builSize(dbCol); // usable as attribute size and database size
@@ -72,19 +72,21 @@ public DslModelAttribute createAttribute(DatabaseColumn dbCol ) {
7272
// DB default value (if option is TRUE in config file) // v 4.1.0
7373
if ( databaseDefinition.isDbDefaultValue() && ( ! StrUtil.nullOrVoid(dbCol.getDefaultValue()) ) ) {
7474
// default value is returned between single quotes => remove single quotes if any
75-
attribute.setDatabaseDefaultValue( AttributeUtils.cleanDefaultValue(dbCol.getDefaultValue()) );
75+
attribute.setDatabaseDefaultValue( DbConvUtils.cleanDefaultValue(dbCol.getDefaultValue()) );
7676
}
7777
// DB comment (if option is TRUE in config file) // v 4.1.0
7878
if ( databaseDefinition.isDbComment() && ( ! StrUtil.nullOrVoid(dbCol.getComment()) ) ) { // Bug Fix ver 4.1.0 : dbCol.getDefaultValue() --> dbCol.getComment()
79-
attribute.setDatabaseComment( dbCol.getComment() );
79+
attribute.setDatabaseComment( DbConvUtils.cleanComment(dbCol.getComment()) ); // v 4.1.1 : cleanComment
8080
}
8181

8282
//--- Other info
8383
// Is this attribute/column in the Table Primary Key ?
8484
attribute.setKeyElement( dbCol.isInPrimaryKey());
8585
// Is this column auto-incremented ?
8686
// v 4.1.0 :: attribute.setAutoIncremented(dbCol.isAutoIncremented());
87-
attribute.setGeneratedValueStrategy(GeneratedValueStrategy.IDENTITY); // v 4.1.0
87+
if ( dbCol.isAutoIncremented() ) { // BUG FIX 4.1.1
88+
attribute.setGeneratedValueStrategy(GeneratedValueStrategy.IDENTITY); // v 4.1.0
89+
}
8890
// Attribute size
8991
if ( ! StrUtil.nullOrVoid(size) ) {
9092
attribute.setSize(size);

src/main/java/org/telosys/tools/dsl/model/dbmodel/DbToEntityConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public DslModelEntity createEntity(DatabaseTable dbTable, DatabaseDefinition dat
5959

6060
// @DbComment(x) (if option is TRUE in config file)
6161
if ( databaseDefinition.isDbComment() && ( ! StrUtil.nullOrVoid(dbTable.getComment()) ) ) { // v 4.1.0
62-
entity.setDatabaseComment( dbTable.getComment() );
62+
entity.setDatabaseComment( DbConvUtils.cleanComment(dbTable.getComment()) ); // v 4.1.1 : cleanComment
6363
}
6464

6565
// @DbView (if option is TRUE in config file)

src/test/java/org/telosys/tools/dsl/model/dbmodel/AttributeUtilsTest.java

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.telosys.tools.dsl.model.dbmodel;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
7+
public class DbConvUtilsTest {
8+
9+
@Test
10+
public void testRemoveSpecialCharacters() {
11+
12+
assertEquals ("ab cd ef ", DbConvUtils.removeSpecialCharacters("ab cd ef "));
13+
assertEquals ("a b c d", DbConvUtils.removeSpecialCharacters("a\nb\fc\rd"));
14+
assertEquals (" ", DbConvUtils.removeSpecialCharacters("\n"));
15+
assertEquals (" ", DbConvUtils.removeSpecialCharacters("\r"));
16+
}
17+
18+
@Test
19+
public void testCleanDefaultValue() {
20+
assertEquals ("abcd", DbConvUtils.cleanDefaultValue(" 'abcd' ") );
21+
assertEquals ("'abcd", DbConvUtils.cleanDefaultValue(" 'abcd ") );
22+
assertEquals (" abcd ", DbConvUtils.cleanDefaultValue(" ' abcd ' ") );
23+
assertEquals (" abcd ", DbConvUtils.cleanDefaultValue(" \" abcd \" ") );
24+
assertEquals ("abcd", DbConvUtils.cleanDefaultValue("'abcd' \n") );
25+
assertEquals ("abcd", DbConvUtils.cleanDefaultValue("abcd\n ") );
26+
}
27+
28+
@Test
29+
public void testCleanComment() {
30+
assertEquals (" abcd ", DbConvUtils.cleanComment(" abcd ") );
31+
assertEquals (" 'abcd ", DbConvUtils.cleanComment(" 'abcd ") );
32+
assertEquals ("abcd efg", DbConvUtils.cleanComment("abcd\nefg") );
33+
assertEquals (" abcd efg ", DbConvUtils.cleanComment(" abcd\refg ") );
34+
}
35+
}

src/test/resources/myproject/TelosysTools/models/customers/Country.entity

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
@DbSchema(CUSTOMERS)
44
Country {
55
// attributes
6-
code : string { @Id @GeneratedValue(IDENTITY) @DbName(CODE) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) };
7-
name : string { @GeneratedValue(IDENTITY) @DbName(NAME) @DbType("CHARACTER VARYING(45)") @Size(45) @MaxLen(45) };
6+
code : string { @Id @DbName(CODE) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) };
7+
name : string { @DbName(NAME) @DbType("CHARACTER VARYING(45)") @Size(45) @MaxLen(45) };
88
// links
99
}

src/test/resources/myproject/TelosysTools/models/customers/Customer.entity

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
@DbSchema(CUSTOMERS)
44
Customer {
55
// attributes
6-
code : string { @Id @GeneratedValue(IDENTITY) @DbName(CODE) @DbType("CHARACTER VARYING(5)") @NotNull @NotEmpty @Size(5) @MaxLen(5) };
7-
countryCode : string { @GeneratedValue(IDENTITY) @DbName(COUNTRY_CODE) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) };
8-
firstName : string { @GeneratedValue(IDENTITY) @DbName(FIRST_NAME) @DbType("CHARACTER VARYING(40)") @DbDefaultValue(" a zer") @DbComment(my comment) @Size(40) @MaxLen(40) };
9-
lastName : string { @GeneratedValue(IDENTITY) @DbName(LAST_NAME) @DbType("CHARACTER VARYING(40)") @Size(40) @MaxLen(40) };
10-
score : decimal { @GeneratedValue(IDENTITY) @DbName(SCORE) @DbType("DECIMAL(5,2)") @Size(5,2) };
11-
login : string { @GeneratedValue(IDENTITY) @DbName(LOGIN) @DbType("CHARACTER VARYING(20)") @NotNull @NotEmpty @Size(20) @MaxLen(20) };
12-
password : string { @GeneratedValue(IDENTITY) @DbName(PASSWORD) @DbType("CHARACTER VARYING(20)") @Size(20) @MaxLen(20) };
13-
age : int { @GeneratedValue(IDENTITY) @DbName(AGE) @DbType(INTEGER) };
14-
city : string { @GeneratedValue(IDENTITY) @DbName(CITY) @DbType("CHARACTER VARYING(45)") @Size(45) @MaxLen(45) };
15-
zipCode : int { @GeneratedValue(IDENTITY) @DbName(ZIP_CODE) @DbType(INTEGER) };
16-
phone : string { @GeneratedValue(IDENTITY) @DbName(PHONE) @DbType("CHARACTER VARYING(20)") @Size(20) @MaxLen(20) };
17-
reviewer : short { @GeneratedValue(IDENTITY) @DbName(REVIEWER) @DbType(SMALLINT) };
6+
code : string { @Id @DbName(CODE) @DbType("CHARACTER VARYING(5)") @NotNull @NotEmpty @Size(5) @MaxLen(5) };
7+
countryCode : string { @DbName(COUNTRY_CODE) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) };
8+
firstName : string { @DbName(FIRST_NAME) @DbType("CHARACTER VARYING(40)") @DbDefaultValue(" a zer") @DbComment(my comment) @Size(40) @MaxLen(40) };
9+
lastName : string { @DbName(LAST_NAME) @DbType("CHARACTER VARYING(40)") @Size(40) @MaxLen(40) };
10+
score : decimal { @DbName(SCORE) @DbType("DECIMAL(5,2)") @Size(5,2) };
11+
login : string { @DbName(LOGIN) @DbType("CHARACTER VARYING(20)") @NotNull @NotEmpty @Size(20) @MaxLen(20) };
12+
password : string { @DbName(PASSWORD) @DbType("CHARACTER VARYING(20)") @Size(20) @MaxLen(20) };
13+
age : int { @DbName(AGE) @DbType(INTEGER) };
14+
city : string { @DbName(CITY) @DbType("CHARACTER VARYING(45)") @Size(45) @MaxLen(45) };
15+
zipCode : int { @DbName(ZIP_CODE) @DbType(INTEGER) };
16+
phone : string { @DbName(PHONE) @DbType("CHARACTER VARYING(20)") @Size(20) @MaxLen(20) };
17+
reviewer : short { @DbName(REVIEWER) @DbType(SMALLINT) };
1818
// links
1919
}

src/test/resources/myproject/TelosysTools/models/students/Course.entity

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
@DbSchema(STUDENTS)
44
Course {
55
// attributes
6-
id : string { @Id @GeneratedValue(IDENTITY) @DbName(ID) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) };
7-
name : string { @GeneratedValue(IDENTITY) @DbName(NAME) @DbType("CHARACTER VARYING(40)") @Size(40) @MaxLen(40) };
6+
id : string { @Id @DbName(ID) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) };
7+
name : string { @DbName(NAME) @DbType("CHARACTER VARYING(40)") @Size(40) @MaxLen(40) };
88
// links
99
teacherList : Teacher[] { @ManyToMany @LinkByJoinEntity(CourseTeacher) };
1010
}

src/test/resources/myproject/TelosysTools/models/students/CourseTeacher.entity

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
@JoinEntity
55
CourseTeacher {
66
// attributes
7-
id : string { @Id @GeneratedValue(IDENTITY) @DbName(ID) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) @FK(FK_COURSE_TEACHER_COURSE, Course.id) };
8-
code : int { @Id @GeneratedValue(IDENTITY) @DbName(CODE) @DbType(INTEGER) @NotNull @NotEmpty @FK(FK_COURSE_TEACHER_TEACHER, Teacher.code) };
7+
id : string { @Id @DbName(ID) @DbType("CHARACTER VARYING(2)") @NotNull @NotEmpty @Size(2) @MaxLen(2) @FK(FK_COURSE_TEACHER_COURSE, Course.id) };
8+
code : int { @Id @DbName(CODE) @DbType(INTEGER) @NotNull @NotEmpty @FK(FK_COURSE_TEACHER_TEACHER, Teacher.code) };
99
// links
1010
}

0 commit comments

Comments
 (0)