
com.github.javaclub.cdl.client.matrix.router.SQLRouteEngine Maven / Gradle / Ivy
The newest version!
package com.github.javaclub.cdl.client.matrix.router;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import com.github.javaclub.cdl.client.matrix.exception.SMatrixJdbcException;
import com.github.javaclub.cdl.client.matrix.exception.SQLParserException;
import com.github.javaclub.cdl.client.matrix.jdbc.DatabaseType;
import com.github.javaclub.cdl.client.matrix.parser.SQLParsedResult;
import com.github.javaclub.cdl.client.matrix.parser.SQLParserFactory;
import com.github.javaclub.cdl.client.matrix.parser.result.router.ConditionContext;
import com.github.javaclub.cdl.client.matrix.parser.result.router.SQLBuilder;
import com.github.javaclub.cdl.client.matrix.parser.result.router.Table;
import com.github.javaclub.cdl.client.matrix.router.single.SingleTableRouter;
import com.github.javaclub.cdl.client.matrix.rule.RouterStrategy;
import com.github.javaclub.cdl.client.parameter.ParameterContext;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
@Slf4j
public class SQLRouteEngine {
private RouterStrategy routerStrategy;
private String logicSql;
public SQLRouteEngine(RouterStrategy routerStrategy) {
super();
this.routerStrategy = routerStrategy;
}
/**
* SQL路由.
*
* @param logicSql
* 逻辑SQL
* @return 路由结果
* @throws SQLParserException
* SQL解析失败异常
*/
public SQLRouteResult route(final String logicSql, final List