Skip to content

Commit e76d201

Browse files
authored
Merge pull request #98 from jeffgbutler/master
Misc. Optimizations
2 parents db21e70 + a4eed6c commit e76d201

8 files changed

+20
-40
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ protected SqlTable(Supplier<Optional<String>> catalogSupplier, Supplier<Optional
5252
private String compose(Supplier<Optional<String>> catalogSupplier, Supplier<Optional<String>> schemaSupplier,
5353
String tableName) {
5454
return catalogSupplier.get().map(c -> compose(c, schemaSupplier, tableName))
55-
.orElse(compose(schemaSupplier, tableName));
55+
.orElseGet(() -> compose(schemaSupplier, tableName));
5656
}
5757

5858
private String compose(String catalog, Supplier<Optional<String>> schemaSupplier, String tableName) {
5959
return schemaSupplier.get().map(s -> composeCatalogSchemaAndAndTable(catalog, s, tableName))
60-
.orElse(composeCatalogAndTable(catalog, tableName));
60+
.orElseGet(() -> composeCatalogAndTable(catalog, tableName));
6161
}
6262

6363
private String compose(Supplier<Optional<String>> schemaSupplier, String tableName) {

src/main/java/org/mybatis/dynamic/sql/render/GuaranteedTableAliasCalculator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ private GuaranteedTableAliasCalculator(Map<SqlTable, String> aliases) {
3737
public Optional<String> aliasForColumn(SqlTable table) {
3838
return super.aliasForColumn(table)
3939
.map(Optional::of)
40-
.orElse(Optional.of(table.tableNameAtRuntime()));
40+
.orElseGet(() -> Optional.of(table.tableNameAtRuntime()));
4141
}
4242

4343
public static TableAliasCalculator of(Map<SqlTable, String> aliases) {

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

Lines changed: 4 additions & 3 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.Objects;
1819
import java.util.Optional;
1920

2021
public class LimitAndOffsetPagingModel implements PagingModel {
@@ -23,12 +24,12 @@ public class LimitAndOffsetPagingModel implements PagingModel {
2324
private Long offset;
2425

2526
private LimitAndOffsetPagingModel(Builder builder) {
26-
this.limit = builder.limit;
27+
this.limit = Objects.requireNonNull(builder.limit);
2728
this.offset = builder.offset;
2829
}
2930

30-
public Optional<Long> limit() {
31-
return Optional.ofNullable(limit);
31+
public Long limit() {
32+
return limit;
3233
}
3334

3435
public Optional<Long> offset() {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private QueryExpressionModel(Builder builder) {
5050
table = Objects.requireNonNull(builder.table);
5151
joinModel = builder.joinModel;
5252
tableAliasCalculator = joinModel().map(jm -> GuaranteedTableAliasCalculator.of(builder.tableAliases))
53-
.orElse(TableAliasCalculator.of(builder.tableAliases));
53+
.orElseGet(() -> TableAliasCalculator.of(builder.tableAliases));
5454
whereModel = builder.whereModel;
5555
groupByModel = builder.groupByModel;
5656
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,18 +140,15 @@ public R build() {
140140
}
141141

142142
public class OffsetFinisher implements Buildable<R> {
143-
private LimitAndOffsetPagingModel pagingModel;
144-
145143
public OffsetFinisher(long limit, long offset) {
146-
pagingModel = new LimitAndOffsetPagingModel.Builder()
144+
SelectDSL.this.pagingModel = new LimitAndOffsetPagingModel.Builder()
147145
.withLimit(limit)
148146
.withOffset(offset)
149147
.build();
150148
}
151149

152150
@Override
153151
public R build() {
154-
SelectDSL.this.pagingModel = pagingModel;
155152
return SelectDSL.this.build();
156153
}
157154
}
@@ -169,7 +166,7 @@ public FetchFirstFinisher fetchFirst(long fetchFirstRows) {
169166

170167
@Override
171168
public R build() {
172-
SelectDSL.this.pagingModel = new LimitAndOffsetPagingModel.Builder()
169+
SelectDSL.this.pagingModel = new FetchFirstPagingModel.Builder()
173170
.withOffset(offset)
174171
.build();
175172
return SelectDSL.this.build();
@@ -196,7 +193,6 @@ public RowsOnlyFinisher rowsOnly() {
196193
}
197194

198195
public class RowsOnlyFinisher implements Buildable<R> {
199-
200196
@Override
201197
public R build() {
202198
return SelectDSL.this.build();

src/main/java/org/mybatis/dynamic/sql/select/render/FetchFirstPagingModelRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ public FetchFirstPagingModelRenderer(RenderingStrategy renderingStrategy,
3636
public Optional<FragmentAndParameters> render() {
3737
return pagingModel.offset()
3838
.map(this::renderWithOffset)
39-
.orElse(renderFetchFirstRowsOnly());
39+
.orElseGet(this::renderFetchFirstRowsOnly);
4040
}
4141

4242
private Optional<FragmentAndParameters> renderWithOffset(Long offset) {
4343
return pagingModel.fetchFirstRows()
4444
.map(ffr -> renderOffsetAndFetchFirstRows(offset, ffr))
45-
.orElse(renderOffsetOnly(offset));
45+
.orElseGet(() -> renderOffsetOnly(offset));
4646
}
4747

4848
private Optional<FragmentAndParameters> renderFetchFirstRowsOnly() {

src/main/java/org/mybatis/dynamic/sql/select/render/LimitAndOffsetPagingModelRenderer.java

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -34,38 +34,21 @@ public LimitAndOffsetPagingModelRenderer(RenderingStrategy renderingStrategy,
3434
}
3535

3636
public Optional<FragmentAndParameters> render() {
37-
return pagingModel.limit()
38-
.map(this::renderWithLimit)
39-
.orElse(renderOffsetOnly());
40-
}
41-
42-
private Optional<FragmentAndParameters> renderWithLimit(Long limit) {
4337
return pagingModel.offset()
44-
.map(o -> renderLimitAndOffset(limit, o))
45-
.orElse(renderLimitOnly(limit));
46-
}
47-
48-
private Optional<FragmentAndParameters> renderOffsetOnly() {
49-
return pagingModel.offset().flatMap(this::renderOffsetOnly);
50-
}
51-
52-
private Optional<FragmentAndParameters> renderOffsetOnly(Long offset) {
53-
return FragmentAndParameters
54-
.withFragment("offset " + renderPlaceholder(OFFSET_PARAMETER)) //$NON-NLS-1$
55-
.withParameter(OFFSET_PARAMETER, offset)
56-
.buildOptional();
38+
.map(this::renderLimitAndOffset)
39+
.orElseGet(this::renderLimitOnly);
5740
}
58-
59-
private Optional<FragmentAndParameters> renderLimitOnly(Long limit) {
41+
42+
private Optional<FragmentAndParameters> renderLimitOnly() {
6043
return FragmentAndParameters.withFragment("limit " + renderPlaceholder(LIMIT_PARAMETER)) //$NON-NLS-1$
61-
.withParameter(LIMIT_PARAMETER, limit)
44+
.withParameter(LIMIT_PARAMETER, pagingModel.limit())
6245
.buildOptional();
6346
}
6447

65-
private Optional<FragmentAndParameters> renderLimitAndOffset(Long limit, Long offset) {
48+
private Optional<FragmentAndParameters> renderLimitAndOffset(Long offset) {
6649
return FragmentAndParameters.withFragment("limit " + renderPlaceholder(LIMIT_PARAMETER) //$NON-NLS-1$
6750
+ " offset " + renderPlaceholder(OFFSET_PARAMETER)) //$NON-NLS-1$
68-
.withParameter(LIMIT_PARAMETER, limit)
51+
.withParameter(LIMIT_PARAMETER, pagingModel.limit())
6952
.withParameter(OFFSET_PARAMETER, offset)
7053
.buildOptional();
7154
}

src/main/java/org/mybatis/dynamic/sql/select/render/SelectRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class SelectRenderer {
3838
private SelectRenderer(Builder builder) {
3939
selectModel = Objects.requireNonNull(builder.selectModel);
4040
renderingStrategy = Objects.requireNonNull(builder.renderingStrategy);
41-
sequence = builder.sequence().orElse(new AtomicInteger(1));
41+
sequence = builder.sequence().orElseGet(() -> new AtomicInteger(1));
4242
}
4343

4444
public SelectStatementProvider render() {

0 commit comments

Comments
 (0)