diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/SQLParserFactory.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/SQLParserFactory.java index 1b2f042c7f280532dcd3012e312f8c21223f121b..5b566e4c25ef9c75fe88d1bb20e5d9e6557f6a05 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/SQLParserFactory.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/SQLParserFactory.java @@ -18,11 +18,11 @@ package com.dangdang.ddframe.rdb.sharding.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.context.SQLContext; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.PostgreSQLExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.PostgreSQLParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLStatementParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; @@ -61,24 +61,24 @@ public final class SQLParserFactory { } private static SQLStatementParser getSQLStatementParser(final DatabaseType dbType, final String sql, final ShardingRule shardingRule, final List parameters) { - SQLExprParser sqlExprParser; + SQLParser sqlParser; switch (dbType) { case H2: case MySQL: - sqlExprParser = new MySQLExprParser(shardingRule, parameters, sql); + sqlParser = new MySQLParser(sql, shardingRule, parameters); break; case Oracle: - sqlExprParser = new OracleExprParser(shardingRule, parameters, sql); + sqlParser = new OracleParser(sql, shardingRule, parameters); break; case SQLServer: - sqlExprParser = new SQLServerExprParser(shardingRule, parameters, sql); + sqlParser = new SQLServerParser(sql, shardingRule, parameters); break; case PostgreSQL: - sqlExprParser = new PostgreSQLExprParser(shardingRule, parameters, sql); + sqlParser = new PostgreSQLParser(sql, shardingRule, parameters); break; default: throw new UnsupportedOperationException(dbType.name()); } - return new SQLStatementParser(dbType, shardingRule, parameters, sqlExprParser); + return new SQLStatementParser(dbType, shardingRule, parameters, sqlParser); } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLDeleteParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLDeleteParser.java index a44350e2f7313c41668a25531369ee245941114a..cf4fc3485ef78e26b4d962a422eba5ed2a12da0e 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLDeleteParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLDeleteParser.java @@ -19,8 +19,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.lexer.MySQLKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractDeleteParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.delete.AbstractDeleteParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * MySQL Delete语句解析器. @@ -29,7 +29,7 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; */ public final class MySQLDeleteParser extends AbstractDeleteParser { - public MySQLDeleteParser(final SQLExprParser exprParser) { + public MySQLDeleteParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLInsertParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLInsertParser.java index 36801393f7bef70f3925c46e65df7e7360a9ba31..35c760e911eef1409a65802dc570baf9ddf0a75b 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLInsertParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLInsertParser.java @@ -30,8 +30,8 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Literals; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.TokenType; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractInsertParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.insert.AbstractInsertParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.parser.visitor.ParseContext; import com.google.common.collect.Sets; @@ -46,7 +46,7 @@ import java.util.Set; */ public final class MySQLInsertParser extends AbstractInsertParser { - public MySQLInsertParser(final ShardingRule shardingRule, final List parameters, final SQLExprParser exprParser) { + public MySQLInsertParser(final ShardingRule shardingRule, final List parameters, final SQLParser exprParser) { super(shardingRule, parameters, exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLExprParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLParser.java similarity index 95% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLExprParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLParser.java index c34a07aaa2daaa2e61f77506247b0f162bdaa06c..7430ee1967d65ecfccfa078fa2442cb272b690e2 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLExprParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLParser.java @@ -26,16 +26,16 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.lexer.MySQLLex import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Literals; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserException; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.exception.SQLParserException; import java.util.List; -public class MySQLExprParser extends SQLExprParser { +public class MySQLParser extends SQLParser { - public MySQLExprParser(final ShardingRule shardingRule, final List parameters, final String sql) { - super(shardingRule, parameters, new MySQLLexer(sql)); + public MySQLParser(final String sql, final ShardingRule shardingRule, final List parameters) { + super( new MySQLLexer(sql), shardingRule, parameters); getLexer().nextToken(); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLSelectParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLSelectParser.java index fac3c612b5d767fa977937787e156ca3ee7b8fb3..45dd642d7f515e329085a64ba09db5c4f417326d 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLSelectParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLSelectParser.java @@ -21,13 +21,13 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.lexer.MySQLKey import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.lexer.OracleKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Assist; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractSelectParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.select.AbstractSelectParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; public class MySQLSelectParser extends AbstractSelectParser { - public MySQLSelectParser(final SQLExprParser exprParser) { + public MySQLSelectParser(final SQLParser exprParser) { super(exprParser); } @@ -46,7 +46,7 @@ public class MySQLSelectParser extends AbstractSelectParser { parseGroupBy(); getSqlContext().getOrderByContexts().addAll(getExprParser().parseOrderBy(getSqlContext())); if (getExprParser().equalAny(MySQLKeyword.LIMIT)) { - getSqlContext().setLimitContext(((MySQLExprParser) getExprParser()).parseLimit(getParametersIndex(), getSqlContext())); + getSqlContext().setLimitContext(((MySQLParser) getExprParser()).parseLimit(getParametersIndex(), getSqlContext())); } if (getExprParser().equalAny(DefaultKeyword.PROCEDURE)) { throw new ParserUnsupportedException(getExprParser().getLexer().getCurrentToken().getType()); diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLUpdateParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLUpdateParser.java index fcc89926268dc0a86669a952baebc0335b073530..5b589a442c0e8d33c2628695e5d85e1f0a371923 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLUpdateParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLUpdateParser.java @@ -18,8 +18,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.lexer.MySQLKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractUpdateParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.update.AbstractUpdateParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * MySQL Update语句解析器. @@ -28,7 +28,7 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; */ public final class MySQLUpdateParser extends AbstractUpdateParser { - public MySQLUpdateParser(final SQLExprParser exprParser) { + public MySQLUpdateParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleDeleteParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleDeleteParser.java index 52b882a944aade06f66be4e8b0a1814814b499be..e2c9749751bef0bf0ff09c30ecfb1919994b21cf 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleDeleteParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleDeleteParser.java @@ -19,12 +19,12 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.lexer.OracleKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractDeleteParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.delete.AbstractDeleteParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; public class OracleDeleteParser extends AbstractDeleteParser { - public OracleDeleteParser(final SQLExprParser exprParser) { + public OracleDeleteParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleInsertParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleInsertParser.java index ada852f230a7e0faca6fe3449cc9eaf894dc4e06..f572d385a6c18f3160ded9ce3e98bc3bef07b440 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleInsertParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleInsertParser.java @@ -21,8 +21,8 @@ import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.lexer.OracleKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.TokenType; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractInsertParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.insert.AbstractInsertParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.google.common.collect.Sets; import java.util.List; @@ -35,7 +35,7 @@ import java.util.Set; */ public final class OracleInsertParser extends AbstractInsertParser { - public OracleInsertParser(final ShardingRule shardingRule, final List parameters, final SQLExprParser exprParser) { + public OracleInsertParser(final ShardingRule shardingRule, final List parameters, final SQLParser exprParser) { super(shardingRule, parameters, exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleExprParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleParser.java similarity index 84% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleExprParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleParser.java index 3f3fdb6c1cbed0e13c47c3f5297b0d40080d4448..39f946bb2e9d897695f6d6334ca7db4314799af9 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleExprParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleParser.java @@ -22,21 +22,21 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.context.SQLContext; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.lexer.OracleKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.lexer.OracleLexer; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.google.common.base.Optional; import java.util.List; -public class OracleExprParser extends SQLExprParser { +public class OracleParser extends SQLParser { - public OracleExprParser(final ShardingRule shardingRule, final List parameters, final String sql) { - super(shardingRule, parameters, new OracleLexer(sql)); + public OracleParser(final String sql, final ShardingRule shardingRule, final List parameters) { + super(new OracleLexer(sql), shardingRule, parameters); getLexer().nextToken(); } @Override - protected Optional as() { + public Optional as() { if (equalAny(OracleKeyword.CONNECT)) { return Optional.absent(); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleSelectParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleSelectParser.java index 944315de996d21ce00916556f9fd7128f56757d5..7bd980ae7917ef22ef7169b620a3bd271c5915b3 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleSelectParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleSelectParser.java @@ -21,16 +21,16 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.context.TableContext; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.lexer.OracleKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractSelectParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.select.AbstractSelectParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.parser.visitor.ParseContext; import java.util.List; public class OracleSelectParser extends AbstractSelectParser { - public OracleSelectParser(final SQLExprParser exprParser) { + public OracleSelectParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleUpdateParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleUpdateParser.java index 1952569ed8b2b2594aae2f1d07c6c2777575a033..36f7c542de2f8930a1dc27ea1e536d7507adaa4c 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleUpdateParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleUpdateParser.java @@ -18,12 +18,12 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.lexer.OracleKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractUpdateParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.update.AbstractUpdateParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; public class OracleUpdateParser extends AbstractUpdateParser { - public OracleUpdateParser(final SQLExprParser exprParser) { + public OracleUpdateParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLDeleteParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLDeleteParser.java index 6bf83cf63cdda03174ebc5cc142b52d1979c4d9b..757024713926e375bc6651b4746f627f51d5d0bb 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLDeleteParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLDeleteParser.java @@ -19,8 +19,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.lexer.PostgreSQLKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractDeleteParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.delete.AbstractDeleteParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * PostgreSQL Delete语句解析器. @@ -29,7 +29,7 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; */ public final class PostgreSQLDeleteParser extends AbstractDeleteParser { - public PostgreSQLDeleteParser(final SQLExprParser exprParser) { + public PostgreSQLDeleteParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLInsertParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLInsertParser.java index 1b81d538195f7ffbfa4cda7047ba97e08bf48bbc..0329f734893171d7f37ee82eeb8cf54cc68fd879 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLInsertParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLInsertParser.java @@ -17,8 +17,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractInsertParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.insert.AbstractInsertParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import java.util.List; @@ -30,7 +30,7 @@ import java.util.List; */ public final class PostgreSQLInsertParser extends AbstractInsertParser { - public PostgreSQLInsertParser(final ShardingRule shardingRule, final List parameters, final SQLExprParser exprParser) { + public PostgreSQLInsertParser(final ShardingRule shardingRule, final List parameters, final SQLParser exprParser) { super(shardingRule, parameters, exprParser); } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLExprParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLParser.java similarity index 74% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLExprParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLParser.java index bdc4f0b212c637d09515984096cee5ce2cf832a5..2e5eae4b7e18554fe76538f2510dc29c6f6da173 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLExprParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLParser.java @@ -18,15 +18,15 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.lexer.PostgreSQLLexer; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import java.util.List; -public class PostgreSQLExprParser extends SQLExprParser { +public class PostgreSQLParser extends SQLParser { - public PostgreSQLExprParser(final ShardingRule shardingRule, final List parameters, final String sql) { - super(shardingRule, parameters, new PostgreSQLLexer(sql)); + public PostgreSQLParser(final String sql, final ShardingRule shardingRule, final List parameters) { + super(new PostgreSQLLexer(sql), shardingRule, parameters); getLexer().nextToken(); } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLSelectParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLSelectParser.java index ff97ba87280a6f4cd59f0acc49901eae59bc8dc8..049f0afe084792dc19a59b7753bb7e4677d1f516 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLSelectParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLSelectParser.java @@ -22,14 +22,14 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.expr.SQLIdentifierExpr; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Literals; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractSelectParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.select.AbstractSelectParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserException; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; public class PostgreSQLSelectParser extends AbstractSelectParser { - public PostgreSQLSelectParser(final SQLExprParser exprParser) { + public PostgreSQLSelectParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLUpdateParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLUpdateParser.java index 38026d213344a8cc7037fe4d20614f9a2f4142c5..625e3787791f8764826972361c55c04c359da818 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLUpdateParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/postgresql/parser/PostgreSQLUpdateParser.java @@ -18,8 +18,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.lexer.PostgreSQLKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractUpdateParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.update.AbstractUpdateParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * PostgreSQL Update语句解析器. @@ -28,7 +28,7 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; */ public final class PostgreSQLUpdateParser extends AbstractUpdateParser { - public PostgreSQLUpdateParser(final SQLExprParser exprParser) { + public PostgreSQLUpdateParser(final SQLParser exprParser) { super(exprParser); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerDeleteParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerDeleteParser.java index 346e09f0950192c15bd35cb8daa8abf14191be82..ace644fd426ce9aeffbd7c6d42fc8dcd43273b6f 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerDeleteParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerDeleteParser.java @@ -18,8 +18,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractDeleteParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.delete.AbstractDeleteParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * SQLServer Delete语句解析器. @@ -28,14 +28,14 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; */ public final class SQLServerDeleteParser extends AbstractDeleteParser { - public SQLServerDeleteParser(final SQLExprParser exprParser) { + public SQLServerDeleteParser(final SQLParser exprParser) { super(exprParser); } @Override protected void skipBetweenDeleteAndTable() { - ((SQLServerExprParser) getExprParser()).parseTop(); - ((SQLServerExprParser) getExprParser()).skipOutput(); + ((SQLServerParser) getExprParser()).parseTop(); + ((SQLServerParser) getExprParser()).skipOutput(); getExprParser().skipIfEqual(DefaultKeyword.FROM); } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerInsertParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerInsertParser.java index 939668afdc9a86a3eccad4c6d223adbe8e22296c..60ec3bd1b8535c4d2960e7758cfc9b2e88bae54f 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerInsertParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerInsertParser.java @@ -17,8 +17,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractInsertParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.insert.AbstractInsertParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import java.util.List; @@ -30,7 +30,7 @@ import java.util.List; */ public final class SQLServerInsertParser extends AbstractInsertParser { - public SQLServerInsertParser(final ShardingRule shardingRule, final List parameters, final SQLExprParser exprParser) { + public SQLServerInsertParser(final ShardingRule shardingRule, final List parameters, final SQLParser exprParser) { super(shardingRule, parameters, exprParser); } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerExprParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerParser.java similarity index 93% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerExprParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerParser.java index b438b4e7e9e081e419df5e458f7be0f48c5aff2b..fc99e58cba147355bbdfd9013e5fa8fc603449b9 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerExprParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerParser.java @@ -27,15 +27,15 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserException; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import java.util.List; -public class SQLServerExprParser extends SQLExprParser { +public class SQLServerParser extends SQLParser { - public SQLServerExprParser(final ShardingRule shardingRule, final List parameters, final String sql) { - super(shardingRule, parameters, new SQLServerLexer(sql)); + public SQLServerParser(final String sql, final ShardingRule shardingRule, final List parameters) { + super(new SQLServerLexer(sql), shardingRule, parameters); getLexer().nextToken(); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerSelectParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerSelectParser.java index 98c53b253fab42f98fd971359b3f1971c4ab2e70..be924af2242397f617b97cf8d992542107c995c0 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerSelectParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerSelectParser.java @@ -20,13 +20,13 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.lexer.SQLServerKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractSelectParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.select.AbstractSelectParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; public class SQLServerSelectParser extends AbstractSelectParser { - public SQLServerSelectParser(final SQLExprParser exprParser) { + public SQLServerSelectParser(final SQLParser exprParser) { super(exprParser); } @@ -36,7 +36,7 @@ public class SQLServerSelectParser extends AbstractSelectParser { parseFor(); } if (getExprParser().equalAny(SQLServerKeyword.OFFSET)) { - ((SQLServerExprParser) getExprParser()).parseOffset(getSqlContext()); + ((SQLServerParser) getExprParser()).parseOffset(getSqlContext()); } } @@ -46,7 +46,7 @@ public class SQLServerSelectParser extends AbstractSelectParser { parseDistinct(); if (getExprParser().equalAny(SQLServerKeyword.TOP)) { // TODO save topContext - ((SQLServerExprParser) getExprParser()).parseTop(); + ((SQLServerParser) getExprParser()).parseTop(); } parseSelectList(); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerUpdateParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerUpdateParser.java index 6c2b1ae5d62d3fa17a556a163b742fa229c967a7..a5ad615b5612eabce20f190b39249c869d4fce21 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerUpdateParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerUpdateParser.java @@ -17,8 +17,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.AbstractUpdateParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.update.AbstractUpdateParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * SQLServer Update语句解析器. @@ -27,12 +27,12 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLExprParser; */ public final class SQLServerUpdateParser extends AbstractUpdateParser { - public SQLServerUpdateParser(final SQLExprParser exprParser) { + public SQLServerUpdateParser(final SQLParser exprParser) { super(exprParser); } @Override protected void skipBetweenUpdateAndTable() { - ((SQLServerExprParser) getExprParser()).parseTop(); + ((SQLServerParser) getExprParser()).parseTop(); } } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLExprParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLParser.java similarity index 97% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLExprParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLParser.java index 1b63dd97b05652d18dbec628510abe4b5d2221a5..29beac46f704a415359fdc59c0f88d219a7e3e61 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLExprParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLParser.java @@ -58,7 +58,7 @@ import java.util.List; * * @author zhangliang */ -public class SQLExprParser extends Parser { +public class SQLParser extends Parser { @Getter private final ShardingRule shardingRule; @@ -70,16 +70,15 @@ public class SQLExprParser extends Parser { @Setter private int parametersIndex; - public SQLExprParser(final ShardingRule shardingRule, final List parameters, final Lexer lexer) { + public SQLParser(final Lexer lexer, final ShardingRule shardingRule, final List parameters) { super(lexer); this.shardingRule = shardingRule; this.parameters = parameters; } - protected Optional as() { + public Optional as() { if (skipIfEqual(DefaultKeyword.AS)) { - // TODO 判断Literals是符号则返回null, 目前仅判断为LEFT_PAREN - if (equalAny(Symbol.LEFT_PAREN)) { + if (equalAny(Symbol.values())) { return Optional.absent(); } String result = SQLUtil.getExactlyValue(getLexer().getCurrentToken().getLiterals()); @@ -138,7 +137,7 @@ public class SQLExprParser extends Parser { return null; } - protected final void parseSingleTable(final SQLContext sqlContext) { + public final void parseSingleTable(final SQLContext sqlContext) { boolean hasParentheses = false; if (skipIfEqual(Symbol.LEFT_PAREN)) { if (equalAny(DefaultKeyword.SELECT)) { diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLStatementParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLStatementParser.java index 1201850986730d97f87f22a47c4dc26f8d91a3b5..aba67c28e9b148a01043b920641a423d6cff3f45 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLStatementParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLStatementParser.java @@ -22,6 +22,10 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.delete.SQLDeleteParserFactory; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.insert.SQLInsertParserFactory; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.select.SQLSelectParserFactory; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.update.SQLUpdateParserFactory; import java.util.List; @@ -38,9 +42,9 @@ public final class SQLStatementParser { private final List parameters; - private final SQLExprParser exprParser; + private final SQLParser exprParser; - public SQLStatementParser(final DatabaseType dbType, final ShardingRule shardingRule, final List parameters, final SQLExprParser exprParser) { + public SQLStatementParser(final DatabaseType dbType, final ShardingRule shardingRule, final List parameters, final SQLParser exprParser) { this.dbType = dbType; this.shardingRule = shardingRule; this.parameters = parameters; diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractDeleteParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/delete/AbstractDeleteParser.java similarity index 89% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractDeleteParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/delete/AbstractDeleteParser.java index 9df423351d132107e68bacbed9250c66104ceb3a..a2435528ee3d5fdf6fc2c14d4a216fb47db9cc59 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractDeleteParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/delete/AbstractDeleteParser.java @@ -15,11 +15,12 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.delete; import com.dangdang.ddframe.rdb.sharding.parser.sql.context.DeleteSQLContext; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.result.router.ConditionContext; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.google.common.base.Optional; import lombok.AccessLevel; import lombok.Getter; @@ -34,11 +35,11 @@ import lombok.RequiredArgsConstructor; public abstract class AbstractDeleteParser { @Getter(AccessLevel.PROTECTED) - private final SQLExprParser exprParser; + private final SQLParser exprParser; private final DeleteSQLContext sqlContext; - public AbstractDeleteParser(final SQLExprParser exprParser) { + public AbstractDeleteParser(final SQLParser exprParser) { this.exprParser = exprParser; sqlContext = new DeleteSQLContext(exprParser.getLexer().getInput()); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLDeleteParserFactory.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/delete/SQLDeleteParserFactory.java similarity index 88% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLDeleteParserFactory.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/delete/SQLDeleteParserFactory.java index 2182ac0934690dcbed83b08ca8529e79444c426a..4732bc487ea80e584d072946234566c9c8d8dfe0 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLDeleteParserFactory.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/delete/SQLDeleteParserFactory.java @@ -15,13 +15,14 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.delete; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLDeleteParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleDeleteParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.PostgreSQLDeleteParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerDeleteParser; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * Delete语句解析器工厂. @@ -37,7 +38,7 @@ public class SQLDeleteParserFactory { * @param dbType 数据库类型 * @return Delete语句解析器 */ - public static AbstractDeleteParser newInstance(final SQLExprParser exprParser, final DatabaseType dbType) { + public static AbstractDeleteParser newInstance(final SQLParser exprParser, final DatabaseType dbType) { switch (dbType) { case H2 : case MySQL : diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractInsertParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/insert/AbstractInsertParser.java similarity index 96% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractInsertParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/insert/AbstractInsertParser.java index 1be5d366573fd17db592e215c8c34581f91ba402..f8d0950d470e1e2af4cde2a88f63b69286ae78ea 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractInsertParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/insert/AbstractInsertParser.java @@ -15,7 +15,7 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.insert; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.parser.result.router.Condition; @@ -29,6 +29,8 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Assist; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.TokenType; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.parser.visitor.ParseContext; import com.dangdang.ddframe.rdb.sharding.util.SQLUtil; import com.google.common.collect.Sets; @@ -49,7 +51,7 @@ import java.util.Set; @Getter(AccessLevel.PROTECTED) public abstract class AbstractInsertParser { - private final SQLExprParser exprParser; + private final SQLParser exprParser; private final ShardingRule shardingRule; @@ -57,7 +59,7 @@ public abstract class AbstractInsertParser { private final InsertSQLContext sqlContext; - public AbstractInsertParser(final ShardingRule shardingRule, final List parameters, final SQLExprParser exprParser) { + public AbstractInsertParser(final ShardingRule shardingRule, final List parameters, final SQLParser exprParser) { this.exprParser = exprParser; this.shardingRule = shardingRule; this.parameters = parameters; diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLInsertParserFactory.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/insert/SQLInsertParserFactory.java similarity index 90% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLInsertParserFactory.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/insert/SQLInsertParserFactory.java index e7c62d0b7dc7dfe8d8de87437e01f241db63e66f..392a14ac66952d160b46923662b4c43fac1ccb61 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLInsertParserFactory.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/insert/SQLInsertParserFactory.java @@ -15,7 +15,7 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.insert; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLInsertParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleInsertParser; @@ -23,6 +23,7 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.Po import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerInsertParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import java.util.List; @@ -42,7 +43,7 @@ public class SQLInsertParserFactory { * @param dbType 数据库类型 * @return Insert语句解析器 */ - public static AbstractInsertParser newInstance(final ShardingRule shardingRule, final List parameters, final SQLExprParser exprParser, final DatabaseType dbType) { + public static AbstractInsertParser newInstance(final ShardingRule shardingRule, final List parameters, final SQLParser exprParser, final DatabaseType dbType) { switch (dbType) { case H2 : case MySQL : diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractSelectParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/select/AbstractSelectParser.java similarity index 96% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractSelectParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/select/AbstractSelectParser.java index 77bffb77af10cf582faf1304dcf1a783035945b7..1c16b28a9a08878534de49526722d77c1b97098f 100755 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractSelectParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/select/AbstractSelectParser.java @@ -15,7 +15,7 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.select; import com.dangdang.ddframe.rdb.sharding.parser.result.merger.OrderByColumn; import com.dangdang.ddframe.rdb.sharding.parser.result.router.ConditionContext; @@ -30,6 +30,8 @@ import com.dangdang.ddframe.rdb.sharding.parser.sql.expr.SQLIdentifierExpr; import com.dangdang.ddframe.rdb.sharding.parser.sql.expr.SQLPropertyExpr; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.ParserUnsupportedException; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.util.SQLUtil; import com.google.common.base.Optional; import lombok.AccessLevel; @@ -41,14 +43,14 @@ import java.util.List; @Getter(AccessLevel.PROTECTED) public abstract class AbstractSelectParser { - private SQLExprParser exprParser; + private SQLParser exprParser; private final SelectSQLContext sqlContext; @Setter private int parametersIndex; - public AbstractSelectParser(final SQLExprParser exprParser) { + public AbstractSelectParser(final SQLParser exprParser) { this.exprParser = exprParser; sqlContext = new SelectSQLContext(getExprParser().getLexer().getInput()); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLSelectParserFactory.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/select/SQLSelectParserFactory.java similarity index 88% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLSelectParserFactory.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/select/SQLSelectParserFactory.java index 1a9740d05319742f3d04fd903acb9f87815d0777..5cfebeef6f1d12a269d0ee764a003a20fdc2b87a 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLSelectParserFactory.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/select/SQLSelectParserFactory.java @@ -15,13 +15,14 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.select; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLSelectParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleSelectParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.PostgreSQLSelectParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerSelectParser; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * Select语句解析器工厂. @@ -37,7 +38,7 @@ public class SQLSelectParserFactory { * @param dbType 数据库类型 * @return Select语句解析器 */ - public static AbstractSelectParser newInstance(final SQLExprParser exprParser, final DatabaseType dbType) { + public static AbstractSelectParser newInstance(final SQLParser exprParser, final DatabaseType dbType) { switch (dbType) { case H2 : case MySQL : diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractUpdateParser.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/update/AbstractUpdateParser.java similarity index 93% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractUpdateParser.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/update/AbstractUpdateParser.java index 7e62ad17275cae5b267df2cef7991c43174af13d..7d5b4bcf7dc33b7895c17b840ee1a2ecb9c99585 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractUpdateParser.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/update/AbstractUpdateParser.java @@ -15,13 +15,14 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.update; import com.dangdang.ddframe.rdb.sharding.parser.sql.context.TableToken; import com.dangdang.ddframe.rdb.sharding.parser.sql.context.UpdateSQLContext; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.DefaultKeyword; import com.dangdang.ddframe.rdb.sharding.parser.sql.lexer.token.Symbol; import com.dangdang.ddframe.rdb.sharding.parser.result.router.ConditionContext; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; import com.dangdang.ddframe.rdb.sharding.util.SQLUtil; import com.google.common.base.Optional; import lombok.AccessLevel; @@ -35,13 +36,13 @@ import lombok.Getter; @Getter(AccessLevel.PROTECTED) public abstract class AbstractUpdateParser { - private final SQLExprParser exprParser; + private final SQLParser exprParser; private final UpdateSQLContext sqlContext; private int parametersIndex; - public AbstractUpdateParser(final SQLExprParser exprParser) { + public AbstractUpdateParser(final SQLParser exprParser) { this.exprParser = exprParser; sqlContext = new UpdateSQLContext(exprParser.getLexer().getInput()); } diff --git a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLUpdateParserFactory.java b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/update/SQLUpdateParserFactory.java similarity index 88% rename from sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLUpdateParserFactory.java rename to sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/update/SQLUpdateParserFactory.java index 6fec19093bf1de3d11accd9691a8635f0d6df646..68453383dbe3eded55ba4436b5b97575aa9e99bf 100644 --- a/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLUpdateParserFactory.java +++ b/sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/update/SQLUpdateParserFactory.java @@ -15,13 +15,14 @@ *

*/ -package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; +package com.dangdang.ddframe.rdb.sharding.parser.sql.parser.update; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLUpdateParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleUpdateParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.PostgreSQLUpdateParser; import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerUpdateParser; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; +import com.dangdang.ddframe.rdb.sharding.parser.sql.parser.SQLParser; /** * Update语句解析器工厂. @@ -37,7 +38,7 @@ public class SQLUpdateParserFactory { * @param dbType 数据库类型 * @return Update语句解析器 */ - public static AbstractUpdateParser newInstance(final SQLExprParser exprParser, final DatabaseType dbType) { + public static AbstractUpdateParser newInstance(final SQLParser exprParser, final DatabaseType dbType) { switch (dbType) { case H2 : case MySQL : diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractStatementParserTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractStatementParserTest.java index b769aca4672c41b96e2797921da77a060cf4e0e8..2a447ec4e098d9301076357cde7cf0eae533e2a9 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractStatementParserTest.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractStatementParserTest.java @@ -17,10 +17,10 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.PostgreSQLExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.postgresql.parser.PostgreSQLParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.sqlserver.parser.SQLServerParser; import com.dangdang.ddframe.rdb.sharding.api.rule.DataSourceRule; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.api.rule.TableRule; @@ -46,25 +46,25 @@ public abstract class AbstractStatementParserTest { protected final SQLStatementParser getSqlStatementParser(final DatabaseType dbType, final String actualSQL) { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - SQLExprParser sqlExprParser; + SQLParser sqlParser; switch (dbType) { case H2: case MySQL: - sqlExprParser = new MySQLExprParser(shardingRule, parameters, actualSQL); + sqlParser = new MySQLParser(actualSQL, shardingRule, parameters); break; case Oracle: - sqlExprParser = new OracleExprParser(shardingRule, parameters, actualSQL); + sqlParser = new OracleParser(actualSQL, shardingRule, parameters); break; case SQLServer: - sqlExprParser = new SQLServerExprParser(shardingRule, parameters, actualSQL); + sqlParser = new SQLServerParser(actualSQL, shardingRule, parameters); break; case PostgreSQL: - sqlExprParser = new PostgreSQLExprParser(shardingRule, parameters, actualSQL); + sqlParser = new PostgreSQLParser(actualSQL, shardingRule, parameters); break; default: throw new UnsupportedOperationException(dbType.name()); } - return new SQLStatementParser(dbType, shardingRule, parameters, sqlExprParser); + return new SQLStatementParser(dbType, shardingRule, parameters, sqlParser); } protected final ShardingRule createShardingRule() { diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/DeleteStatementParserTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/DeleteStatementParserTest.java index a57ed64c07a3d0bbbfa2e4d7d29b79f30b29f07c..f3580ea82aa6f48b3f9bf235908631a79ec12afb 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/DeleteStatementParserTest.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/DeleteStatementParserTest.java @@ -18,7 +18,7 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.context.DeleteSQLContext; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; import com.dangdang.ddframe.rdb.sharding.parser.result.router.Condition; @@ -41,7 +41,7 @@ public final class DeleteStatementParserTest extends AbstractStatementParserTest public void parseWithoutCondition() throws SQLException { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, "DELETE FROM TABLE_XXX")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser("DELETE FROM TABLE_XXX", shardingRule, parameters)); DeleteSQLContext sqlContext = (DeleteSQLContext) statementParser.parseStatement(); assertThat(sqlContext.getTables().get(0).getName(), is("TABLE_XXX")); assertTrue(sqlContext.getConditionContexts().isEmpty()); @@ -52,8 +52,9 @@ public final class DeleteStatementParserTest extends AbstractStatementParserTest public void parseWithoutParameter() throws SQLException { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "DELETE FROM TABLE_XXX xxx WHERE field4<10 AND TABLE_XXX.field1=1 AND field5>10 AND xxx.field2 IN (1,3) AND field6<=10 AND field3 BETWEEN 5 AND 20 AND field7>=10")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( + "DELETE FROM TABLE_XXX xxx WHERE field4<10 AND TABLE_XXX.field1=1 AND field5>10 AND xxx.field2 IN (1,3) AND field6<=10 AND field3 BETWEEN 5 AND 20 AND field7>=10", + shardingRule, parameters)); DeleteSQLContext sqlContext = (DeleteSQLContext) statementParser.parseStatement(); assertDeleteStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is( @@ -64,8 +65,8 @@ public final class DeleteStatementParserTest extends AbstractStatementParserTest public void parseWithParameter() throws SQLException { ShardingRule shardingRule = createShardingRule(); List parameters = Arrays.asList(10, 1, 10, 1, 3, 10, 5, 20, 10); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "DELETE FROM TABLE_XXX xxx WHERE field4? AND field2 IN (?,?) AND field6<=? AND field3 BETWEEN ? AND ? AND field7>=?")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( + "DELETE FROM TABLE_XXX xxx WHERE field4? AND field2 IN (?,?) AND field6<=? AND field3 BETWEEN ? AND ? AND field7>=?", shardingRule, parameters)); DeleteSQLContext sqlContext = (DeleteSQLContext) statementParser.parseStatement(); assertDeleteStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is( @@ -103,7 +104,7 @@ public final class DeleteStatementParserTest extends AbstractStatementParserTest public void parseStatementWithDeleteMultipleTable() { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, "DELETE TABLE_XXX1, TABLE_xxx2 FROM TABLE_XXX1 JOIN TABLE_XXX2")) + new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser("DELETE TABLE_XXX1, TABLE_xxx2 FROM TABLE_XXX1 JOIN TABLE_XXX2", shardingRule, parameters)) .parseStatement(); } @@ -111,7 +112,7 @@ public final class DeleteStatementParserTest extends AbstractStatementParserTest public void parseStatementWithDeleteMultipleTableWithUsing() { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, "DELETE FROM TABLE_XXX1, TABLE_xxx2 USING TABLE_XXX1 JOIN TABLE_XXX2")) + new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser("DELETE FROM TABLE_XXX1, TABLE_xxx2 USING TABLE_XXX1 JOIN TABLE_XXX2", shardingRule, parameters)) .parseStatement(); } diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/InsertStatementParserTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/InsertStatementParserTest.java index 6b035eae1c23e04885ae371d78ee5461a505c77f..5aee6a5aac13141bea30ae341f3c168763e35477 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/InsertStatementParserTest.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/InsertStatementParserTest.java @@ -18,8 +18,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.context.InsertSQLContext; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleParser; import com.dangdang.ddframe.rdb.sharding.api.rule.DataSourceRule; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.api.rule.TableRule; @@ -54,8 +54,8 @@ public final class InsertStatementParserTest extends AbstractStatementParserTest public void parseWithoutParameter() throws SQLException { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "INSERT INTO `TABLE_XXX` (`field1`, `field2`) VALUES (10, 1)")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( + "INSERT INTO `TABLE_XXX` (`field1`, `field2`) VALUES (10, 1)", shardingRule, parameters)); InsertSQLContext sqlContext = (InsertSQLContext) statementParser.parseStatement(); assertInsertStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is("INSERT INTO [Token(TABLE_XXX)] (`field1`, `field2`) VALUES (10, 1)")); @@ -65,8 +65,8 @@ public final class InsertStatementParserTest extends AbstractStatementParserTest public void parseWithParameter() { ShardingRule shardingRule = createShardingRule(); List parameters = Lists.newArrayList(10, 1); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "INSERT INTO TABLE_XXX (field1, field2) VALUES (?, ?)")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( + "INSERT INTO TABLE_XXX (field1, field2) VALUES (?, ?)", shardingRule, parameters)); InsertSQLContext sqlContext = (InsertSQLContext) statementParser.parseStatement(); assertInsertStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is("INSERT INTO [Token(TABLE_XXX)] (field1, field2) VALUES (?, ?)")); @@ -76,8 +76,8 @@ public final class InsertStatementParserTest extends AbstractStatementParserTest public void parseWithAutoIncrementColumnsWithoutParameter() throws SQLException { ShardingRule shardingRule = createShardingRuleWithAutoIncrementColumns(); List parameters = Collections.emptyList(); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "INSERT INTO `TABLE_XXX` (`field1`) VALUES (10)")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( + "INSERT INTO `TABLE_XXX` (`field1`) VALUES (10)", shardingRule, parameters)); InsertSQLContext sqlContext = (InsertSQLContext) statementParser.parseStatement(); assertInsertStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is("INSERT INTO [Token(TABLE_XXX)] (`field1`, field2) VALUES (10, 1)")); @@ -87,8 +87,8 @@ public final class InsertStatementParserTest extends AbstractStatementParserTest public void parseWithAutoIncrementColumnsWithParameter() throws SQLException { ShardingRule shardingRule = createShardingRuleWithAutoIncrementColumns(); List parameters = Lists.newArrayList(10); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "INSERT INTO `TABLE_XXX` (`field1`) VALUES (?)")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( + "INSERT INTO `TABLE_XXX` (`field1`) VALUES (?)", shardingRule, parameters)); InsertSQLContext sqlContext = (InsertSQLContext) statementParser.parseStatement(); assertInsertStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is("INSERT INTO [Token(TABLE_XXX)] (`field1`, field2) VALUES (?, ?)")); @@ -175,23 +175,23 @@ public final class InsertStatementParserTest extends AbstractStatementParserTest public void parseMultipleInsertForMySQL() { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleExprParser(shardingRule, parameters, - "INSERT INTO TABLE_XXX (`field1`, `field2`) VALUES (1, 'value_char'), (2, 'value_char')")).parseStatement(); + new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleParser( + "INSERT INTO TABLE_XXX (`field1`, `field2`) VALUES (1, 'value_char'), (2, 'value_char')", shardingRule, parameters)).parseStatement(); } @Test(expected = ParserUnsupportedException.class) public void parseInsertAllForOracle() { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleExprParser(shardingRule, parameters, - "INSERT ALL INTO TABLE_XXX (field1) VALUES (field1) SELECT field1 FROM TABLE_XXX2")).parseStatement(); + new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleParser( + "INSERT ALL INTO TABLE_XXX (field1) VALUES (field1) SELECT field1 FROM TABLE_XXX2", shardingRule, parameters)).parseStatement(); } @Test(expected = ParserUnsupportedException.class) public void parseInsertFirstForOracle() { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleExprParser(shardingRule, parameters, - "INSERT FIRST INTO TABLE_XXX (field1) VALUES (field1) SELECT field1 FROM TABLE_XXX2")).parseStatement(); + new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleParser( + "INSERT FIRST INTO TABLE_XXX (field1) VALUES (field1) SELECT field1 FROM TABLE_XXX2", shardingRule, parameters)).parseStatement(); } } diff --git a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/UpdateStatementParserTest.java b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/UpdateStatementParserTest.java index c99c907f4e64f5e9cd2d4f7f5fc9ee7d1701a944..5fa5b3a9faa2adb5305e1bdb28b7f19bb7059338 100644 --- a/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/UpdateStatementParserTest.java +++ b/sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/UpdateStatementParserTest.java @@ -18,8 +18,8 @@ package com.dangdang.ddframe.rdb.sharding.parser.sql.parser; import com.dangdang.ddframe.rdb.sharding.parser.sql.context.UpdateSQLContext; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLExprParser; -import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleExprParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.mysql.parser.MySQLParser; +import com.dangdang.ddframe.rdb.sharding.parser.sql.dialect.oracle.parser.OracleParser; import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule; import com.dangdang.ddframe.rdb.sharding.constants.DatabaseType; import com.dangdang.ddframe.rdb.sharding.parser.result.router.Condition; @@ -42,8 +42,7 @@ public final class UpdateStatementParserTest extends AbstractStatementParserTest public void parseWithoutCondition() throws SQLException { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "UPDATE TABLE_XXX SET field1=field1+1")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser("UPDATE TABLE_XXX SET field1=field1+1", shardingRule, parameters)); UpdateSQLContext sqlContext = (UpdateSQLContext) statementParser.parseStatement(); assertThat(sqlContext.getTables().get(0).getName(), is("TABLE_XXX")); assertTrue(sqlContext.getConditionContexts().isEmpty()); @@ -54,9 +53,10 @@ public final class UpdateStatementParserTest extends AbstractStatementParserTest public void parseWithoutParameter() { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( "UPDATE TABLE_XXX xxx SET TABLE_XXX.field1=field1+1,xxx.field2=2 WHERE " - + "TABLE_XXX.field4<10 AND TABLE_XXX.field1=1 AND xxx.field5>10 AND TABLE_XXX.field2 IN (1,3) AND xxx.field6<=10 AND TABLE_XXX.field3 BETWEEN 5 AND 20 AND xxx.field7>=10")); + + "TABLE_XXX.field4<10 AND TABLE_XXX.field1=1 AND xxx.field5>10 AND TABLE_XXX.field2 IN (1,3) AND xxx.field6<=10 AND TABLE_XXX.field3 BETWEEN 5 AND 20 AND xxx.field7>=10", + shardingRule, parameters)); UpdateSQLContext sqlContext = (UpdateSQLContext) statementParser.parseStatement(); assertUpdateStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is("UPDATE [Token(TABLE_XXX)] xxx SET [Token(TABLE_XXX)].field1=field1+1,xxx.field2=2 WHERE [Token(TABLE_XXX)].field4<10 " @@ -67,8 +67,9 @@ public final class UpdateStatementParserTest extends AbstractStatementParserTest public void parseWithParameter() { ShardingRule shardingRule = createShardingRule(); List parameters = Arrays.asList(2, 10, 1, 10, 1, 3, 10, 5, 20, 10); - SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLExprParser(shardingRule, parameters, - "UPDATE TABLE_XXX AS xxx SET field1=field1+? WHERE field4? AND xxx.field2 IN (?, ?) AND field6<=? AND xxx.field3 BETWEEN ? AND ? AND field7>=?")); + SQLStatementParser statementParser = new SQLStatementParser(DatabaseType.MySQL, shardingRule, parameters, new MySQLParser( + "UPDATE TABLE_XXX AS xxx SET field1=field1+? WHERE field4? AND xxx.field2 IN (?, ?) AND field6<=? AND xxx.field3 BETWEEN ? AND ? AND field7>=?", + shardingRule, parameters)); UpdateSQLContext sqlContext = (UpdateSQLContext) statementParser.parseStatement(); assertUpdateStatement(sqlContext); assertThat(sqlContext.toSqlBuilder().toString(), is("UPDATE [Token(TABLE_XXX)] AS xxx SET field1=field1+? " @@ -106,8 +107,8 @@ public final class UpdateStatementParserTest extends AbstractStatementParserTest public void parseWithOr() { ShardingRule shardingRule = createShardingRule(); List parameters = Collections.emptyList(); - new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleExprParser(shardingRule, parameters, - "UPDATE TABLE_XXX SET field1=1 WHERE field1<1 AND (field1 >2 OR field2 =1)")).parseStatement(); + new SQLStatementParser(DatabaseType.Oracle, shardingRule, parameters, new OracleParser("UPDATE TABLE_XXX SET field1=1 WHERE field1<1 AND (field1 >2 OR field2 =1)", + shardingRule, parameters)).parseStatement(); } @Test