Skip to content

Commit 7f5635f

Browse files
authored
Merge pull request #266 from jeffgbutler/immutable-functions
Refactoring - remove some useless abstractions, and add consistency
2 parents 9a18d5f + ff31381 commit 7f5635f

19 files changed

+137
-33
lines changed

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -359,22 +359,22 @@ static StringConstant stringConstant(String constant) {
359359
// functions
360360
static <T extends Number> Add<T> add(BindableColumn<T> firstColumn, BasicColumn secondColumn,
361361
BasicColumn... subsequentColumns) {
362-
return Add.of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
362+
return Add.of(firstColumn, secondColumn, subsequentColumns);
363363
}
364364

365365
static <T extends Number> Divide<T> divide(BindableColumn<T> firstColumn, BasicColumn secondColumn,
366366
BasicColumn... subsequentColumns) {
367-
return Divide.of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
367+
return Divide.of(firstColumn, secondColumn, subsequentColumns);
368368
}
369369

370370
static <T extends Number> Multiply<T> multiply(BindableColumn<T> firstColumn, BasicColumn secondColumn,
371371
BasicColumn... subsequentColumns) {
372-
return Multiply.of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
372+
return Multiply.of(firstColumn, secondColumn, subsequentColumns);
373373
}
374374

375375
static <T extends Number> Subtract<T> subtract(BindableColumn<T> firstColumn, BasicColumn secondColumn,
376376
BasicColumn... subsequentColumns) {
377-
return Subtract.of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
377+
return Subtract.of(firstColumn, secondColumn, subsequentColumns);
378378
}
379379

380380
static <T> Concatenate<T> concatenate(BindableColumn<T> firstColumn, BasicColumn secondColumn,
@@ -555,7 +555,7 @@ static <T> IsLessThanOrEqualToWhenPresent<T> isLessThanOrEqualToWhenPresent(Supp
555555

556556
@SafeVarargs
557557
static <T> IsIn<T> isIn(T...values) {
558-
return isIn(Arrays.asList(values));
558+
return IsIn.of(values);
559559
}
560560

561561
static <T> IsIn<T> isIn(Collection<T> values) {
@@ -568,7 +568,7 @@ static <T> IsInWithSubselect<T> isIn(Buildable<SelectModel> selectModelBuilder)
568568

569569
@SafeVarargs
570570
static <T> IsInWhenPresent<T> isInWhenPresent(T...values) {
571-
return isInWhenPresent(Arrays.asList(values));
571+
return IsInWhenPresent.of(values);
572572
}
573573

574574
static <T> IsInWhenPresent<T> isInWhenPresent(Collection<T> values) {
@@ -577,7 +577,7 @@ static <T> IsInWhenPresent<T> isInWhenPresent(Collection<T> values) {
577577

578578
@SafeVarargs
579579
static <T> IsNotIn<T> isNotIn(T...values) {
580-
return isNotIn(Arrays.asList(values));
580+
return IsNotIn.of(values);
581581
}
582582

583583
static <T> IsNotIn<T> isNotIn(Collection<T> values) {
@@ -590,7 +590,7 @@ static <T> IsNotInWithSubselect<T> isNotIn(Buildable<SelectModel> selectModelBui
590590

591591
@SafeVarargs
592592
static <T> IsNotInWhenPresent<T> isNotInWhenPresent(T...values) {
593-
return isNotInWhenPresent(Arrays.asList(values));
593+
return IsNotInWhenPresent.of(values);
594594
}
595595

596596
static <T> IsNotInWhenPresent<T> isNotInWhenPresent(Collection<T> values) {
@@ -705,31 +705,31 @@ static IsNotLikeCaseInsensitiveWhenPresent isNotLikeCaseInsensitiveWhenPresent(S
705705
}
706706

707707
static IsInCaseInsensitive isInCaseInsensitive(String...values) {
708-
return isInCaseInsensitive(Arrays.asList(values));
708+
return IsInCaseInsensitive.of(values);
709709
}
710710

711711
static IsInCaseInsensitive isInCaseInsensitive(Collection<String> values) {
712712
return IsInCaseInsensitive.of(values);
713713
}
714714

715715
static IsInCaseInsensitiveWhenPresent isInCaseInsensitiveWhenPresent(String...values) {
716-
return isInCaseInsensitiveWhenPresent(Arrays.asList(values));
716+
return IsInCaseInsensitiveWhenPresent.of(values);
717717
}
718718

719719
static IsInCaseInsensitiveWhenPresent isInCaseInsensitiveWhenPresent(Collection<String> values) {
720720
return IsInCaseInsensitiveWhenPresent.of(values);
721721
}
722722

723723
static IsNotInCaseInsensitive isNotInCaseInsensitive(String...values) {
724-
return isNotInCaseInsensitive(Arrays.asList(values));
724+
return IsNotInCaseInsensitive.of(values);
725725
}
726726

727727
static IsNotInCaseInsensitive isNotInCaseInsensitive(Collection<String> values) {
728728
return IsNotInCaseInsensitive.of(values);
729729
}
730730

731731
static IsNotInCaseInsensitiveWhenPresent isNotInCaseInsensitiveWhenPresent(String...values) {
732-
return isNotInCaseInsensitiveWhenPresent(Arrays.asList(values));
732+
return IsNotInCaseInsensitiveWhenPresent.of(values);
733733
}
734734

735735
static IsNotInCaseInsensitiveWhenPresent isNotInCaseInsensitiveWhenPresent(Collection<String> values) {

src/main/java/org/mybatis/dynamic/sql/select/aggregate/AbstractCount.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@
2323
* Count functions are implemented differently than the other aggregates. This is primarily to preserve
2424
* backwards compatibility. Count functions are configured as BindableColumns of type Long
2525
* as it is assumed that the count functions always return a number.
26-
*
27-
* @param <T> the subtype of this class
2826
*/
29-
public abstract class AbstractCount<T extends AbstractCount<T>> implements BindableColumn<Long> {
27+
public abstract class AbstractCount implements BindableColumn<Long> {
3028
private final String alias;
3129

30+
protected AbstractCount() {
31+
this(null);
32+
}
33+
3234
protected AbstractCount(String alias) {
3335
this.alias = alias;
3436
}
@@ -37,11 +39,4 @@ protected AbstractCount(String alias) {
3739
public Optional<String> alias() {
3840
return Optional.ofNullable(alias);
3941
}
40-
41-
@Override
42-
public T as(String alias) {
43-
return copyWithAlias(alias);
44-
}
45-
46-
protected abstract T copyWithAlias(String alias);
4742
}

src/main/java/org/mybatis/dynamic/sql/select/aggregate/Count.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@
2020
import org.mybatis.dynamic.sql.BasicColumn;
2121
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
2222

23-
public class Count extends AbstractCount<Count> {
23+
public class Count extends AbstractCount {
2424

2525
private final BasicColumn column;
2626

27+
private Count(BasicColumn column) {
28+
this.column = Objects.requireNonNull(column);
29+
}
30+
2731
private Count(BasicColumn column, String alias) {
2832
super(alias);
2933
this.column = Objects.requireNonNull(column);
@@ -35,11 +39,11 @@ public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
3539
}
3640

3741
@Override
38-
protected Count copyWithAlias(String alias) {
42+
public Count as(String alias) {
3943
return new Count(column, alias);
4044
}
4145

4246
public static Count of(BasicColumn column) {
43-
return new Count(column, null);
47+
return new Count(column);
4448
}
4549
}

src/main/java/org/mybatis/dynamic/sql/select/aggregate/CountAll.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717

1818
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
1919

20-
public class CountAll extends AbstractCount<CountAll> {
20+
public class CountAll extends AbstractCount {
2121

2222
public CountAll() {
23-
super(null);
23+
super();
2424
}
2525

2626
private CountAll(String alias) {
@@ -33,7 +33,7 @@ public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
3333
}
3434

3535
@Override
36-
protected CountAll copyWithAlias(String alias) {
36+
public CountAll as(String alias) {
3737
return new CountAll(alias);
3838
}
3939
}

src/main/java/org/mybatis/dynamic/sql/select/aggregate/CountDistinct.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@
2020
import org.mybatis.dynamic.sql.BasicColumn;
2121
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
2222

23-
public class CountDistinct extends AbstractCount<CountDistinct> {
23+
public class CountDistinct extends AbstractCount {
2424

2525
private final BasicColumn column;
2626

27+
private CountDistinct(BasicColumn column) {
28+
this.column = Objects.requireNonNull(column);
29+
}
30+
2731
private CountDistinct(BasicColumn column, String alias) {
2832
super(alias);
2933
this.column = Objects.requireNonNull(column);
@@ -35,11 +39,11 @@ public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
3539
}
3640

3741
@Override
38-
public CountDistinct copyWithAlias(String alias) {
42+
public CountDistinct as(String alias) {
3943
return new CountDistinct(column, alias);
4044
}
4145

4246
public static CountDistinct of(BasicColumn column) {
43-
return new CountDistinct(column, null);
47+
return new CountDistinct(column);
4448
}
4549
}

src/main/java/org/mybatis/dynamic/sql/select/function/Add.java

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

18+
import java.util.Arrays;
1819
import java.util.List;
1920

2021
import org.mybatis.dynamic.sql.BasicColumn;
@@ -32,6 +33,11 @@ protected Add<T> copy() {
3233
return new Add<>(column, secondColumn, subsequentColumns);
3334
}
3435

36+
public static <T extends Number> Add<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
37+
BasicColumn... subsequentColumns) {
38+
return of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
39+
}
40+
3541
public static <T extends Number> Add<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
3642
List<BasicColumn> subsequentColumns) {
3743
return new Add<>(firstColumn, secondColumn, subsequentColumns);

src/main/java/org/mybatis/dynamic/sql/select/function/Divide.java

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

18+
import java.util.Arrays;
1819
import java.util.List;
1920

2021
import org.mybatis.dynamic.sql.BasicColumn;
@@ -32,6 +33,11 @@ protected Divide<T> copy() {
3233
return new Divide<>(column, secondColumn, subsequentColumns);
3334
}
3435

36+
public static <T extends Number> Divide<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
37+
BasicColumn... subsequentColumns) {
38+
return of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
39+
}
40+
3541
public static <T extends Number> Divide<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
3642
List<BasicColumn> subsequentColumns) {
3743
return new Divide<>(firstColumn, secondColumn, subsequentColumns);

src/main/java/org/mybatis/dynamic/sql/select/function/Multiply.java

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

18+
import java.util.Arrays;
1819
import java.util.List;
1920

2021
import org.mybatis.dynamic.sql.BasicColumn;
@@ -32,6 +33,11 @@ protected Multiply<T> copy() {
3233
return new Multiply<>(column, secondColumn, subsequentColumns);
3334
}
3435

36+
public static <T extends Number> Multiply<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
37+
BasicColumn... subsequentColumns) {
38+
return of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
39+
}
40+
3541
public static <T extends Number> Multiply<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
3642
List<BasicColumn> subsequentColumns) {
3743
return new Multiply<>(firstColumn, secondColumn, subsequentColumns);

src/main/java/org/mybatis/dynamic/sql/select/function/OperatorFunction.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
5959

6060
public static <T> OperatorFunction<T> of(String operator, BindableColumn<T> firstColumn, BasicColumn secondColumn,
6161
BasicColumn... subsequentColumns) {
62-
return new OperatorFunction<>(operator, firstColumn, secondColumn, Arrays.asList(subsequentColumns));
62+
return of(operator, firstColumn, secondColumn, Arrays.asList(subsequentColumns));
63+
}
64+
65+
public static <T> OperatorFunction<T> of(String operator, BindableColumn<T> firstColumn, BasicColumn secondColumn,
66+
List<BasicColumn> subsequentColumns) {
67+
return new OperatorFunction<>(operator, firstColumn, secondColumn, subsequentColumns);
6368
}
6469
}

src/main/java/org/mybatis/dynamic/sql/select/function/Subtract.java

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

18+
import java.util.Arrays;
1819
import java.util.List;
1920

2021
import org.mybatis.dynamic.sql.BasicColumn;
@@ -33,7 +34,12 @@ protected Subtract<T> copy() {
3334
}
3435

3536
public static <T extends Number> Subtract<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
36-
List<BasicColumn> subsequentColumns) {
37+
BasicColumn... subsequentColumns) {
38+
return of(firstColumn, secondColumn, Arrays.asList(subsequentColumns));
39+
}
40+
41+
public static <T extends Number> Subtract<T> of(BindableColumn<T> firstColumn, BasicColumn secondColumn,
42+
List<BasicColumn> subsequentColumns) {
3743
return new Subtract<>(firstColumn, secondColumn, subsequentColumns);
3844
}
3945
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy