Commit 4889d6a3 authored by terrymanu's avatar terrymanu
Browse files

For #647: refactor ShardingDataSourceFactory

parent e59165b8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -83,6 +83,6 @@ public class YamlShardingConfiguration {
     * @return sharding rule from yaml
     */
    public ShardingRule getShardingRule(final Collection<String> dataSourceNames) {
        return getShardingRule().getShardingRuleConfiguration().build(dataSourceNames.isEmpty() ? dataSources.keySet() : dataSourceNames);
        return shardingRule.getShardingRuleConfiguration().build(dataSourceNames.isEmpty() ? dataSources.keySet() : dataSourceNames);
    }
}
+17 −19
Original line number Diff line number Diff line
@@ -66,40 +66,36 @@ public final class ShardingDataSourceFactory {
     * @throws IOException IO exception
     */
    public static DataSource createDataSource(final File yamlFile) throws SQLException, IOException {
        YamlShardingConfiguration config = YamlShardingConfiguration.unmarshal(yamlFile);
        Map<String, DataSource> dataSourceMap = config.getDataSources();
        processDataSourceMapWithMasterSlave(dataSourceMap, config.getShardingRule().getShardingRuleConfiguration());
        return new ShardingDataSource(dataSourceMap, config.getShardingRule(dataSourceMap.keySet()), config.getShardingRule().getConfigMap(), config.getShardingRule().getProps());
        return createDataSource(YamlShardingConfiguration.unmarshal(yamlFile));
    }
    
    /**
     * Create sharding data source.
     *
     * @param dataSourceMap data source map
     * @param yamlFile yaml file for rule configuration of databases and tables sharding without data sources
     * @param yamlBytes yaml bytes for rule configuration of databases and tables sharding with data sources
     * @return sharding data source
     * @throws SQLException SQL exception
     * @throws IOException IO exception
     */
    public static DataSource createDataSource(final Map<String, DataSource> dataSourceMap, final File yamlFile) throws SQLException, IOException {
        YamlShardingConfiguration config = YamlShardingConfiguration.unmarshal(yamlFile);
        processDataSourceMapWithMasterSlave(dataSourceMap, config.getShardingRule().getShardingRuleConfiguration());
        return new ShardingDataSource(dataSourceMap, config.getShardingRule(dataSourceMap.keySet()), config.getShardingRule().getConfigMap(), config.getShardingRule().getProps());
    public static DataSource createDataSource(final byte[] yamlBytes) throws SQLException, IOException {
        return createDataSource(YamlShardingConfiguration.unmarshal(yamlBytes));
    }
    
    private static DataSource createDataSource(final YamlShardingConfiguration config) throws SQLException {
        return createDataSource(config.getDataSources(), config.getShardingRule().getShardingRuleConfiguration(), config.getShardingRule().getConfigMap(), config.getShardingRule().getProps());
    }
    
    /**
     * Create sharding data source.
     *
     * @param yamlBytes yaml bytes for rule configuration of databases and tables sharding with data sources
     * @param dataSourceMap data source map
     * @param yamlFile yaml file for rule configuration of databases and tables sharding without data sources
     * @return sharding data source
     * @throws SQLException SQL exception
     * @throws IOException IO exception
     */
    public static DataSource createDataSource(final byte[] yamlBytes) throws SQLException, IOException {
        YamlShardingConfiguration config = YamlShardingConfiguration.unmarshal(yamlBytes);
        Map<String, DataSource> dataSourceMap = config.getDataSources();
        processDataSourceMapWithMasterSlave(dataSourceMap, config.getShardingRule().getShardingRuleConfiguration());
        return new ShardingDataSource(dataSourceMap, config.getShardingRule(dataSourceMap.keySet()), config.getShardingRule().getConfigMap(), config.getShardingRule().getProps());
    public static DataSource createDataSource(final Map<String, DataSource> dataSourceMap, final File yamlFile) throws SQLException, IOException {
        return createDataSource(dataSourceMap, YamlShardingConfiguration.unmarshal(yamlFile));
    }
    
    /**
@@ -112,9 +108,11 @@ public final class ShardingDataSourceFactory {
     * @throws IOException IO exception
     */
    public static DataSource createDataSource(final Map<String, DataSource> dataSourceMap, final byte[] yamlBytes) throws SQLException, IOException {
        YamlShardingConfiguration config = YamlShardingConfiguration.unmarshal(yamlBytes);
        processDataSourceMapWithMasterSlave(dataSourceMap, config.getShardingRule().getShardingRuleConfiguration());
        return new ShardingDataSource(dataSourceMap, config.getShardingRule(dataSourceMap.keySet()), config.getShardingRule().getConfigMap(), config.getShardingRule().getProps());
        return createDataSource(dataSourceMap, YamlShardingConfiguration.unmarshal(yamlBytes));
    }
    
    private static DataSource createDataSource(final Map<String, DataSource> dataSourceMap, final YamlShardingConfiguration config) throws SQLException {
        return createDataSource(dataSourceMap, config.getShardingRule().getShardingRuleConfiguration(), config.getShardingRule().getConfigMap(), config.getShardingRule().getProps());
    }
    
    private static void processDataSourceMapWithMasterSlave(final Map<String, DataSource> dataSourceMap, final ShardingRuleConfiguration shardingRuleConfiguration) throws SQLException {