1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.driver.api;
19
20 import com.google.common.base.Strings;
21 import lombok.AccessLevel;
22 import lombok.NoArgsConstructor;
23 import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
24 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
25 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
26 import org.apache.shardingsphere.database.connector.core.DefaultDatabase;
27
28 import javax.sql.DataSource;
29 import java.sql.SQLException;
30 import java.util.Collection;
31 import java.util.Collections;
32 import java.util.LinkedHashMap;
33 import java.util.LinkedList;
34 import java.util.Map;
35 import java.util.Properties;
36
37
38
39
40 @NoArgsConstructor(access = AccessLevel.PRIVATE)
41 public final class ShardingSphereDataSourceFactory {
42
43
44
45
46
47
48
49
50 public static DataSource createDataSource(final ModeConfiguration modeConfig) throws SQLException {
51 return createDataSource(DefaultDatabase.LOGIC_NAME, modeConfig);
52 }
53
54
55
56
57
58
59
60
61
62 public static DataSource createDataSource(final String databaseName, final ModeConfiguration modeConfig) throws SQLException {
63 return new ShardingSphereDataSource(getDatabaseName(databaseName), modeConfig);
64 }
65
66
67
68
69
70
71
72
73
74
75
76 public static DataSource createDataSource(final ModeConfiguration modeConfig,
77 final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
78 return createDataSource(DefaultDatabase.LOGIC_NAME, modeConfig, dataSourceMap, configs, props);
79 }
80
81
82
83
84
85
86
87
88
89
90
91
92 public static DataSource createDataSource(final String databaseName, final ModeConfiguration modeConfig,
93 final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
94 return new ShardingSphereDataSource(getDatabaseName(databaseName),
95 modeConfig, null == dataSourceMap ? new LinkedHashMap<>() : dataSourceMap, null == configs ? new LinkedList<>() : configs, props);
96 }
97
98
99
100
101
102
103
104
105
106
107
108
109 public static DataSource createDataSource(final String databaseName, final ModeConfiguration modeConfig,
110 final DataSource dataSource, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
111 return createDataSource(databaseName, modeConfig, Collections.singletonMap(getDatabaseName(databaseName), dataSource), configs, props);
112 }
113
114
115
116
117
118
119
120
121
122
123
124 public static DataSource createDataSource(final ModeConfiguration modeConfig,
125 final DataSource dataSource, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
126 return createDataSource(modeConfig, Collections.singletonMap(DefaultDatabase.LOGIC_NAME, dataSource), configs, props);
127 }
128
129
130
131
132
133
134
135
136
137
138 public static DataSource createDataSource(final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
139 return createDataSource((ModeConfiguration) null, dataSourceMap, configs, props);
140 }
141
142
143
144
145
146
147
148
149
150
151
152 public static DataSource createDataSource(final String databaseName,
153 final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
154 return createDataSource(databaseName, null, dataSourceMap, configs, props);
155 }
156
157
158
159
160
161
162
163
164
165
166 public static DataSource createDataSource(final DataSource dataSource, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
167 return createDataSource((ModeConfiguration) null, dataSource, configs, props);
168 }
169
170
171
172
173
174
175
176
177
178
179
180 public static DataSource createDataSource(final String databaseName, final DataSource dataSource, final Collection<RuleConfiguration> configs, final Properties props) throws SQLException {
181 return createDataSource(databaseName, null, dataSource, configs, props);
182 }
183
184 private static String getDatabaseName(final String databaseName) {
185 return Strings.isNullOrEmpty(databaseName) ? DefaultDatabase.LOGIC_NAME : databaseName;
186 }
187 }