// Path: src/main/java/com/elong/pb/newdda/client/router/parser/SqlParserResult.java
// public class SqlParserResult {
// 
//     private final RouterContext routeContext = new RouterContext();
// 
//     private final List<ConditionContext> conditionContexts = new ArrayList<ConditionContext>();
// 
//     private final MergeContext mergeContext = new MergeContext();
// 
//     //===================================================================== get set method start ======================================================================
// 
//     public RouterContext getRouteContext() {
//         return routeContext;
//     }
// 
//     public List<ConditionContext> getConditionContexts() {
//         return conditionContexts;
//     }
// 
//     public MergeContext getMergeContext() {
//         return mergeContext;
//     }
// 
//     //===================================================================== get set method end ======================================================================
// 
// }
// 
// Path: src/main/java/com/elong/pb/newdda/client/router/result/router/ConditionContext.java
// public class ConditionContext {
// 
//     private final Map<RouterColumn, RouterCondition> conditions = new LinkedHashMap<RouterColumn, RouterCondition>();
// 
//     /**
//      * 添加条件对象.
//      *
//      * @param condition 条件对象
//      */
//     public void add(final RouterCondition condition) {
//         // TODO 自关联有问题，表名可考虑使用别名对应
//         conditions.put(condition.getRouterColumn(), condition);
//     }
// 
//     /**
//      * 查找条件对象.
//      *
//      * @param table 表名称
//      * @param column 列名称
//      * @return 条件对象
//      */
//     public RouterCondition find(final String table, final String column) {
//         return conditions.get(new RouterColumn(column, table));
//     }
// 
//     /**
//      * 查找条件对象.
//      *
//      * @param table 表名称
//      * @param column 列名称
//      * @param operator 操作符
//      * @return 条件对象
//      */
//     public RouterCondition find(final String table, final String column, final BinaryOperator operator) {
//         RouterCondition result = find(table, column);
//         if(result == null) {
//             return result;
//         }
//         return result.getOperator() == operator ? result : null;
//     }
// 
//     public boolean isEmpty() {
//         return conditions.isEmpty();
//     }
// 
//     public void clear() {
//         conditions.clear();
//     }
// 
//     public Collection<RouterCondition> getAllConditions() {
//         return conditions.values();
//     }
// 
//     public void setNewConditionValue(final List<Object> parameters) {
//         for (RouterCondition each : conditions.values()) {
//             if (each.getValueIndices().isEmpty()) {
//                 continue;
//             }
//             for (int i = 0; i < each.getValueIndices().size(); i++) {
//                 Object value = parameters.get(each.getValueIndices().get(i));
//                 if (value instanceof Comparable<?>) {
//                     each.getValues().set(i, (Comparable<?>) value);
//                 } else {
//                     each.getValues().set(i, "");
//                 }
//             }
//         }
//     }
// 
// }


import com.elong.pb.newdda.client.router.parser.SqlParserResult;
import com.elong.pb.newdda.client.router.result.router.ConditionContext;
import java.util.List;
package com.elong.pb.newdda.client.router;



public class PreparedSqlRouter {

    private final String logicSql;

    private final SqlRouterEngine sqlRouterEngine;

// Path: src/main/java/com/elong/pb/newdda/client/router/parser/SqlParserResult.java
// public class SqlParserResult {
// 
//     private final RouterContext routeContext = new RouterContext();
// 
//     private final List<ConditionContext> conditionContexts = new ArrayList<ConditionContext>();
// 
//     private final MergeContext mergeContext = new MergeContext();
// 
//     //===================================================================== get set method start ======================================================================
// 
//     public RouterContext getRouteContext() {
//         return routeContext;
//     }
// 
//     public List<ConditionContext> getConditionContexts() {
//         return conditionContexts;
//     }
// 
//     public MergeContext getMergeContext() {
//         return mergeContext;
//     }
// 
//     //===================================================================== get set method end ======================================================================
// 
// }
// 
// Path: src/main/java/com/elong/pb/newdda/client/router/result/router/ConditionContext.java
// public class ConditionContext {
// 
//     private final Map<RouterColumn, RouterCondition> conditions = new LinkedHashMap<RouterColumn, RouterCondition>();
// 
//     /**
//      * 添加条件对象.
//      *
//      * @param condition 条件对象
//      */
//     public void add(final RouterCondition condition) {
//         // TODO 自关联有问题，表名可考虑使用别名对应
//         conditions.put(condition.getRouterColumn(), condition);
//     }
// 
//     /**
//      * 查找条件对象.
//      *
//      * @param table 表名称
//      * @param column 列名称
//      * @return 条件对象
//      */
//     public RouterCondition find(final String table, final String column) {
//         return conditions.get(new RouterColumn(column, table));
//     }
// 
//     /**
//      * 查找条件对象.
//      *
//      * @param table 表名称
//      * @param column 列名称
//      * @param operator 操作符
//      * @return 条件对象
//      */
//     public RouterCondition find(final String table, final String column, final BinaryOperator operator) {
//         RouterCondition result = find(table, column);
//         if(result == null) {
//             return result;
//         }
//         return result.getOperator() == operator ? result : null;
//     }
// 
//     public boolean isEmpty() {
//         return conditions.isEmpty();
//     }
// 
//     public void clear() {
//         conditions.clear();
//     }
// 
//     public Collection<RouterCondition> getAllConditions() {
//         return conditions.values();
//     }
// 
//     public void setNewConditionValue(final List<Object> parameters) {
//         for (RouterCondition each : conditions.values()) {
//             if (each.getValueIndices().isEmpty()) {
//                 continue;
//             }
//             for (int i = 0; i < each.getValueIndices().size(); i++) {
//                 Object value = parameters.get(each.getValueIndices().get(i));
//                 if (value instanceof Comparable<?>) {
//                     each.getValues().set(i, (Comparable<?>) value);
//                 } else {
//                     each.getValues().set(i, "");
//                 }
//             }
//         }
//     }
// 
// }


// Path: src/main/java/com/elong/pb/newdda/client/router/PreparedSqlRouter.java
import com.elong.pb.newdda.client.router.parser.SqlParserResult;
import com.elong.pb.newdda.client.router.result.router.ConditionContext;
import java.util.List;

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



public class PreparedSqlRouter {

    private final String logicSql;

    private final SqlRouterEngine sqlRouterEngine;

    private SqlParserResult sqlParserResult;