// Path: src/main/java/com/elong/pb/newdda/client/constants/DatabaseType.java
// public enum DatabaseType {
// 
//     H2, MySQL, Oracle, SQLServer, DB2;
// 
//     public static DatabaseType valueFrom(final String databaseName) {
//         try {
//             return DatabaseType.valueOf(databaseName);
//         } catch (final IllegalArgumentException ex) {
//             throw new DatabaseTypeUnsupportedException(databaseName);
//         }
//     }
// 
// }
// 
// Path: src/main/java/com/elong/pb/newdda/client/datasource/DataSourceContainer.java
// public class DataSourceContainer {
// 
//     //所有的数据源
//     private Map<String, MasterSlaveDataSource> container;
// 
//     public Map<String, MasterSlaveDataSource> getContainer() {
//         if (container == null) {
//             synchronized (DataSourceContainer.class) {
//                 container = new HashMap<String, MasterSlaveDataSource>();
//                 for (MasterSlaveDataSource masterSlaveDataSource : masterSlaveDataSourceList) {
//                     container.put(masterSlaveDataSource.getName(), masterSlaveDataSource);
//                 }
//             }
//         }
//         return container;
//     }
// 
//     //主从数据源列表
//     private List<MasterSlaveDataSource> masterSlaveDataSourceList = new ArrayList<MasterSlaveDataSource>();
// 
//     //===============================================================get set method start =========================================================================
//     public List<MasterSlaveDataSource> getMasterSlaveDataSourceList() {
//         return masterSlaveDataSourceList;
//     }
// 
//     public void setMasterSlaveDataSourceList(List<MasterSlaveDataSource> masterSlaveDataSourceList) {
//         this.masterSlaveDataSourceList = masterSlaveDataSourceList;
//     }
//     //===============================================================get set method end =========================================================================
// 
// }


import com.elong.pb.newdda.client.constants.DatabaseType;
import com.elong.pb.newdda.client.datasource.DataSourceContainer;
import java.util.List;
package com.elong.pb.newdda.client.router.rule;



/**
 * 分区规则
 * Created by zhangyong on 2016/7/26.
 */
public class ShardingRule {

    //默认mysql数据类型也可以配置
    private DatabaseType databaseType = DatabaseType.MySQL;

    private DataSourceContainer dataSourceContainer;

    private Algorithm algorithm;

    private List<ShardingKey> shardingKey;

    //======================================================================get  set method start ======================================================================
    public DatabaseType getDatabaseType() {
        return databaseType;
    }

// Path: src/main/java/com/elong/pb/newdda/client/constants/DatabaseType.java
// public enum DatabaseType {
// 
//     H2, MySQL, Oracle, SQLServer, DB2;
// 
//     public static DatabaseType valueFrom(final String databaseName) {
//         try {
//             return DatabaseType.valueOf(databaseName);
//         } catch (final IllegalArgumentException ex) {
//             throw new DatabaseTypeUnsupportedException(databaseName);
//         }
//     }
// 
// }
// 
// Path: src/main/java/com/elong/pb/newdda/client/datasource/DataSourceContainer.java
// public class DataSourceContainer {
// 
//     //所有的数据源
//     private Map<String, MasterSlaveDataSource> container;
// 
//     public Map<String, MasterSlaveDataSource> getContainer() {
//         if (container == null) {
//             synchronized (DataSourceContainer.class) {
//                 container = new HashMap<String, MasterSlaveDataSource>();
//                 for (MasterSlaveDataSource masterSlaveDataSource : masterSlaveDataSourceList) {
//                     container.put(masterSlaveDataSource.getName(), masterSlaveDataSource);
//                 }
//             }
//         }
//         return container;
//     }
// 
//     //主从数据源列表
//     private List<MasterSlaveDataSource> masterSlaveDataSourceList = new ArrayList<MasterSlaveDataSource>();
// 
//     //===============================================================get set method start =========================================================================
//     public List<MasterSlaveDataSource> getMasterSlaveDataSourceList() {
//         return masterSlaveDataSourceList;
//     }
// 
//     public void setMasterSlaveDataSourceList(List<MasterSlaveDataSource> masterSlaveDataSourceList) {
//         this.masterSlaveDataSourceList = masterSlaveDataSourceList;
//     }
//     //===============================================================get set method end =========================================================================
// 
// }


// Path: src/main/java/com/elong/pb/newdda/client/router/rule/ShardingRule.java
import com.elong.pb.newdda.client.constants.DatabaseType;
import com.elong.pb.newdda.client.datasource.DataSourceContainer;
import java.util.List;

package com.elong.pb.newdda.client.router.rule;



/**
 * 分区规则
 * Created by zhangyong on 2016/7/26.
 */
public class ShardingRule {

    //默认mysql数据类型也可以配置
    private DatabaseType databaseType = DatabaseType.MySQL;

    private DataSourceContainer dataSourceContainer;

    private Algorithm algorithm;

    private List<ShardingKey> shardingKey;

    //======================================================================get  set method start ======================================================================
    public DatabaseType getDatabaseType() {
        return databaseType;
    }

    public void setDatabaseType(DatabaseType databaseType) {