提交 c2418eff 编写于 作者: T terrymanu

remove dbType for SQLXXXParserFactory

上级 77e430df
......@@ -64,16 +64,16 @@ public final class SQLParsingEngine {
skipWith(sqlParser);
}
if (sqlParser.equalAny(DefaultKeyword.SELECT)) {
return SQLSelectParserFactory.newInstance(sqlParser, dbType).parse();
return SQLSelectParserFactory.newInstance(sqlParser).parse();
}
if (sqlParser.equalAny(DefaultKeyword.INSERT)) {
return SQLInsertParserFactory.newInstance(shardingRule, parameters, sqlParser, dbType).parse();
return SQLInsertParserFactory.newInstance(shardingRule, parameters, sqlParser).parse();
}
if (sqlParser.equalAny(DefaultKeyword.UPDATE)) {
return SQLUpdateParserFactory.newInstance(sqlParser, dbType).parse();
return SQLUpdateParserFactory.newInstance(sqlParser).parse();
}
if (sqlParser.equalAny(DefaultKeyword.DELETE)) {
return SQLDeleteParserFactory.newInstance(sqlParser, dbType).parse();
return SQLDeleteParserFactory.newInstance(sqlParser).parse();
}
throw new SQLParsingUnsupportedException(sqlParser.getLexer().getCurrentToken().getType());
}
......
......@@ -17,12 +17,15 @@
package com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.delete;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLDeleteParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleDeleteParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLDeleteParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerDeleteParser;
import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerParser;
/**
* Delete语句解析器工厂.
......@@ -34,23 +37,22 @@ public class SQLDeleteParserFactory {
/**
* 创建Delete语句解析器.
*
* @param exprParser 表达式
* @param dbType 数据库类型
* @param sqlParser SQL解析器
* @return Delete语句解析器
*/
public static AbstractDeleteParser newInstance(final SQLParser exprParser, final DatabaseType dbType) {
switch (dbType) {
case H2 :
case MySQL :
return new MySQLDeleteParser(exprParser);
case Oracle:
return new OracleDeleteParser(exprParser);
case SQLServer:
return new SQLServerDeleteParser(exprParser);
case PostgreSQL:
return new PostgreSQLDeleteParser(exprParser);
default:
throw new UnsupportedOperationException(String.format("Cannot support database '%s'.", dbType));
public static AbstractDeleteParser newInstance(final SQLParser sqlParser) {
if (sqlParser instanceof MySQLParser) {
return new MySQLDeleteParser(sqlParser);
}
if (sqlParser instanceof OracleParser) {
return new OracleDeleteParser(sqlParser);
}
if (sqlParser instanceof SQLServerParser) {
return new SQLServerDeleteParser(sqlParser);
}
if (sqlParser instanceof PostgreSQLParser) {
return new PostgreSQLDeleteParser(sqlParser);
}
throw new UnsupportedOperationException(String.format("Cannot support sqlParser class [%s].", sqlParser.getClass()));
}
}
......@@ -17,13 +17,16 @@
package com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.insert;
import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLInsertParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleInsertParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLInsertParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerInsertParser;
import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule;
import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerParser;
import java.util.List;
......@@ -39,23 +42,22 @@ public class SQLInsertParserFactory {
*
* @param shardingRule 分库分表规则配置
* @param parameters 参数列表
* @param exprParser 表达式
* @param dbType 数据库类型
* @param sqlParser SQL解析器
* @return Insert语句解析器
*/
public static AbstractInsertParser newInstance(final ShardingRule shardingRule, final List<Object> parameters, final SQLParser exprParser, final DatabaseType dbType) {
switch (dbType) {
case H2 :
case MySQL :
return new MySQLInsertParser(shardingRule, parameters, exprParser);
case Oracle:
return new OracleInsertParser(shardingRule, parameters, exprParser);
case SQLServer:
return new SQLServerInsertParser(shardingRule, parameters, exprParser);
case PostgreSQL:
return new PostgreSQLInsertParser(shardingRule, parameters, exprParser);
default:
throw new UnsupportedOperationException(String.format("Cannot support database '%s'.", dbType));
public static AbstractInsertParser newInstance(final ShardingRule shardingRule, final List<Object> parameters, final SQLParser sqlParser) {
if (sqlParser instanceof MySQLParser) {
return new MySQLInsertParser(shardingRule, parameters, sqlParser);
}
if (sqlParser instanceof OracleParser) {
return new OracleInsertParser(shardingRule, parameters, sqlParser);
}
if (sqlParser instanceof SQLServerParser) {
return new SQLServerInsertParser(shardingRule, parameters, sqlParser);
}
if (sqlParser instanceof PostgreSQLParser) {
return new PostgreSQLInsertParser(shardingRule, parameters, sqlParser);
}
throw new UnsupportedOperationException(String.format("Cannot support sqlParser class [%s].", sqlParser.getClass()));
}
}
......@@ -17,12 +17,15 @@
package com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.select;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLSelectParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleSelectParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLSelectParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerSelectParser;
import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
/**
* Select语句解析器工厂.
......@@ -34,23 +37,22 @@ public class SQLSelectParserFactory {
/**
* 创建Select语句解析器.
*
* @param exprParser 表达式
* @param dbType 数据库类型
* @param sqlParser SQL解析器
* @return Select语句解析器
*/
public static AbstractSelectParser newInstance(final SQLParser exprParser, final DatabaseType dbType) {
switch (dbType) {
case H2 :
case MySQL :
return new MySQLSelectParser(exprParser);
case Oracle:
return new OracleSelectParser(exprParser);
case SQLServer :
return new SQLServerSelectParser(exprParser);
case PostgreSQL :
return new PostgreSQLSelectParser(exprParser);
default:
throw new UnsupportedOperationException(String.format("Cannot support database '%s'.", dbType));
public static AbstractSelectParser newInstance(final SQLParser sqlParser) {
if (sqlParser instanceof MySQLParser) {
return new MySQLSelectParser(sqlParser);
}
if (sqlParser instanceof OracleParser) {
return new OracleSelectParser(sqlParser);
}
if (sqlParser instanceof SQLServerParser) {
return new SQLServerSelectParser(sqlParser);
}
if (sqlParser instanceof PostgreSQLParser) {
return new PostgreSQLSelectParser(sqlParser);
}
throw new UnsupportedOperationException(String.format("Cannot support sqlParser class [%s].", sqlParser.getClass()));
}
}
......@@ -17,12 +17,15 @@
package com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.update;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.parser.MySQLUpdateParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.oracle.parser.OracleUpdateParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.postgresql.parser.PostgreSQLUpdateParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.sqlserver.parser.SQLServerUpdateParser;
import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
/**
* Update语句解析器工厂.
......@@ -34,23 +37,22 @@ public class SQLUpdateParserFactory {
/**
* 创建Update语句解析器.
*
* @param exprParser 表达式
* @param dbType 数据库类型
* @param sqlParser SQL解析器
* @return Update语句解析器
*/
public static AbstractUpdateParser newInstance(final SQLParser exprParser, final DatabaseType dbType) {
switch (dbType) {
case H2 :
case MySQL :
return new MySQLUpdateParser(exprParser);
case Oracle:
return new OracleUpdateParser(exprParser);
case SQLServer:
return new SQLServerUpdateParser(exprParser);
case PostgreSQL:
return new PostgreSQLUpdateParser(exprParser);
default:
throw new UnsupportedOperationException(String.format("Cannot support database '%s'.", dbType));
public static AbstractUpdateParser newInstance(final SQLParser sqlParser) {
if (sqlParser instanceof MySQLParser) {
return new MySQLUpdateParser(sqlParser);
}
if (sqlParser instanceof OracleParser) {
return new OracleUpdateParser(sqlParser);
}
if (sqlParser instanceof SQLServerParser) {
return new SQLServerUpdateParser(sqlParser);
}
if (sqlParser instanceof PostgreSQLParser) {
return new PostgreSQLUpdateParser(sqlParser);
}
throw new UnsupportedOperationException(String.format("Cannot support sqlParser class [%s].", sqlParser.getClass()));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册