1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
| package com.oying.modules.maint.domain.enums;
| import lombok.extern.slf4j.Slf4j;
|
| /**
| * @author Z
| */
| @Slf4j
| @SuppressWarnings({"unchecked","all"})
| public enum DataTypeEnum {
|
| /** mysql */
| MYSQL("mysql", "mysql", "com.mysql.jdbc.Driver", "`", "`", "'", "'"),
|
| /** oracle */
| ORACLE("oracle", "oracle", "oracle.jdbc.driver.OracleDriver", "\"", "\"", "\"", "\""),
|
| /** sql server */
| SQLSERVER("sqlserver", "sqlserver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "\"", "\"", "\"", "\""),
|
| /** h2 */
| H2("h2", "h2", "org.h2.Driver", "`", "`", "\"", "\""),
|
| /** phoenix */
| PHOENIX("phoenix", "hbase phoenix", "org.apache.phoenix.jdbc.PhoenixDriver", "", "", "\"", "\""),
|
| /** mongo */
| MONGODB("mongo", "mongodb", "mongodb.jdbc.MongoDriver", "`", "`", "\"", "\""),
|
| /** sql4es */
| ELASTICSEARCH("sql4es", "elasticsearch", "nl.anchormen.sql4es.jdbc.ESDriver", "", "", "'", "'"),
|
| /** presto */
| PRESTO("presto", "presto", "com.facebook.presto.jdbc.PrestoDriver", "", "", "\"", "\""),
|
| /** moonbox */
| MOONBOX("moonbox", "moonbox", "moonbox.jdbc.MbDriver", "`", "`", "`", "`"),
|
| /** cassandra */
| CASSANDRA("cassandra", "cassandra", "com.github.adejanovski.cassandra.jdbc.CassandraDriver", "", "", "'", "'"),
|
| /** click house */
| CLICKHOUSE("clickhouse", "clickhouse", "ru.yandex.clickhouse.ClickHouseDriver", "", "", "\"", "\""),
|
| /** kylin */
| KYLIN("kylin", "kylin", "org.apache.kylin.jdbc.Driver", "\"", "\"", "\"", "\""),
|
| /** vertica */
| VERTICA("vertica", "vertica", "com.vertica.jdbc.Driver", "", "", "'", "'"),
|
| /** sap */
| HANA("sap", "sap hana", "com.sap.db.jdbc.Driver", "", "", "'", "'"),
|
| /** impala */
| IMPALA("impala", "impala", "com.cloudera.impala.jdbc41.Driver", "", "", "'", "'");
|
| private String feature;
| private String desc;
| private String driver;
| private String keywordPrefix;
| private String keywordSuffix;
| private String aliasPrefix;
| private String aliasSuffix;
|
| private static final String JDBC_URL_PREFIX = "jdbc:";
|
| DataTypeEnum(String feature, String desc, String driver, String keywordPrefix, String keywordSuffix, String aliasPrefix, String aliasSuffix) {
| this.feature = feature;
| this.desc = desc;
| this.driver = driver;
| this.keywordPrefix = keywordPrefix;
| this.keywordSuffix = keywordSuffix;
| this.aliasPrefix = aliasPrefix;
| this.aliasSuffix = aliasSuffix;
| }
|
| public static DataTypeEnum urlOf(String jdbcUrl) {
| String url = jdbcUrl.toLowerCase().trim();
| for (DataTypeEnum dataTypeEnum : values()) {
| if (url.startsWith(JDBC_URL_PREFIX + dataTypeEnum.feature)) {
| try {
| Class<?> aClass = Class.forName(dataTypeEnum.getDriver());
| if (null == aClass) {
| throw new RuntimeException("Unable to get driver instance for jdbcUrl: " + jdbcUrl);
| }
| } catch (ClassNotFoundException e) {
| throw new RuntimeException("Unable to get driver instance: " + jdbcUrl);
| }
| return dataTypeEnum;
| }
| }
| return null;
| }
|
| public String getFeature() {
| return feature;
| }
|
| public String getDesc() {
| return desc;
| }
|
| public String getDriver() {
| return driver;
| }
|
| public String getKeywordPrefix() {
| return keywordPrefix;
| }
|
| public String getKeywordSuffix() {
| return keywordSuffix;
| }
|
| public String getAliasPrefix() {
| return aliasPrefix;
| }
|
| public String getAliasSuffix() {
| return aliasSuffix;
| }
| }
|
|