提交 ef64502d 编写于 作者: T terrymanu

refactor parsing 7th version

上级 7b220ff6
......@@ -7,3 +7,4 @@ before_script:
- echo "MAVEN_OPTS='-Xmx1024m -XX:MaxPermSize=256m'" > ~/.mavenrc
after_success:
- mvn clean cobertura:cobertura coveralls:report
dist: precise
......@@ -68,20 +68,28 @@ public abstract class AbstractUpdateParser implements SQLStatementParser {
}
private void parseSetItem() {
parseSetColumn();
sqlParser.skipIfEqual(Symbol.EQ, Symbol.COLON_EQ);
parseSetValue();
}
private void parseSetColumn() {
if (sqlParser.equalAny(Symbol.LEFT_PAREN)) {
sqlParser.skipParentheses();
} else {
int beginPosition = sqlParser.getLexer().getCurrentToken().getEndPosition();
String literals = sqlParser.getLexer().getCurrentToken().getLiterals();
sqlParser.getLexer().nextToken();
if (sqlParser.skipIfEqual(Symbol.DOT)) {
if (updateStatement.getTables().getSingleTableName().equalsIgnoreCase(SQLUtil.getExactlyValue(literals))) {
updateStatement.getSqlTokens().add(new TableToken(beginPosition - literals.length(), literals));
}
sqlParser.getLexer().nextToken();
return;
}
int beginPosition = sqlParser.getLexer().getCurrentToken().getEndPosition();
String literals = sqlParser.getLexer().getCurrentToken().getLiterals();
sqlParser.getLexer().nextToken();
if (sqlParser.skipIfEqual(Symbol.DOT)) {
if (updateStatement.getTables().getSingleTableName().equalsIgnoreCase(SQLUtil.getExactlyValue(literals))) {
updateStatement.getSqlTokens().add(new TableToken(beginPosition - literals.length(), literals));
}
sqlParser.getLexer().nextToken();
}
sqlParser.skipIfEqual(Symbol.EQ, Symbol.COLON_EQ);
}
private void parseSetValue() {
sqlParser.parseExpression(updateStatement);
parametersIndex = sqlParser.getParametersIndex();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册