1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.data.pipeline.core.sqlbuilder.segment;
19
20 import com.google.common.base.Strings;
21 import org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
22 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
23 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
24
25
26
27
28 public final class PipelineSQLSegmentBuilder {
29
30 private final DialectDatabaseMetaData dialectDatabaseMetaData;
31
32 public PipelineSQLSegmentBuilder(final DatabaseType databaseType) {
33 dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
34 }
35
36
37
38
39
40
41
42 public String getEscapedIdentifier(final String identifier) {
43 return dialectDatabaseMetaData.isReservedWord(identifier) ? dialectDatabaseMetaData.getQuoteCharacter().wrap(identifier) : identifier;
44 }
45
46
47
48
49
50
51
52
53 public String getQualifiedTableName(final String schemaName, final String tableName) {
54 StringBuilder result = new StringBuilder();
55 if (dialectDatabaseMetaData.isSchemaAvailable() && !Strings.isNullOrEmpty(schemaName)) {
56 result.append(getEscapedIdentifier(schemaName)).append('.');
57 }
58 result.append(getEscapedIdentifier(tableName));
59 return result.toString();
60 }
61 }