Skip to content

Commit cb9d3a4

Browse files
authored
Merge pull request #137 from jeffgbutler/master
Kotlin Support Updates
2 parents 13c8177 + 090ee4c commit cb9d3a4

32 files changed

+679
-574
lines changed

pom.xml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -144,17 +144,6 @@
144144
</execution>
145145
</executions>
146146
</plugin>
147-
<plugin>
148-
<groupId>com.github.ozsie</groupId>
149-
<artifactId>detekt-maven-plugin</artifactId>
150-
<version>1.0.0</version>
151-
<executions>
152-
<execution>
153-
<phase>verify</phase>
154-
<goals><goal>check</goal></goals>
155-
</execution>
156-
</executions>
157-
</plugin>
158147
<plugin>
159148
<groupId>org.eluder.coveralls</groupId>
160149
<artifactId>coveralls-maven-plugin</artifactId>

src/main/java/org/mybatis/dynamic/sql/SqlBuilder.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,18 @@ static FromGatherer<SelectModel> select(BasicColumn...selectList) {
141141
return SelectDSL.select(selectList);
142142
}
143143

144+
static FromGatherer<SelectModel> select(Collection<BasicColumn> selectList) {
145+
return SelectDSL.select(selectList);
146+
}
147+
144148
static FromGatherer<SelectModel> selectDistinct(BasicColumn...selectList) {
145149
return SelectDSL.selectDistinct(selectList);
146150
}
147151

152+
static FromGatherer<SelectModel> selectDistinct(Collection<BasicColumn> selectList) {
153+
return SelectDSL.selectDistinct(selectList);
154+
}
155+
148156
static UpdateDSL<UpdateModel> update(SqlTable table) {
149157
return UpdateDSL.update(table);
150158
}

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

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

18+
import java.util.ArrayList;
1819
import java.util.Arrays;
20+
import java.util.Collection;
1921
import java.util.List;
2022
import java.util.Objects;
2123

@@ -45,7 +47,7 @@ public class QueryExpressionDSL<R> extends AbstractQueryExpressionDSL<QueryExpre
4547
QueryExpressionDSL(FromGatherer<R> fromGatherer) {
4648
super(fromGatherer.table);
4749
connector = fromGatherer.connector;
48-
selectList = Arrays.asList(fromGatherer.selectList);
50+
selectList = fromGatherer.selectList;
4951
isDistinct = fromGatherer.isDistinct;
5052
selectDSL = Objects.requireNonNull(fromGatherer.selectDSL);
5153
}
@@ -155,7 +157,7 @@ protected QueryExpressionDSL<R> getThis() {
155157

156158
public static class FromGatherer<R> {
157159
private String connector;
158-
private BasicColumn[] selectList;
160+
private List<BasicColumn> selectList;
159161
private SelectDSL<R> selectDSL;
160162
private boolean isDistinct;
161163
private SqlTable table;
@@ -179,7 +181,7 @@ public QueryExpressionDSL<R> from(SqlTable table, String tableAlias) {
179181

180182
public static class Builder<R> {
181183
private String connector;
182-
private BasicColumn[] selectList;
184+
private List<BasicColumn> selectList = new ArrayList<>();
183185
private SelectDSL<R> selectDSL;
184186
private boolean isDistinct;
185187

@@ -188,8 +190,8 @@ public Builder<R> withConnector(String connector) {
188190
return this;
189191
}
190192

191-
public Builder<R> withSelectList(BasicColumn[] selectList) {
192-
this.selectList = selectList;
193+
public Builder<R> withSelectList(Collection<BasicColumn> selectList) {
194+
this.selectList.addAll(selectList);
193195
return this;
194196
}
195197

@@ -430,6 +432,10 @@ public UnionBuilder(String connector) {
430432
}
431433

432434
public FromGatherer<R> select(BasicColumn...selectList) {
435+
return select(Arrays.asList(selectList));
436+
}
437+
438+
public FromGatherer<R> select(List<BasicColumn> selectList) {
433439
return new FromGatherer.Builder<R>()
434440
.withConnector(connector)
435441
.withSelectList(selectList)
@@ -438,6 +444,10 @@ public FromGatherer<R> select(BasicColumn...selectList) {
438444
}
439445

440446
public FromGatherer<R> selectDistinct(BasicColumn...selectList) {
447+
return selectDistinct(Arrays.asList(selectList));
448+
}
449+
450+
public FromGatherer<R> selectDistinct(List<BasicColumn> selectList) {
441451
return new FromGatherer.Builder<R>()
442452
.withConnector(connector)
443453
.withSelectList(selectList)

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package org.mybatis.dynamic.sql.select;
1717

1818
import java.util.ArrayList;
19+
import java.util.Arrays;
20+
import java.util.Collection;
1921
import java.util.List;
2022
import java.util.Objects;
2123
import java.util.function.Function;
@@ -49,23 +51,41 @@ private SelectDSL(Function<SelectModel, R> adapterFunction) {
4951
}
5052

5153
public static QueryExpressionDSL.FromGatherer<SelectModel> select(BasicColumn...selectList) {
54+
return select(Arrays.asList(selectList));
55+
}
56+
57+
public static QueryExpressionDSL.FromGatherer<SelectModel> select(Collection<BasicColumn> selectList) {
5258
return select(Function.identity(), selectList);
5359
}
5460

5561
public static <R> QueryExpressionDSL.FromGatherer<R> select(Function<SelectModel, R> adapterFunction,
5662
BasicColumn...selectList) {
63+
return select(adapterFunction, Arrays.asList(selectList));
64+
}
65+
66+
public static <R> QueryExpressionDSL.FromGatherer<R> select(Function<SelectModel, R> adapterFunction,
67+
Collection<BasicColumn> selectList) {
5768
return new FromGatherer.Builder<R>()
5869
.withSelectList(selectList)
5970
.withSelectDSL(new SelectDSL<>(adapterFunction))
6071
.build();
6172
}
6273

6374
public static QueryExpressionDSL.FromGatherer<SelectModel> selectDistinct(BasicColumn...selectList) {
75+
return selectDistinct(Arrays.asList(selectList));
76+
}
77+
78+
public static QueryExpressionDSL.FromGatherer<SelectModel> selectDistinct(Collection<BasicColumn> selectList) {
6479
return selectDistinct(Function.identity(), selectList);
6580
}
6681

6782
public static <R> QueryExpressionDSL.FromGatherer<R> selectDistinct(Function<SelectModel, R> adapterFunction,
6883
BasicColumn...selectList) {
84+
return selectDistinct(adapterFunction, Arrays.asList(selectList));
85+
}
86+
87+
public static <R> QueryExpressionDSL.FromGatherer<R> selectDistinct(Function<SelectModel, R> adapterFunction,
88+
Collection<BasicColumn> selectList) {
6989
return new FromGatherer.Builder<R>()
7090
.withSelectList(selectList)
7191
.withSelectDSL(new SelectDSL<>(adapterFunction))

src/main/java/org/mybatis/dynamic/sql/util/mybatis3/MyBatis3Utils.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,14 @@ public static <R> R selectOne(Function<SelectStatementProvider, R> mapper,
117117
}
118118

119119
@NotNull
120-
public static <R> Optional<R> selectOptional(Function<SelectStatementProvider, Optional<R>> mapper,
121-
BasicColumn[] selectList, SqlTable table, SelectDSLCompleter completer) {
120+
public static <R> Optional<R> selectOptional(Function<SelectStatementProvider, Optional<R>> mapper,
121+
BasicColumn[] selectList, SqlTable table, SelectDSLCompleter completer) {
122122
return selectOptional(mapper, SqlBuilder.select(selectList).from(table), completer);
123123
}
124124

125125
@NotNull
126-
public static <R> Optional<R> selectOptional(Function<SelectStatementProvider, Optional<R>> mapper,
127-
QueryExpressionDSL<SelectModel> start,
128-
SelectDSLCompleter completer) {
126+
public static <R> Optional<R> selectOptional(Function<SelectStatementProvider, Optional<R>> mapper,
127+
QueryExpressionDSL<SelectModel> start, SelectDSLCompleter completer) {
129128
return mapper.apply(completer.apply(start).build().render(RenderingStrategies.MYBATIS3));
130129
}
131130

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/AbstractQueryExpressionDSLExtensions.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,3 @@ fun <T : AbstractQueryExpressionDSL<T, SelectModel>> AbstractQueryExpressionDSL<
7474
collect(collector)
7575
return rightJoin(table, alias, collector.onJoinCriterion, collector.andJoinCriteria)
7676
}
77-

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/AbstractWhereDSLExtensions.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,13 @@ import org.mybatis.dynamic.sql.BindableColumn
1919
import org.mybatis.dynamic.sql.VisitableCondition
2020
import org.mybatis.dynamic.sql.where.AbstractWhereDSL
2121

22-
fun <T,M : AbstractWhereDSL<M>> AbstractWhereDSL<M>.and(column: BindableColumn<T>, condition: VisitableCondition<T>,
23-
collect: CriteriaReceiver): M {
22+
fun <T, M : AbstractWhereDSL<M>> AbstractWhereDSL<M>.and(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver): M {
2423
val collector = CriteriaCollector()
2524
collect(collector)
2625
return and(column, condition, collector.criteria)
2726
}
2827

29-
fun <T,M : AbstractWhereDSL<M>> AbstractWhereDSL<M>.or(column: BindableColumn<T>, condition: VisitableCondition<T>,
30-
collect: CriteriaReceiver): M {
28+
fun <T, M : AbstractWhereDSL<M>> AbstractWhereDSL<M>.or(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver): M {
3129
val collector = CriteriaCollector()
3230
collect(collector)
3331
return or(column, condition, collector.criteria)

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

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,40 +17,35 @@ package org.mybatis.dynamic.sql.util.kotlin
1717

1818
import org.mybatis.dynamic.sql.BindableColumn
1919
import org.mybatis.dynamic.sql.VisitableCondition
20-
import org.mybatis.dynamic.sql.delete.DeleteDSL
21-
import org.mybatis.dynamic.sql.delete.DeleteModel
2220
import org.mybatis.dynamic.sql.select.CountDSL
2321
import org.mybatis.dynamic.sql.select.SelectModel
2422
import org.mybatis.dynamic.sql.util.Buildable
2523

2624
typealias CountCompleter = CountDSL<SelectModel>.() -> Buildable<SelectModel>
2725

28-
fun <T> CountDSL<SelectModel>.where(column: BindableColumn<T>, condition: VisitableCondition<T>,
29-
collect: CriteriaReceiver) =
30-
apply {
31-
where().and(column, condition, collect)
32-
}
26+
fun <T> CountDSL<SelectModel>.where(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver) =
27+
apply {
28+
where().and(column, condition, collect)
29+
}
3330

3431
fun <T> CountDSL<SelectModel>.and(column: BindableColumn<T>, condition: VisitableCondition<T>) =
35-
apply {
36-
where().and(column, condition)
37-
}
32+
apply {
33+
where().and(column, condition)
34+
}
3835

39-
fun <T> CountDSL<SelectModel>.and(column: BindableColumn<T>, condition: VisitableCondition<T>,
40-
collect: CriteriaReceiver) =
41-
apply {
42-
where().and(column, condition, collect)
43-
}
36+
fun <T> CountDSL<SelectModel>.and(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver) =
37+
apply {
38+
where().and(column, condition, collect)
39+
}
4440

4541
fun <T> CountDSL<SelectModel>.or(column: BindableColumn<T>, condition: VisitableCondition<T>) =
46-
apply {
47-
where().or(column, condition)
48-
}
49-
50-
fun <T> CountDSL<SelectModel>.or(column: BindableColumn<T>, condition: VisitableCondition<T>,
51-
collect: CriteriaReceiver) =
52-
apply {
53-
where().or(column, condition, collect)
54-
}
42+
apply {
43+
where().or(column, condition)
44+
}
45+
46+
fun <T> CountDSL<SelectModel>.or(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver) =
47+
apply {
48+
where().or(column, condition, collect)
49+
}
5550

5651
fun CountDSL<SelectModel>.allRows() = this as Buildable<SelectModel>

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/CriteriaCollector.kt

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,44 +25,42 @@ class CriteriaCollector {
2525
val criteria = mutableListOf<SqlCriterion<*>>()
2626

2727
fun <T> and(column: BindableColumn<T>, condition: VisitableCondition<T>) =
28-
apply {
29-
criteria.add(SqlCriterion.withColumn(column)
30-
.withCondition(condition)
31-
.withConnector("and")
32-
.build())
33-
}
28+
apply {
29+
criteria.add(SqlCriterion.withColumn(column)
30+
.withCondition(condition)
31+
.withConnector("and")
32+
.build())
33+
}
3434

35-
fun <T> and(column: BindableColumn<T>, condition: VisitableCondition<T>,
36-
collect: CriteriaCollector.() -> CriteriaCollector) =
37-
apply {
38-
val collector = CriteriaCollector()
39-
collect(collector)
40-
val criterion: SqlCriterion<T> = SqlCriterion.withColumn(column)
41-
.withCondition(condition)
42-
.withSubCriteria(collector.criteria)
43-
.withConnector("and")
44-
.build()
45-
criteria.add(criterion)
46-
}
35+
fun <T> and(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaCollector.() -> CriteriaCollector) =
36+
apply {
37+
val collector = CriteriaCollector()
38+
collect(collector)
39+
val criterion: SqlCriterion<T> = SqlCriterion.withColumn(column)
40+
.withCondition(condition)
41+
.withSubCriteria(collector.criteria)
42+
.withConnector("and")
43+
.build()
44+
criteria.add(criterion)
45+
}
4746

4847
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>) =
49-
apply {
50-
criteria.add(SqlCriterion.withColumn(column)
51-
.withCondition(condition)
52-
.withConnector("or")
53-
.build())
54-
}
48+
apply {
49+
criteria.add(SqlCriterion.withColumn(column)
50+
.withCondition(condition)
51+
.withConnector("or")
52+
.build())
53+
}
5554

56-
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>,
57-
collect: CriteriaCollector.() -> CriteriaCollector) =
58-
apply {
59-
val collector = CriteriaCollector()
60-
collect(collector)
61-
val criterion: SqlCriterion<T> = SqlCriterion.withColumn(column)
62-
.withCondition(condition)
63-
.withSubCriteria(collector.criteria)
64-
.withConnector("or")
65-
.build()
66-
criteria.add(criterion)
67-
}
55+
fun <T> or(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaCollector.() -> CriteriaCollector) =
56+
apply {
57+
val collector = CriteriaCollector()
58+
collect(collector)
59+
val criterion: SqlCriterion<T> = SqlCriterion.withColumn(column)
60+
.withCondition(condition)
61+
.withSubCriteria(collector.criteria)
62+
.withConnector("or")
63+
.build()
64+
criteria.add(criterion)
65+
}
6866
}

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

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,32 +23,29 @@ import org.mybatis.dynamic.sql.util.Buildable
2323

2424
typealias DeleteCompleter = DeleteDSL<DeleteModel>.() -> Buildable<DeleteModel>
2525

26-
fun <T> DeleteDSL<DeleteModel>.where(column: BindableColumn<T>, condition: VisitableCondition<T>,
27-
collect: CriteriaReceiver) =
28-
apply {
29-
where().and(column, condition, collect)
30-
}
26+
fun <T> DeleteDSL<DeleteModel>.where(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver) =
27+
apply {
28+
where().and(column, condition, collect)
29+
}
3130

3231
fun <T> DeleteDSL<DeleteModel>.and(column: BindableColumn<T>, condition: VisitableCondition<T>) =
33-
apply {
34-
where().and(column, condition)
35-
}
32+
apply {
33+
where().and(column, condition)
34+
}
3635

37-
fun <T> DeleteDSL<DeleteModel>.and(column: BindableColumn<T>, condition: VisitableCondition<T>,
38-
collect: CriteriaReceiver) =
39-
apply {
40-
where().and(column, condition, collect)
41-
}
36+
fun <T> DeleteDSL<DeleteModel>.and(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver) =
37+
apply {
38+
where().and(column, condition, collect)
39+
}
4240

4341
fun <T> DeleteDSL<DeleteModel>.or(column: BindableColumn<T>, condition: VisitableCondition<T>) =
44-
apply {
45-
where().or(column, condition)
46-
}
47-
48-
fun <T> DeleteDSL<DeleteModel>.or(column: BindableColumn<T>, condition: VisitableCondition<T>,
49-
collect: CriteriaReceiver) =
50-
apply {
51-
where().or(column, condition, collect)
52-
}
42+
apply {
43+
where().or(column, condition)
44+
}
45+
46+
fun <T> DeleteDSL<DeleteModel>.or(column: BindableColumn<T>, condition: VisitableCondition<T>, collect: CriteriaReceiver) =
47+
apply {
48+
where().or(column, condition, collect)
49+
}
5350

5451
fun DeleteDSL<DeleteModel>.allRows() = this as Buildable<DeleteModel>

0 commit comments

Comments
 (0)