Skip to content

Commit d2b67e0

Browse files
authored
Handle version properties for Kotlin code generation (#15)
1 parent c0745b8 commit d2b67e0

15 files changed

+67
-4
lines changed

codegen/src/main/java/org/seasar/doma/gradle/codegen/desc/EntityPropertyDesc.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ public class EntityPropertyDesc {
88

99
protected String propertyClassName;
1010

11+
protected String languageClassName;
12+
1113
protected boolean id;
1214

1315
protected GenerationType generationType;
@@ -58,6 +60,14 @@ public String getPropertyClassSimpleName() {
5860
return ClassUtil.getSimpleName(propertyClassName);
5961
}
6062

63+
public String getLanguageClassSimpleName() {
64+
return ClassUtil.getSimpleName(languageClassName);
65+
}
66+
67+
public void setLanguageClassName(String languageClassName) {
68+
this.languageClassName = languageClassName;
69+
}
70+
6171
public void setId(boolean id) {
6272
this.id = id;
6373
}

codegen/src/main/java/org/seasar/doma/gradle/codegen/desc/EntityPropertyDescFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,9 @@ protected void handlePropertyClass(
132132
columnMeta.getSqlType()));
133133
className = String.class.getName();
134134
}
135+
propertyDesc.setPropertyClassName(className);
135136
LanguageClass languageClass = languageClassResolver.resolve(className, columnMeta);
136-
propertyDesc.setPropertyClassName(languageClass.getClassName());
137+
propertyDesc.setLanguageClassName(languageClass.getClassName());
137138
propertyDesc.setDefaultValue(languageClass.getDefaultValue());
138139
if (columnMeta.isNullable() || "null".equals(languageClass.getDefaultValue())) {
139140
propertyDesc.setNullable(true);

codegen/src/main/resources/org/seasar/doma/gradle/codegen/template/kotlin/dao.ftl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ interface ${simpleName} {
2727
* @return the <#if entityDesc.entityPrefix??>${entityDesc.entityPrefix}</#if>${entityDesc.simpleName}<#if entityDesc.entitySuffix??>${entityDesc.entitySuffix}</#if> entity
2828
*/
2929
@Select
30-
fun selectById(<#list entityDesc.idEntityPropertyDescs as property>${property.name}: ${property.propertyClassSimpleName}<#if property_has_next>, </#if></#list>): <#if entityDesc.entityPrefix??>${entityDesc.entityPrefix}</#if>${entityDesc.simpleName}<#if entityDesc.entitySuffix??>${entityDesc.entitySuffix}</#if>
30+
fun selectById(<#list entityDesc.idEntityPropertyDescs as property>${property.name}: ${property.languageClassSimpleName}<#if property_has_next>, </#if></#list>): <#if entityDesc.entityPrefix??>${entityDesc.entityPrefix}</#if>${entityDesc.simpleName}<#if entityDesc.entitySuffix??>${entityDesc.entitySuffix}</#if>
3131

3232
</#if>
3333
<#if entityDesc.idEntityPropertyDescs?size gt 0 && entityDesc.versionEntityPropertyDesc??>
@@ -39,7 +39,7 @@ interface ${simpleName} {
3939
* @return the <#if entityDesc.entityPrefix??>${entityDesc.entityPrefix}</#if>${entityDesc.simpleName}<#if entityDesc.entitySuffix??>${entityDesc.entitySuffix}</#if> entity
4040
*/
4141
@Select(ensureResult = true)
42-
fun selectByIdAndVersion(<#list entityDesc.idEntityPropertyDescs as property>${property.name}: ${property.propertyClassSimpleName}, </#list>${entityDesc.versionEntityPropertyDesc.name}: ${entityDesc.versionEntityPropertyDesc.propertyClassSimpleName}): <#if entityDesc.entityPrefix??>${entityDesc.entityPrefix}</#if>${entityDesc.simpleName}<#if entityDesc.entitySuffix??>${entityDesc.entitySuffix}</#if>
42+
fun selectByIdAndVersion(<#list entityDesc.idEntityPropertyDescs as property>${property.name}: ${property.languageClassSimpleName}, </#list>${entityDesc.versionEntityPropertyDesc.name}: ${entityDesc.versionEntityPropertyDesc.languageClassSimpleName}): <#if entityDesc.entityPrefix??>${entityDesc.entityPrefix}</#if>${entityDesc.simpleName}<#if entityDesc.entitySuffix??>${entityDesc.entitySuffix}</#if>
4343

4444
</#if>
4545
/**

codegen/src/main/resources/org/seasar/doma/gradle/codegen/template/kotlin/entity.ftl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class <#if entityPrefix??>${entityPrefix}</#if>${simpleName}<#if entitySuffix??>
4848
<#if property.showColumnName && property.columnName??>
4949
@Column(name = "${property.columnName}")
5050
</#if>
51-
var ${property.name}: ${property.propertyClassSimpleName}<#if property.nullable>?</#if> = ${property.defaultValue}
51+
var ${property.name}: ${property.languageClassSimpleName}<#if property.nullable>?</#if> = ${property.defaultValue}
5252
</#list>
5353
<#if originalStatesPropertyName??>
5454

codegen/src/test/resources/org/seasar/doma/gradle/codegen/KotlinGeneratorTest_DefaultConfigDao.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ interface HogeDao {
1919
@Select
2020
fun selectById(id: Int): Hoge
2121

22+
/**
23+
* @param id
24+
* @param version
25+
* @return the Hoge entity
26+
*/
27+
@Select(ensureResult = true)
28+
fun selectByIdAndVersion(id: Int, version: Int): Hoge
29+
2230
/**
2331
* @param entity
2432
* @return affected rows

codegen/src/test/resources/org/seasar/doma/gradle/codegen/KotlinGeneratorTest_Metamodel.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import org.seasar.doma.Entity
55
import org.seasar.doma.Id
66
import org.seasar.doma.Metamodel
77
import org.seasar.doma.Table
8+
import org.seasar.doma.Version
89

910
/**
1011
* COMMENT for HOGE
@@ -23,6 +24,7 @@ class Hoge {
2324
var empName: String? = null
2425

2526
/** COMMENT for VERSION */
27+
@Version
2628
@Column(name = "VERSION")
2729
var version: Int = -1
2830
}

codegen/src/test/resources/org/seasar/doma/gradle/codegen/KotlinGeneratorTest_OriginalStates.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import org.seasar.doma.Entity
55
import org.seasar.doma.Id
66
import org.seasar.doma.OriginalStates
77
import org.seasar.doma.Table
8+
import org.seasar.doma.Version
89

910
/**
1011
* COMMENT for HOGE
@@ -23,6 +24,7 @@ class Hoge {
2324
var empName: String? = null
2425

2526
/** COMMENT for VERSION */
27+
@Version
2628
@Column(name = "VERSION")
2729
var version: Int = -1
2830

codegen/src/test/resources/org/seasar/doma/gradle/codegen/KotlinGeneratorTest_SimpleDao.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ interface HogeDao {
2020
@Select
2121
fun selectById(id: Int): Hoge
2222

23+
/**
24+
* @param id
25+
* @param version
26+
* @return the Hoge entity
27+
*/
28+
@Select(ensureResult = true)
29+
fun selectByIdAndVersion(id: Int, version: Int): Hoge
30+
2331
/**
2432
* @param entity
2533
* @return affected rows

codegen/src/test/resources/org/seasar/doma/gradle/codegen/KotlinGeneratorTest_SimpleDao_with_prefix.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ interface THogeDao {
2020
@Select
2121
fun selectById(id: Int): THoge
2222

23+
/**
24+
* @param id
25+
* @param version
26+
* @return the THoge entity
27+
*/
28+
@Select(ensureResult = true)
29+
fun selectByIdAndVersion(id: Int, version: Int): THoge
30+
2331
/**
2432
* @param entity
2533
* @return affected rows

codegen/src/test/resources/org/seasar/doma/gradle/codegen/KotlinGeneratorTest_SimpleDao_with_prefix_and_suffix.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ interface THogeEntityDao {
2020
@Select
2121
fun selectById(id: Int): THogeEntity
2222

23+
/**
24+
* @param id
25+
* @param version
26+
* @return the THogeEntity entity
27+
*/
28+
@Select(ensureResult = true)
29+
fun selectByIdAndVersion(id: Int, version: Int): THogeEntity
30+
2331
/**
2432
* @param entity
2533
* @return affected rows

0 commit comments

Comments
 (0)