bug修复及设计增强:相应ExportParameterVisitor实现类扩展相应的ParameterizedOutputVisitor实现类,以修正ExportParameterVisitor现有实现的功能bug并减少重复代码

This commit is contained in:
qxo
2016-05-31 19:42:43 +08:00
parent f8987afaec
commit 178de15fac
10 changed files with 392 additions and 32 deletions
@@ -28,39 +28,64 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
import com.alibaba.druid.sql.visitor.ExportParameterVisitor;
import com.alibaba.druid.sql.visitor.ExportParameterVisitorUtils;
public class PGExportParameterVisitor extends PGASTVisitorAdapter implements ExportParameterVisitor {
public class PGExportParameterVisitor extends PGParameterizedOutputVisitor implements ExportParameterVisitor {
private final List<Object> parameters;
/**
* true= if require parameterized sql output
*/
private final boolean requireParameterizedOutput;
public PGExportParameterVisitor(final List<Object> parameters,final Appendable appender,final boolean wantParameterizedOutput){
super(appender);
this.parameters = parameters;
this.requireParameterizedOutput = wantParameterizedOutput;
}
public PGExportParameterVisitor() {
this(new ArrayList<Object>());
}
public PGExportParameterVisitor(List<Object> parameters){
this.parameters = parameters;
public PGExportParameterVisitor(final List<Object> parameters){
this(parameters,new StringBuilder(),false);
}
public PGExportParameterVisitor(final Appendable appender) {
this(new ArrayList<Object>(),appender,true);
}
public List<Object> getParameters() {
return parameters;
}
@Override
public boolean visit(SQLSelectItem x) {
if(requireParameterizedOutput){
return super.visit(x);
}
return false;
}
@Override
public boolean visit(SQLOrderBy x) {
if(requireParameterizedOutput){
return super.visit(x);
}
return false;
}
@Override
public boolean visit(SQLSelectGroupByClause x) {
if(requireParameterizedOutput){
return super.visit(x);
}
return false;
}
@Override
public boolean visit(SQLMethodInvokeExpr x) {
if(requireParameterizedOutput){
return super.visit(x);
}
ExportParameterVisitorUtils.exportParamterAndAccept(this.parameters, x.getParameters());
return true;
@@ -68,6 +93,9 @@ public class PGExportParameterVisitor extends PGASTVisitorAdapter implements Exp
@Override
public boolean visit(SQLInListExpr x) {
if(requireParameterizedOutput){
return super.visit(x);
}
ExportParameterVisitorUtils.exportParamterAndAccept(this.parameters, x.getTargetList());
return true;
@@ -75,11 +103,17 @@ public class PGExportParameterVisitor extends PGASTVisitorAdapter implements Exp
@Override
public boolean visit(SQLBetweenExpr x) {
if(requireParameterizedOutput){
return super.visit(x);
}
ExportParameterVisitorUtils.exportParameter(this.parameters, x);
return true;
}
public boolean visit(SQLBinaryOpExpr x) {
if(requireParameterizedOutput){
return super.visit(x);
}
ExportParameterVisitorUtils.exportParameter(this.parameters, x);
return true;
}