Skip to content

Commit a67ef63

Browse files
committed
Refinements to the Fix for Kotlin
1 parent 96d5627 commit a67ef63

File tree

12 files changed

+126
-83
lines changed

12 files changed

+126
-83
lines changed

src/main/java/org/mybatis/dynamic/sql/delete/DeleteDSL.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.mybatis.dynamic.sql.delete;
1717

18+
import java.util.List;
1819
import java.util.Objects;
1920
import java.util.function.Function;
2021
import java.util.function.ToIntFunction;
@@ -51,6 +52,12 @@ public <T> DeleteWhereBuilder where(BindableColumn<T> column, VisitableCondition
5152
return whereBuilder;
5253
}
5354

55+
public <T> DeleteWhereBuilder where(BindableColumn<T> column, VisitableCondition<T> condition,
56+
List<SqlCriterion<?>> subCriteria) {
57+
whereBuilder.where(column, condition, subCriteria);
58+
return whereBuilder;
59+
}
60+
5461
@SuppressWarnings("unchecked")
5562
public DeleteWhereBuilder applyWhere(WhereApplier whereApplier) {
5663
return (DeleteWhereBuilder) whereApplier.apply(whereBuilder);

src/main/java/org/mybatis/dynamic/sql/select/CountDSL.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.mybatis.dynamic.sql.select;
1717

18+
import java.util.List;
1819
import java.util.Objects;
1920
import java.util.function.Function;
2021

@@ -57,6 +58,12 @@ public <T> CountWhereBuilder where(BindableColumn<T> column, VisitableCondition<
5758
return whereBuilder;
5859
}
5960

61+
public <T> CountWhereBuilder where(BindableColumn<T> column, VisitableCondition<T> condition,
62+
List<SqlCriterion<?>> subCriteria) {
63+
whereBuilder.where(column, condition, subCriteria);
64+
return whereBuilder;
65+
}
66+
6067
@SuppressWarnings("unchecked")
6168
public CountWhereBuilder applyWhere(WhereApplier whereApplier) {
6269
return (CountWhereBuilder) whereApplier.apply(whereBuilder);

src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ public <T> QueryExpressionWhereBuilder where(BindableColumn<T> column, Visitable
6969
return whereBuilder;
7070
}
7171

72+
public <T> QueryExpressionWhereBuilder where(BindableColumn<T> column, VisitableCondition<T> condition,
73+
List<SqlCriterion<?>> subCriteria) {
74+
whereBuilder.where(column, condition, subCriteria);
75+
return whereBuilder;
76+
}
77+
7278
@SuppressWarnings("unchecked")
7379
public QueryExpressionWhereBuilder applyWhere(WhereApplier whereApplier) {
7480
return (QueryExpressionWhereBuilder) whereApplier.apply(whereBuilder);

src/main/java/org/mybatis/dynamic/sql/update/UpdateDSL.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ public <T> UpdateWhereBuilder where(BindableColumn<T> column, VisitableCondition
6969
return whereBuilder;
7070
}
7171

72+
public <T> UpdateWhereBuilder where(BindableColumn<T> column, VisitableCondition<T> condition,
73+
List<SqlCriterion<?>> subCriteria) {
74+
whereBuilder.where(column, condition, subCriteria);
75+
return whereBuilder;
76+
}
77+
7278
@SuppressWarnings("unchecked")
7379
public UpdateWhereBuilder applyWhere(WhereApplier whereApplier) {
7480
return (UpdateWhereBuilder) whereApplier.apply(whereBuilder);

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/CountDSLExtensions.kt renamed to src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinCountBuilder.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ import org.mybatis.dynamic.sql.SqlTable
2020
import org.mybatis.dynamic.sql.VisitableCondition
2121
import org.mybatis.dynamic.sql.select.CountDSL
2222
import org.mybatis.dynamic.sql.select.SelectModel
23+
import org.mybatis.dynamic.sql.util.Buildable
2324

24-
typealias CountCompleter = KotlinCountBuilder.() -> KotlinCountBuilder
25+
typealias CountCompleter = KotlinCountBuilder.() -> Buildable<SelectModel>
2526

26-
class KotlinCountBuilder(val dsl: CountDSL<SelectModel>) {
27+
class KotlinCountBuilder(private val dsl: CountDSL<SelectModel>): Buildable<SelectModel> {
2728
fun join(table: SqlTable, receiver: JoinReceiver) =
2829
apply {
2930
val collector = JoinCollector()
@@ -89,8 +90,7 @@ class KotlinCountBuilder(val dsl: CountDSL<SelectModel>) {
8990
apply {
9091
val collector = CriteriaCollector()
9192
collect(collector)
92-
// TODO...awkward
93-
dsl.where(column, condition, *collector.criteria.toTypedArray())
93+
dsl.where(column, condition, collector.criteria)
9494
}
9595

9696
fun applyWhere(whereApplier: WhereApplier) =
@@ -107,8 +107,7 @@ class KotlinCountBuilder(val dsl: CountDSL<SelectModel>) {
107107
apply {
108108
val collector = CriteriaCollector()
109109
collect(collector)
110-
// TODO...awkward
111-
dsl.where().and(column, condition, *collector.criteria.toTypedArray())
110+
dsl.where().and(column, condition, collector.criteria)
112111
}
113112

114113
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>) =
@@ -120,9 +119,10 @@ class KotlinCountBuilder(val dsl: CountDSL<SelectModel>) {
120119
apply {
121120
val collector = CriteriaCollector()
122121
collect(collector)
123-
// TODO...awkward
124-
dsl.where().or(column, condition, *collector.criteria.toTypedArray())
122+
dsl.where().or(column, condition, collector.criteria)
125123
}
126124

127125
fun allRows() = this
126+
127+
override fun build(): SelectModel = dsl.build()
128128
}

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/DeleteDSLExtensions.kt renamed to src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinDeleteBuilder.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ import org.mybatis.dynamic.sql.BindableColumn
1919
import org.mybatis.dynamic.sql.VisitableCondition
2020
import org.mybatis.dynamic.sql.delete.DeleteDSL
2121
import org.mybatis.dynamic.sql.delete.DeleteModel
22+
import org.mybatis.dynamic.sql.util.Buildable
2223

23-
typealias DeleteCompleter = KotlinDeleteBuilder.() -> KotlinDeleteBuilder
24+
typealias DeleteCompleter = KotlinDeleteBuilder.() -> Buildable<DeleteModel>
2425

25-
class KotlinDeleteBuilder(val dsl: DeleteDSL<DeleteModel>) {
26+
class KotlinDeleteBuilder(private val dsl: DeleteDSL<DeleteModel>): Buildable<DeleteModel> {
2627
fun <T> where(column: BindableColumn<T>, condition: VisitableCondition<T>) =
2728
apply {
2829
dsl.where(column, condition)
@@ -32,8 +33,7 @@ class KotlinDeleteBuilder(val dsl: DeleteDSL<DeleteModel>) {
3233
apply {
3334
val collector = CriteriaCollector()
3435
collect(collector)
35-
// TODO...awkward
36-
dsl.where(column, condition, *collector.criteria.toTypedArray())
36+
dsl.where(column, condition, collector.criteria)
3737
}
3838

3939
fun applyWhere(whereApplier: WhereApplier) =
@@ -50,8 +50,7 @@ class KotlinDeleteBuilder(val dsl: DeleteDSL<DeleteModel>) {
5050
apply {
5151
val collector = CriteriaCollector()
5252
collect(collector)
53-
// TODO...awkward
54-
dsl.where().and(column, condition, *collector.criteria.toTypedArray())
53+
dsl.where().and(column, condition, collector.criteria)
5554
}
5655

5756
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>) =
@@ -63,9 +62,10 @@ class KotlinDeleteBuilder(val dsl: DeleteDSL<DeleteModel>) {
6362
apply {
6463
val collector = CriteriaCollector()
6564
collect(collector)
66-
// TODO...awkward
67-
dsl.where().or(column, condition, *collector.criteria.toTypedArray())
65+
dsl.where().or(column, condition, collector.criteria)
6866
}
6967

7068
fun allRows() = this
69+
70+
override fun build(): DeleteModel = dsl.build()
7171
}

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/QueryExpressionDSLExtensions.kt renamed to src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinQueryBuilder.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ package org.mybatis.dynamic.sql.util.kotlin
1818
import org.mybatis.dynamic.sql.*
1919
import org.mybatis.dynamic.sql.select.QueryExpressionDSL
2020
import org.mybatis.dynamic.sql.select.SelectModel
21+
import org.mybatis.dynamic.sql.util.Buildable
2122

22-
typealias SelectCompleter = KotlinQueryBuilder.() -> KotlinQueryBuilder
23+
typealias SelectCompleter = KotlinQueryBuilder.() -> Buildable<SelectModel>
2324

24-
class KotlinQueryBuilder(val dsl: QueryExpressionDSL<SelectModel>) {
25+
class KotlinQueryBuilder(private val dsl: QueryExpressionDSL<SelectModel>): Buildable<SelectModel> {
2526
fun join(table: SqlTable, receiver: JoinReceiver) =
2627
apply {
2728
val collector = JoinCollector()
@@ -87,8 +88,7 @@ class KotlinQueryBuilder(val dsl: QueryExpressionDSL<SelectModel>) {
8788
apply {
8889
val collector = CriteriaCollector()
8990
collect(collector)
90-
// TODO...awkward
91-
dsl.where(column, condition, *collector.criteria.toTypedArray())
91+
dsl.where(column, condition, collector.criteria)
9292
}
9393

9494
fun applyWhere(whereApplier: WhereApplier) =
@@ -105,8 +105,7 @@ class KotlinQueryBuilder(val dsl: QueryExpressionDSL<SelectModel>) {
105105
apply {
106106
val collector = CriteriaCollector()
107107
collect(collector)
108-
// TODO...awkward
109-
dsl.where().and(column, condition, *collector.criteria.toTypedArray())
108+
dsl.where().and(column, condition, collector.criteria)
110109
}
111110

112111
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>) =
@@ -118,8 +117,7 @@ class KotlinQueryBuilder(val dsl: QueryExpressionDSL<SelectModel>) {
118117
apply {
119118
val collector = CriteriaCollector()
120119
collect(collector)
121-
// TODO...awkward
122-
dsl.where().or(column, condition, *collector.criteria.toTypedArray())
120+
dsl.where().or(column, condition, collector.criteria)
123121
}
124122

125123
fun groupBy(vararg columns: BasicColumn) =
@@ -148,4 +146,6 @@ class KotlinQueryBuilder(val dsl: QueryExpressionDSL<SelectModel>) {
148146
}
149147

150148
fun allRows() = this
149+
150+
override fun build(): SelectModel = dsl.build()
151151
}

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/UpdateDSLExtensions.kt renamed to src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinUpdateBuilder.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,16 @@ import org.mybatis.dynamic.sql.insert.InsertDSL
2222
import org.mybatis.dynamic.sql.insert.MultiRowInsertDSL
2323
import org.mybatis.dynamic.sql.update.UpdateDSL
2424
import org.mybatis.dynamic.sql.update.UpdateModel
25+
import org.mybatis.dynamic.sql.util.Buildable
2526

2627
// insert completers are here because sonar doesn't see them as covered if they are in a file by themselves
2728
typealias InsertCompleter<T> = InsertDSL<T>.() -> InsertDSL<T>
2829

2930
typealias MultiRowInsertCompleter<T> = MultiRowInsertDSL<T>.() -> MultiRowInsertDSL<T>
3031

31-
typealias UpdateCompleter = KotlinUpdateBuilder.() -> KotlinUpdateBuilder
32+
typealias UpdateCompleter = KotlinUpdateBuilder.() -> Buildable<UpdateModel>
3233

33-
class KotlinUpdateBuilder(val dsl: UpdateDSL<UpdateModel>) {
34+
class KotlinUpdateBuilder(private val dsl: UpdateDSL<UpdateModel>) : Buildable<UpdateModel> {
3435
fun <T> where(column: BindableColumn<T>, condition: VisitableCondition<T>) =
3536
apply {
3637
dsl.where(column, condition)
@@ -40,8 +41,7 @@ class KotlinUpdateBuilder(val dsl: UpdateDSL<UpdateModel>) {
4041
apply {
4142
val collector = CriteriaCollector()
4243
collect(collector)
43-
// TODO...awkward
44-
dsl.where(column, condition, *collector.criteria.toTypedArray())
44+
dsl.where(column, condition, collector.criteria)
4545
}
4646

4747
fun applyWhere(whereApplier: WhereApplier) =
@@ -58,8 +58,7 @@ class KotlinUpdateBuilder(val dsl: UpdateDSL<UpdateModel>) {
5858
apply {
5959
val collector = CriteriaCollector()
6060
collect(collector)
61-
// TODO...awkward
62-
dsl.where().and(column, condition, *collector.criteria.toTypedArray())
61+
dsl.where().and(column, condition, collector.criteria)
6362
}
6463

6564
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>) =
@@ -71,11 +70,12 @@ class KotlinUpdateBuilder(val dsl: UpdateDSL<UpdateModel>) {
7170
apply {
7271
val collector = CriteriaCollector()
7372
collect(collector)
74-
// TODO...awkward
75-
dsl.where().or(column, condition, *collector.criteria.toTypedArray())
73+
dsl.where().or(column, condition, collector.criteria)
7674
}
7775

7876
fun <T> set(column: SqlColumn<T>): UpdateDSL<UpdateModel>.SetClauseFinisher<T> {
7977
return dsl.set(column)
8078
}
79+
80+
override fun build(): UpdateModel = dsl.build()
8181
}

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/mybatis3/ProviderBuilderFunctions.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ import org.mybatis.dynamic.sql.util.kotlin.*
3232
fun countFrom(table: SqlTable, completer: CountCompleter): SelectStatementProvider {
3333
val builder = KotlinCountBuilder(SqlBuilder.countFrom(table))
3434
completer(builder)
35-
return builder.dsl.build().render(RenderingStrategies.MYBATIS3)
35+
return builder.build().render(RenderingStrategies.MYBATIS3)
3636
}
3737

3838
fun deleteFrom(table: SqlTable, completer: DeleteCompleter): DeleteStatementProvider {
3939
val builder = KotlinDeleteBuilder(SqlBuilder.deleteFrom(table))
4040
completer(builder)
41-
return builder.dsl.build().render(RenderingStrategies.MYBATIS3)
41+
return builder.build().render(RenderingStrategies.MYBATIS3)
4242
}
4343

4444
fun <T> InsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: InsertCompleter<T>): InsertStatementProvider<T> =
@@ -50,23 +50,23 @@ fun <T> MultiRowInsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: Multi
5050
fun QueryExpressionDSL.FromGatherer<SelectModel>.from(table: SqlTable, completer: SelectCompleter): SelectStatementProvider {
5151
val builder = KotlinQueryBuilder(from(table))
5252
completer(builder)
53-
return builder.dsl.build().render(RenderingStrategies.MYBATIS3)
53+
return builder.build().render(RenderingStrategies.MYBATIS3)
5454
}
5555

5656
fun QueryExpressionDSL.FromGatherer<SelectModel>.from(table: SqlTable, alias: String, completer: SelectCompleter): SelectStatementProvider {
5757
val builder = KotlinQueryBuilder(from(table, alias))
5858
completer(builder)
59-
return builder.dsl.build().render(RenderingStrategies.MYBATIS3)
59+
return builder.build().render(RenderingStrategies.MYBATIS3)
6060
}
6161

6262
fun select(start: QueryExpressionDSL<SelectModel>, completer: SelectCompleter): SelectStatementProvider {
6363
val builder = KotlinQueryBuilder(start)
6464
completer(builder)
65-
return builder.dsl.build().render(RenderingStrategies.MYBATIS3)
65+
return builder.build().render(RenderingStrategies.MYBATIS3)
6666
}
6767

6868
fun update(table: SqlTable, completer: UpdateCompleter): UpdateStatementProvider {
6969
val builder = KotlinUpdateBuilder(SqlBuilder.update(table))
7070
completer(builder)
71-
return builder.dsl.build().render(RenderingStrategies.MYBATIS3)
71+
return builder.build().render(RenderingStrategies.MYBATIS3)
7272
}

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/spring/ProviderBuilderFunctions.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ import org.mybatis.dynamic.sql.util.kotlin.*
3030
fun countFrom(table: SqlTable, completer: CountCompleter): SelectStatementProvider {
3131
val builder = KotlinCountBuilder(SqlBuilder.countFrom(table))
3232
completer(builder)
33-
return builder.dsl.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
33+
return builder.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
3434
}
3535

3636
fun deleteFrom(table: SqlTable, completer: DeleteCompleter): DeleteStatementProvider {
3737
val builder = KotlinDeleteBuilder(SqlBuilder.deleteFrom(table))
3838
completer(builder)
39-
return builder.dsl.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
39+
return builder.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
4040
}
4141

4242
fun <T> InsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: InsertCompleter<T>): InsertStatementProvider<T> =
@@ -45,23 +45,23 @@ fun <T> InsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: InsertComplet
4545
fun QueryExpressionDSL.FromGatherer<SelectModel>.from(table: SqlTable, completer: SelectCompleter): SelectStatementProvider {
4646
val builder = KotlinQueryBuilder(from(table))
4747
completer(builder)
48-
return builder.dsl.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
48+
return builder.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
4949
}
5050

5151
fun QueryExpressionDSL.FromGatherer<SelectModel>.from(table: SqlTable, alias: String, completer: SelectCompleter): SelectStatementProvider {
5252
val builder = KotlinQueryBuilder(from(table, alias))
5353
completer(builder)
54-
return builder.dsl.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
54+
return builder.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
5555
}
5656

5757
fun select(start: QueryExpressionDSL<SelectModel>, completer: SelectCompleter): SelectStatementProvider {
5858
val builder = KotlinQueryBuilder(start)
5959
completer(builder)
60-
return builder.dsl.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
60+
return builder.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
6161
}
6262

6363
fun update(table: SqlTable, completer: UpdateCompleter): UpdateStatementProvider {
6464
val builder = KotlinUpdateBuilder(SqlBuilder.update(table))
6565
completer(builder)
66-
return builder.dsl.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
66+
return builder.build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
6767
}

0 commit comments

Comments
 (0)