1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql.render;
17
18 import java.util.HashMap;
19 import java.util.Map;
20 import java.util.Objects;
21 import java.util.Optional;
22
23 import org.mybatis.dynamic.sql.SqlTable;
24
25 public class ExplicitTableAliasCalculator implements TableAliasCalculator {
26 private final Map<SqlTable, String> aliases;
27
28 protected ExplicitTableAliasCalculator(Map<SqlTable, String> aliases) {
29 this.aliases = Objects.requireNonNull(aliases);
30 }
31
32 @Override
33 public Optional<String> aliasForColumn(SqlTable table) {
34 return explicitAliasOrTableAlias(table);
35 }
36
37 @Override
38 public Optional<String> aliasForTable(SqlTable table) {
39 return explicitAliasOrTableAlias(table);
40 }
41
42 private Optional<String> explicitAliasOrTableAlias(SqlTable table) {
43 String alias = aliases.get(table);
44 if (alias == null) {
45 return table.tableAlias();
46 } else {
47 return Optional.of(alias);
48 }
49 }
50
51 public static TableAliasCalculator of(SqlTable table, String alias) {
52 Map<SqlTable, String> tableAliases = new HashMap<>();
53 tableAliases.put(table, alias);
54 return of(tableAliases);
55 }
56
57 public static TableAliasCalculator of(Map<SqlTable, String> aliases) {
58 return new ExplicitTableAliasCalculator(aliases);
59 }
60 }