Skip to content

Commit 7d2e237

Browse files
committed
Updates for my own coding standards
1 parent 4cc5e87 commit 7d2e237

17 files changed

+139
-69
lines changed

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ public class SqlCriterion<T> {
2727
private SqlColumn<T> column;
2828
private VisitableCondition<T> condition;
2929
private Optional<String> connector;
30-
private List<SqlCriterion<?>> subCriteria = new ArrayList<>();
30+
private List<SqlCriterion<?>> subCriteria;
3131

3232
private SqlCriterion(Builder<T> builder) {
3333
connector = Optional.ofNullable(builder.connector);
3434
column = Objects.requireNonNull(builder.column);
3535
condition = Objects.requireNonNull(builder.condition);
36-
subCriteria.addAll(builder.subCriteria);
36+
subCriteria = Objects.requireNonNull(builder.subCriteria);
3737
}
3838

3939
public Optional<String> connector() {

src/main/java/org/mybatis/dynamic/sql/delete/render/DeleteSupport.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,20 @@
1717

1818
import java.util.HashMap;
1919
import java.util.Map;
20+
import java.util.Objects;
2021
import java.util.Optional;
2122

2223
import org.mybatis.dynamic.sql.AbstractSqlSupport;
2324

2425
public class DeleteSupport extends AbstractSqlSupport {
2526

2627
private Optional<String> whereClause;
27-
private Map<String, Object> parameters = new HashMap<>();
28+
private Map<String, Object> parameters;
2829

2930
private DeleteSupport(Builder builder) {
3031
super(builder.tableName);
3132
whereClause = Optional.ofNullable(builder.whereClause);
32-
parameters.putAll(builder.parameters);
33+
parameters = Objects.requireNonNull(builder.parameters);
3334
}
3435

3536
public String getWhereClause() {

src/main/java/org/mybatis/dynamic/sql/insert/InsertModel.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@
3030
public class InsertModel<T> {
3131
private SqlTable table;
3232
private T record;
33-
private List<InsertMapping> columnMappings = new ArrayList<>();
33+
private List<InsertMapping> columnMappings;
3434

3535
private InsertModel(Builder<T> builder) {
3636
table = Objects.requireNonNull(builder.table);
3737
record = Objects.requireNonNull(builder.record);
38-
columnMappings.addAll(builder.columnMappings);
38+
columnMappings = Objects.requireNonNull(builder.columnMappings);
3939
}
4040

4141
public <R> Stream<R> mapColumnMappings(Function<InsertMapping, R> mapper) {

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

+8-12
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
package org.mybatis.dynamic.sql.select;
1717

1818
import java.util.ArrayList;
19-
import java.util.HashMap;
2019
import java.util.List;
2120
import java.util.Map;
21+
import java.util.Objects;
2222
import java.util.Optional;
2323
import java.util.function.Function;
2424
import java.util.stream.Stream;
@@ -34,19 +34,19 @@
3434

3535
public class SelectModel {
3636
private boolean isDistinct;
37-
private List<SelectListItem> selectList = new ArrayList<>();
37+
private List<SelectListItem> selectList;
3838
private SqlTable table;
3939
private Optional<JoinModel> joinModel;
40-
private Map<SqlTable, String> tableAliases = new HashMap<>();
40+
private Map<SqlTable, String> tableAliases;
4141
private Optional<WhereModel> whereModel;
4242
private Optional<List<SqlColumn<?>>> orderByColumns;
4343

4444
private SelectModel(Builder builder) {
4545
isDistinct = builder.isDistinct;
46-
selectList.addAll(builder.selectList);
47-
table = builder.table;
46+
selectList = Objects.requireNonNull(builder.selectList);
47+
table = Objects.requireNonNull(builder.table);
4848
joinModel = Optional.ofNullable(builder.joinModel);
49-
tableAliases.putAll(builder.tableAliases);
49+
tableAliases = Objects.requireNonNull(builder.tableAliases);
5050
whereModel = Optional.ofNullable(builder.whereModel);
5151
orderByColumns = Optional.ofNullable(builder.orderByColumns);
5252
}
@@ -63,10 +63,6 @@ public SqlTable table() {
6363
return table;
6464
}
6565

66-
public Optional<String> tableAlias(Optional<SqlTable> table) {
67-
return table.map(tableAliases::get);
68-
}
69-
7066
public Map<SqlTable, String> tableAliases() {
7167
return tableAliases;
7268
}
@@ -91,7 +87,7 @@ public static class Builder {
9187
private boolean isDistinct;
9288
private List<SelectListItem> selectList = new ArrayList<>();
9389
private SqlTable table;
94-
private Map<SqlTable, String> tableAliases = new HashMap<>();
90+
private Map<SqlTable, String> tableAliases;
9591
private WhereModel whereModel;
9692
private List<SqlColumn<?>> orderByColumns;
9793
private JoinModel joinModel;
@@ -111,7 +107,7 @@ public Builder withColumns(List<SelectListItem> selectList) {
111107
}
112108

113109
public Builder withTableAliases(Map<SqlTable, String> tableAliases) {
114-
this.tableAliases.putAll(tableAliases);
110+
this.tableAliases = tableAliases;
115111
return this;
116112
}
117113

src/main/java/org/mybatis/dynamic/sql/select/join/JoinSpecification.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
public class JoinSpecification {
2727

2828
private SqlTable table;
29-
private List<JoinCriterion<?>> joinCriteria = new ArrayList<>();
29+
private List<JoinCriterion<?>> joinCriteria;
3030

3131
private JoinSpecification(Builder builder) {
3232
table = Objects.requireNonNull(builder.table);
33-
joinCriteria.addAll(builder.joinCriteria);
33+
joinCriteria = Objects.requireNonNull(builder.joinCriteria);
3434
}
3535

3636
public SqlTable table() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* Copyright 2016-2017 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.mybatis.dynamic.sql.select.render;
17+
18+
import java.util.HashMap;
19+
import java.util.Map;
20+
21+
import org.mybatis.dynamic.sql.SqlTable;
22+
23+
/**
24+
* This specialized HashMap will return the user specified alias for a table if there
25+
* is one, else it will return the table name. This is used when there is is a select
26+
* with a join. In that case we always alias the columns and tables regardless
27+
* of whether the caller specified and alias or not.
28+
*
29+
* @author Jeff Butler
30+
*
31+
*/
32+
public class GuaranteedAliasMap extends HashMap<SqlTable, String> {
33+
34+
private static final long serialVersionUID = -2185625759618131743L;
35+
36+
public GuaranteedAliasMap(Map<SqlTable, String> entries) {
37+
putAll(entries);
38+
}
39+
40+
@Override
41+
public String get(Object key) {
42+
SqlTable table = (SqlTable) key;
43+
return getOrDefault(table, table.name());
44+
}
45+
}

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

+25-8
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@
2828

2929
public class JoinRenderer {
3030
private JoinModel joinModel;
31-
private Map<SqlTable, String> tableAliases = new HashMap<>();
31+
private Map<SqlTable, String> tableAliases;
32+
private Map<SqlTable, String> tableAliasesForColumns;
3233

33-
private JoinRenderer(JoinModel joinModel, Map<SqlTable, String> tableAliases) {
34-
this.joinModel = Objects.requireNonNull(joinModel);
35-
this.tableAliases.putAll(tableAliases);
34+
private JoinRenderer(Builder builder) {
35+
joinModel = Objects.requireNonNull(builder.joinModel);
36+
tableAliases = Objects.requireNonNull(builder.tableAliases);
37+
tableAliasesForColumns = new GuaranteedAliasMap(tableAliases);
3638
}
3739

3840
public String render() {
@@ -55,14 +57,29 @@ private String renderConditions(JoinSpecification joinSpecification) {
5557
private String renderCriterion(JoinCriterion<?> joinCriterion) {
5658
return joinCriterion.connector()
5759
+ " " //$NON-NLS-1$
58-
+ RenderingUtilities.columnNameIncludingTableAlias(joinCriterion.leftColumn(), tableAliases)
60+
+ RenderingUtilities.columnNameIncludingTableAlias(joinCriterion.leftColumn(), tableAliasesForColumns)
5961
+ " " //$NON-NLS-1$
6062
+ joinCriterion.operator()
6163
+ " " //$NON-NLS-1$
62-
+ RenderingUtilities.columnNameIncludingTableAlias(joinCriterion.rightColumn(), tableAliases);
64+
+ RenderingUtilities.columnNameIncludingTableAlias(joinCriterion.rightColumn(), tableAliasesForColumns);
6365
}
6466

65-
public static JoinRenderer of(JoinModel joinModel, Map<SqlTable, String> tableAliases) {
66-
return new JoinRenderer(joinModel, tableAliases);
67+
public static class Builder {
68+
private JoinModel joinModel;
69+
private Map<SqlTable, String> tableAliases = new HashMap<>();
70+
71+
public Builder withJoinModel(JoinModel joinModel) {
72+
this.joinModel = joinModel;
73+
return this;
74+
}
75+
76+
public Builder withTableAliases(Map<SqlTable, String> tableAliases) {
77+
this.tableAliases.putAll(tableAliases);
78+
return this;
79+
}
80+
81+
public JoinRenderer build() {
82+
return new JoinRenderer(this);
83+
}
6784
}
6885
}

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

+20-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
*/
1616
package org.mybatis.dynamic.sql.select.render;
1717

18+
import java.util.Map;
1819
import java.util.Objects;
20+
import java.util.Optional;
1921
import java.util.concurrent.atomic.AtomicInteger;
2022
import java.util.function.Consumer;
2123
import java.util.stream.Collectors;
@@ -35,9 +37,17 @@
3537

3638
public class SelectRenderer {
3739
private SelectModel selectModel;
40+
private Map<SqlTable, String> tableAliasesForColumns;
3841

3942
private SelectRenderer(SelectModel selectModel) {
4043
this.selectModel = Objects.requireNonNull(selectModel);
44+
45+
tableAliasesForColumns = selectModel.joinModel().map(jm -> guaranteedAliasMap())
46+
.orElse(selectModel.tableAliases());
47+
}
48+
49+
private Map<SqlTable, String> guaranteedAliasMap() {
50+
return new GuaranteedAliasMap(selectModel.tableAliases());
4151
}
4252

4353
public SelectSupport render(RenderingStrategy renderingStrategy) {
@@ -75,15 +85,22 @@ private String nameIncludingTableAndColumnAlias(SelectListItem selectListItem) {
7585
}
7686

7787
private String calculateColumnNameAndTableAlias(SelectListItem selectListItem) {
78-
return selectListItem.nameIncludingTableAlias(selectModel.tableAlias(selectListItem.table()));
88+
return selectListItem.nameIncludingTableAlias(tableAlias(selectListItem.table()));
89+
}
90+
91+
private Optional<String> tableAlias(Optional<SqlTable> table) {
92+
return table.map(t -> tableAliasesForColumns.get(t));
7993
}
8094

8195
private Consumer<JoinModel> applyJoin(SelectSupport.Builder builder) {
8296
return joinModel -> applyJoin(builder, joinModel);
8397
}
8498

8599
private void applyJoin(SelectSupport.Builder builder, JoinModel joinModel) {
86-
String joinClause = JoinRenderer.of(joinModel, selectModel.tableAliases())
100+
String joinClause = new JoinRenderer.Builder()
101+
.withJoinModel(joinModel)
102+
.withTableAliases(selectModel.tableAliases())
103+
.build()
87104
.render();
88105

89106
builder.withJoinClause(joinClause);
@@ -99,7 +116,7 @@ private void applyWhere(SelectSupport.Builder builder, RenderingStrategy renderi
99116
WhereSupport whereSupport = new WhereRenderer.Builder()
100117
.withWhereModel(whereModel)
101118
.withRenderingStrategy(renderingStrategy)
102-
.withTableAliases(selectModel.tableAliases())
119+
.withTableAliases(tableAliasesForColumns)
103120
.withSequence(sequence)
104121
.build()
105122
.render();

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class SelectSupport extends AbstractSqlSupport {
2828

2929
private String columnList;
3030
private Optional<String> whereClause;
31-
private Map<String, Object> parameters = new HashMap<>();
31+
private Map<String, Object> parameters;
3232
private Optional<String> distinct;
3333
private Optional<String> orderByClause;
3434
private Optional<String> joinClause;
@@ -37,7 +37,7 @@ private SelectSupport(Builder builder) {
3737
super(builder.tableName);
3838
columnList = Objects.requireNonNull(builder.columnList);
3939
whereClause = Optional.ofNullable(builder.whereClause);
40-
parameters.putAll(builder.parameters);
40+
parameters = Objects.requireNonNull(builder.parameters);
4141
distinct = Optional.ofNullable(builder.distinct);
4242
orderByClause = Optional.ofNullable(builder.orderByClause);
4343
joinClause = Optional.ofNullable(builder.joinClause);

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.ArrayList;
1919
import java.util.List;
20+
import java.util.Objects;
2021
import java.util.Optional;
2122
import java.util.function.Function;
2223
import java.util.stream.Stream;
@@ -31,12 +32,12 @@
3132
public class UpdateModel {
3233
private SqlTable table;
3334
private Optional<WhereModel> whereModel;
34-
private List<UpdateMapping> columnValues = new ArrayList<>();
35+
private List<UpdateMapping> columnValues;
3536

3637
private UpdateModel(Builder builder) {
3738
table = builder.table;
3839
whereModel = Optional.ofNullable(builder.whereModel);
39-
columnValues.addAll(builder.columnValues);
40+
columnValues = Objects.requireNonNull(builder.columnValues);
4041
}
4142

4243
public SqlTable table() {

src/main/java/org/mybatis/dynamic/sql/update/render/UpdateSupport.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
public class UpdateSupport extends AbstractSqlSupport {
3333
private String setClause;
3434
private Optional<String> whereClause;
35-
private Map<String, Object> parameters = new HashMap<>();
35+
private Map<String, Object> parameters;
3636

3737
private UpdateSupport(Builder builder) {
3838
super(builder.tableName);
3939
setClause = Objects.requireNonNull(builder.setClause);
4040
whereClause = Optional.ofNullable(builder.whereClause);
41-
parameters.putAll(builder.parameters);
41+
parameters = Objects.requireNonNull(builder.parameters);
4242
}
4343

4444
public String getSetClause() {

src/main/java/org/mybatis/dynamic/sql/util/FragmentAndParameters.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
public class FragmentAndParameters {
2323

2424
private String fragment;
25-
private Map<String, Object> parameters = new HashMap<>();
25+
private Map<String, Object> parameters;
2626

2727
private FragmentAndParameters(Builder builder) {
2828
fragment = Objects.requireNonNull(builder.fragment);
29-
parameters.putAll(builder.parameters);
29+
parameters = Objects.requireNonNull(builder.parameters);
3030
}
3131

3232
public String fragment() {

0 commit comments

Comments
 (0)