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.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
22 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
23 import org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
24 import org.apache.shardingsphere.infra.metadata.database.schema.QualifiedTable;
25
26
27
28
29 public final class PipelineSQLSegmentBuilder {
30
31 private final DatabaseTypeRegistry databaseTypeRegistry;
32
33 private final DialectDatabaseMetaData dialectDatabaseMetaData;
34
35 public PipelineSQLSegmentBuilder(final DatabaseType databaseType) {
36 databaseTypeRegistry = new DatabaseTypeRegistry(databaseType);
37 dialectDatabaseMetaData = databaseTypeRegistry.getDialectDatabaseMetaData();
38 }
39
40
41
42
43
44
45
46 public String getEscapedIdentifier(final String identifier) {
47 return "*".equals(identifier) ? identifier : dialectDatabaseMetaData.getQuoteCharacter().wrap(databaseTypeRegistry.formatIdentifierPattern(identifier));
48 }
49
50
51
52
53
54
55
56
57 public String getQualifiedTableName(final String schemaName, final String tableName) {
58 StringBuilder result = new StringBuilder();
59 if (dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable() && !Strings.isNullOrEmpty(schemaName)) {
60 result.append(getEscapedIdentifier(schemaName)).append('.');
61 }
62 result.append(getEscapedIdentifier(tableName));
63 return result.toString();
64 }
65
66
67
68
69
70
71
72 public String getQualifiedTableName(final QualifiedTable qualifiedTable) {
73 return getQualifiedTableName(qualifiedTable.getSchemaName(), qualifiedTable.getTableName());
74 }
75 }