Unverified Commit 20c67e61 authored by chenqy's avatar chenqy Committed by GitHub
Browse files

Merge pull request #13 from sharding-sphere/dev

update from origin
parents c7154c11 b8332a86
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@
        <netty.version>4.1.16.Final</netty.version>
        <springframework.version>[4.3.6.RELEASE,5.0.0.M1)</springframework.version>
        <spring-boot.version>[1.5.0.RELEASE,2.0.0.M1)</spring-boot.version>
        <mysql-connector-java.version>8.0.11</mysql-connector-java.version>
        <mysql-connector-java.version>5.1.30</mysql-connector-java.version>
        <h2.version>1.4.196</h2.version>
        <postgresql.version>9.1-901-1.jdbc4</postgresql.version>
        <mssql.version>6.1.7.jre7-preview</mssql.version>
+2 −2
Original line number Diff line number Diff line
@@ -81,13 +81,13 @@ public final class InsertOptimizeEngine implements OptimizeEngine {
                Number currentGeneratedKey = generatedKeys.next();
                if (0 == parameters.size()) {
                    if (DefaultKeyword.VALUES.equals(insertValue.getType())) {
                        expression = insertValue.getExpression().substring(0, insertValue.getExpression().length() - 1) + ", " + currentGeneratedKey.toString() + ")";
                        expression = insertValue.getExpression().substring(0, insertValue.getExpression().lastIndexOf(")")) + ", " + currentGeneratedKey.toString() + ")";
                    } else {
                        expression = generateKeyColumn.get().getName() + " = " + currentGeneratedKey + ", " + insertValue.getExpression();
                    }
                } else {
                    if (DefaultKeyword.VALUES.equals(insertValue.getType())) {
                        expression = insertValue.getExpression().substring(0, insertValue.getExpression().length() - 1) + ", ?)";
                        expression = insertValue.getExpression().substring(0, insertValue.getExpression().lastIndexOf(")")) + ", ?)";
                        currentParameters.add(currentGeneratedKey);
                    } else {
                        expression = generateKeyColumn.get().getName() + " = ?, " + insertValue.getExpression();
+12 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import io.shardingsphere.core.api.algorithm.masterslave.MasterSlaveLoadBalanceAl
import io.shardingsphere.core.api.config.MasterSlaveRuleConfiguration;
import io.shardingsphere.core.exception.ShardingConfigurationException;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.ArrayList;
@@ -34,7 +35,9 @@ import java.util.concurrent.ConcurrentHashMap;
 * Master-slave rule configuration for yaml.
 *
 * @author caohao
 * @author panjuan
 */
@NoArgsConstructor
@Getter
@Setter
public class YamlMasterSlaveRuleConfiguration {
@@ -51,6 +54,15 @@ public class YamlMasterSlaveRuleConfiguration {
    
    private Map<String, Object> configMap = new ConcurrentHashMap<>();
    
    public YamlMasterSlaveRuleConfiguration(final MasterSlaveRuleConfiguration masterSlaveRuleConfiguration, final Map<String, Object> configMap) {
        name = masterSlaveRuleConfiguration.getName();
        masterDataSourceName = masterSlaveRuleConfiguration.getMasterDataSourceName();
        slaveDataSourceNames = masterSlaveRuleConfiguration.getSlaveDataSourceNames();
        loadBalanceAlgorithmClassName = null == masterSlaveRuleConfiguration.getLoadBalanceAlgorithm()
                ? null : masterSlaveRuleConfiguration.getLoadBalanceAlgorithm().getClass().getName();
        this.configMap = configMap;
    }
    
    /**
     * Get master-slave rule configuration from yaml.
     *
+23 −0
Original line number Diff line number Diff line
@@ -19,13 +19,16 @@ package io.shardingsphere.core.yaml.sharding;

import io.shardingsphere.core.api.config.MasterSlaveRuleConfiguration;
import io.shardingsphere.core.api.config.ShardingRuleConfiguration;
import io.shardingsphere.core.api.config.TableRuleConfiguration;
import io.shardingsphere.core.keygen.KeyGeneratorFactory;
import io.shardingsphere.core.yaml.masterslave.YamlMasterSlaveRuleConfiguration;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
@@ -37,7 +40,9 @@ import java.util.Properties;
 * Sharding rule configuration for yaml.
 *
 * @author caohao
 * @author panjuan
 */
@NoArgsConstructor
@Getter
@Setter
public class YamlShardingRuleConfiguration {
@@ -60,6 +65,24 @@ public class YamlShardingRuleConfiguration {
    
    private Properties props = new Properties();
    
    public YamlShardingRuleConfiguration(final ShardingRuleConfiguration shardingRuleConfiguration,
                                         final Map<String, Object> configMap, final Properties props) {
        defaultDataSourceName = shardingRuleConfiguration.getDefaultDataSourceName();
        for (TableRuleConfiguration each : shardingRuleConfiguration.getTableRuleConfigs()) {
            tables.put(each.getLogicTable(), new YamlTableRuleConfiguration(each));
        }
        bindingTables.addAll(shardingRuleConfiguration.getBindingTableGroups());
        defaultDatabaseStrategy = new YamlShardingStrategyConfiguration(shardingRuleConfiguration.getDefaultDatabaseShardingStrategyConfig());
        defaultTableStrategy = new YamlShardingStrategyConfiguration(shardingRuleConfiguration.getDefaultTableShardingStrategyConfig());
        defaultKeyGeneratorClassName = null == shardingRuleConfiguration.getDefaultKeyGenerator()
                ? null : shardingRuleConfiguration.getDefaultKeyGenerator().getClass().getName();
        for (MasterSlaveRuleConfiguration each : shardingRuleConfiguration.getMasterSlaveRuleConfigs()) {
            masterSlaveRules.put(each.getName(), new YamlMasterSlaveRuleConfiguration(each, new HashMap<String, Object>()));
        }
        this.configMap = configMap;
        this.props = props;
    }
    
    /**
     * Get sharding rule configuration.
     *
+30 −0
Original line number Diff line number Diff line
@@ -35,13 +35,16 @@ import io.shardingsphere.core.yaml.sharding.strategy.YamlInlineShardingStrategyC
import io.shardingsphere.core.yaml.sharding.strategy.YamlNoneShardingStrategyConfiguration;
import io.shardingsphere.core.yaml.sharding.strategy.YamlStandardShardingStrategyConfiguration;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * Configuration for yaml sharding strategy.
 *
 * @author caohao
 * @author panjuan
 */
@NoArgsConstructor
@Getter
@Setter
public class YamlShardingStrategyConfiguration {
@@ -56,6 +59,33 @@ public class YamlShardingStrategyConfiguration {
    
    private YamlNoneShardingStrategyConfiguration none;
    
    public YamlShardingStrategyConfiguration(final ShardingStrategyConfiguration shardingStrategyConfiguration) {
        if (shardingStrategyConfiguration instanceof StandardShardingStrategyConfiguration) {
            standard = new YamlStandardShardingStrategyConfiguration();
            StandardShardingStrategyConfiguration config = (StandardShardingStrategyConfiguration) shardingStrategyConfiguration;
            standard.setShardingColumn(config.getShardingColumn());
            standard.setPreciseAlgorithmClassName(config.getPreciseShardingAlgorithm().getClass().getName());
            standard.setRangeAlgorithmClassName(null == config.getRangeShardingAlgorithm()
                    ? null : config.getRangeShardingAlgorithm().getClass().getName());
        }
        if (shardingStrategyConfiguration instanceof ComplexShardingStrategyConfiguration) {
            complex = new YamlComplexShardingStrategyConfiguration();
            ComplexShardingStrategyConfiguration config = (ComplexShardingStrategyConfiguration) shardingStrategyConfiguration;
            complex.setShardingColumns(config.getShardingColumns());
            complex.setAlgorithmClassName(config.getShardingAlgorithm().getClass().getName());
        }
        if (shardingStrategyConfiguration instanceof HintShardingStrategyConfiguration) {
            hint = new YamlHintShardingStrategyConfiguration();
            hint.setAlgorithmClassName(((HintShardingStrategyConfiguration) shardingStrategyConfiguration).getShardingAlgorithm().getClass().getName());
        }
        if (shardingStrategyConfiguration instanceof InlineShardingStrategyConfiguration) {
            inline = new YamlInlineShardingStrategyConfiguration();
            InlineShardingStrategyConfiguration config = (InlineShardingStrategyConfiguration) shardingStrategyConfiguration;
            inline.setShardingColumn(config.getShardingColumn());
            inline.setAlgorithmExpression(config.getAlgorithmExpression());
        }
    }
    
    /**
     * Build sharding strategy configuration.
     * 
Loading