mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug修复及设计增强:相应ExportParameterVisitor实现类扩展相应的ParameterizedOutputVisitor实现类,以修正ExportParameterVisitor现有实现的功能bug并减少重复代码
This commit is contained in:
+43
-7
@@ -28,58 +28,94 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitor;
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitorUtils;
|
||||
|
||||
public class DB2ExportParameterVisitor extends DB2ASTVisitorAdapter implements ExportParameterVisitor {
|
||||
public class DB2ExportParameterVisitor extends DB2ParameterizedOutputVisitor implements ExportParameterVisitor {
|
||||
|
||||
private final List<Object> parameters;
|
||||
|
||||
public DB2ExportParameterVisitor(){
|
||||
/**
|
||||
* true= if require parameterized sql output
|
||||
*/
|
||||
private final boolean requireParameterizedOutput;
|
||||
|
||||
public DB2ExportParameterVisitor(final List<Object> parameters,final Appendable appender,final boolean wantParameterizedOutput){
|
||||
super(appender);
|
||||
this.parameters = parameters;
|
||||
this.requireParameterizedOutput = wantParameterizedOutput;
|
||||
}
|
||||
|
||||
public DB2ExportParameterVisitor() {
|
||||
this(new ArrayList<Object>());
|
||||
}
|
||||
|
||||
public DB2ExportParameterVisitor(List<Object> parameters){
|
||||
this.parameters = parameters;
|
||||
public DB2ExportParameterVisitor(final List<Object> parameters){
|
||||
this(parameters,new StringBuilder(),false);
|
||||
}
|
||||
|
||||
public DB2ExportParameterVisitor(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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLInListExpr x) {
|
||||
if(requireParameterizedOutput){
|
||||
return super.visit(x);
|
||||
}
|
||||
|
||||
ExportParameterVisitorUtils.exportParamterAndAccept(this.parameters, x.getTargetList());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
+46
-9
@@ -29,51 +29,83 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.L
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitor;
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitorUtils;
|
||||
|
||||
public class MySqlExportParameterVisitor extends MySqlASTVisitorAdapter implements ExportParameterVisitor {
|
||||
public class MySqlExportParameterVisitor extends MySqlParameterizedOutputVisitor implements ExportParameterVisitor {
|
||||
|
||||
/**
|
||||
* true= if require parameterized sql output
|
||||
*/
|
||||
private final boolean requireParameterizedOutput;
|
||||
|
||||
public MySqlExportParameterVisitor(final List<Object> parameters,final Appendable appender,final boolean wantParameterizedOutput){
|
||||
super(appender);
|
||||
this.parameters = parameters;
|
||||
this.requireParameterizedOutput = wantParameterizedOutput;
|
||||
}
|
||||
|
||||
private final List<Object> parameters;
|
||||
|
||||
public MySqlExportParameterVisitor() {
|
||||
this(new ArrayList<Object>());
|
||||
}
|
||||
|
||||
public MySqlExportParameterVisitor(List<Object> parameters){
|
||||
this.parameters = parameters;
|
||||
public MySqlExportParameterVisitor(final List<Object> parameters){
|
||||
this(parameters,new StringBuilder(),false);
|
||||
}
|
||||
|
||||
public MySqlExportParameterVisitor(final Appendable appender) {
|
||||
this(new ArrayList<Object>(),appender,true);
|
||||
}
|
||||
|
||||
public List<Object> getParameters() {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLSelectItem x) {
|
||||
public boolean visit(final SQLSelectItem x) {
|
||||
if(requireParameterizedOutput){
|
||||
return super.visit(x);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(Limit 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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLInListExpr x) {
|
||||
if(requireParameterizedOutput){
|
||||
return super.visit(x);
|
||||
}
|
||||
ExportParameterVisitorUtils.exportParamterAndAccept(this.parameters, x.getTargetList());
|
||||
|
||||
return true;
|
||||
@@ -81,13 +113,18 @@ public class MySqlExportParameterVisitor extends MySqlASTVisitorAdapter implemen
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+38
-5
@@ -28,16 +28,29 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitor;
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitorUtils;
|
||||
|
||||
public class OracleExportParameterVisitor extends OracleASTVisitorAdapter implements ExportParameterVisitor {
|
||||
public class OracleExportParameterVisitor extends OracleParameterizedOutputVisitor implements ExportParameterVisitor {
|
||||
|
||||
private final List<Object> parameters;
|
||||
/**
|
||||
* true= if require parameterized sql output
|
||||
*/
|
||||
private final boolean requireParameterizedOutput;
|
||||
|
||||
public OracleExportParameterVisitor(List<Object> parameters,Appendable appender,final boolean wantParameterizedOutput){
|
||||
super(appender,false);
|
||||
this.parameters = parameters;
|
||||
this.requireParameterizedOutput = wantParameterizedOutput;
|
||||
}
|
||||
|
||||
public OracleExportParameterVisitor() {
|
||||
this(new ArrayList<Object>());
|
||||
}
|
||||
|
||||
public OracleExportParameterVisitor(List<Object> parameters){
|
||||
this.parameters = parameters;
|
||||
this(parameters,new StringBuilder(),true);
|
||||
}
|
||||
|
||||
public OracleExportParameterVisitor(final Appendable appender) {
|
||||
this(new ArrayList<Object>(),appender,true);
|
||||
}
|
||||
|
||||
public List<Object> getParameters() {
|
||||
@@ -46,40 +59,60 @@ public class OracleExportParameterVisitor extends OracleASTVisitorAdapter implem
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLInListExpr x) {
|
||||
if(requireParameterizedOutput){
|
||||
return super.visit(x);
|
||||
}
|
||||
ExportParameterVisitorUtils.exportParamterAndAccept(this.parameters, x.getTargetList());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
+38
-4
@@ -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;
|
||||
}
|
||||
|
||||
+40
-5
@@ -28,39 +28,65 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitor;
|
||||
import com.alibaba.druid.sql.visitor.ExportParameterVisitorUtils;
|
||||
|
||||
public class MSSQLServerExportParameterVisitor extends SQLServerASTVisitorAdapter implements ExportParameterVisitor {
|
||||
public class MSSQLServerExportParameterVisitor extends SQLServerParameterizedOutputVisitor implements ExportParameterVisitor {
|
||||
|
||||
/**
|
||||
* true= if require parameterized sql output
|
||||
*/
|
||||
private final boolean requireParameterizedOutput;
|
||||
|
||||
public MSSQLServerExportParameterVisitor(final List<Object> parameters,final Appendable appender,final boolean wantParameterizedOutput){
|
||||
super(appender);
|
||||
this.parameters = parameters;
|
||||
this.requireParameterizedOutput = wantParameterizedOutput;
|
||||
}
|
||||
|
||||
private final List<Object> parameters;
|
||||
|
||||
public MSSQLServerExportParameterVisitor() {
|
||||
this(new ArrayList<Object>());
|
||||
}
|
||||
|
||||
public MSSQLServerExportParameterVisitor(List<Object> parameters){
|
||||
this.parameters = parameters;
|
||||
public MSSQLServerExportParameterVisitor(final List<Object> parameters){
|
||||
this(parameters,new StringBuilder(),false);
|
||||
}
|
||||
|
||||
public MSSQLServerExportParameterVisitor(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 +94,9 @@ public class MSSQLServerExportParameterVisitor extends SQLServerASTVisitorAdapte
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLInListExpr x) {
|
||||
if(requireParameterizedOutput){
|
||||
return super.visit(x);
|
||||
}
|
||||
ExportParameterVisitorUtils.exportParamterAndAccept(this.parameters, x.getTargetList());
|
||||
|
||||
return true;
|
||||
@@ -75,11 +104,17 @@ public class MSSQLServerExportParameterVisitor extends SQLServerASTVisitorAdapte
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user