bug fixed for mapping && remove warnings

This commit is contained in:
温少
2012-05-08 19:54:23 +08:00
parent bb0a557b81
commit 0f074f9c59
16 changed files with 103 additions and 49 deletions
@@ -0,0 +1,36 @@
package com.alibaba.druid.mapping;
import java.util.ArrayList;
import java.util.List;
public class MappingContext {
private List<Object> parameters;
private boolean generateAlias = false;
public MappingContext(){
this(new ArrayList<Object>());
}
public MappingContext(List<Object> parameters){
this.parameters = parameters;
}
public List<Object> getParameters() {
return parameters;
}
public void setParameters(List<Object> parameters) {
this.parameters = parameters;
}
public boolean isGenerateAlias() {
return generateAlias;
}
public void setGenerateAlias(boolean generateAlias) {
this.generateAlias = generateAlias;
}
}
@@ -78,7 +78,11 @@ public class MappingEngine {
}
public MappingVisitor createMappingVisitor(List<Object> parameters) {
return provider.createMappingVisitor(this, parameters);
return createMappingVisitor(new MappingContext(parameters));
}
public MappingVisitor createMappingVisitor(MappingContext context) {
return provider.createMappingVisitor(this, context);
}
public SQLASTOutputVisitor createOutputVisitor(Appendable out) {
@@ -94,9 +98,12 @@ public class MappingEngine {
}
public String explainToSelectSQL(String sql, List<Object> parameters) {
return explainToSelectSQL(sql, new MappingContext(parameters));
}
public String explainToSelectSQL(String sql, MappingContext context) {
SQLSelectQueryBlock query = explainToSelectSQLObject(sql);
MappingVisitor visitor = this.createMappingVisitor(parameters);
MappingVisitor visitor = this.createMappingVisitor(context);
query.accept(visitor);
visitor.afterResolve();
afterResole(visitor);
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
import java.util.List;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
@@ -27,8 +28,8 @@ public class MSSQLServerMappingProvider implements MappingProvider {
}
@Override
public MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters) {
return new MSSQLServerMappingVisitor(engine, parameters);
public MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context) {
return new MSSQLServerMappingVisitor(engine, context);
}
@Override
@@ -1,12 +1,12 @@
package com.alibaba.druid.mapping.spi;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.mapping.Entity;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.mapping.Property;
import com.alibaba.druid.sql.ast.SQLExpr;
@@ -28,18 +28,18 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
private final MappingEngine engine;
private final Map<String, SQLTableSource> tableSources = new LinkedHashMap<String, SQLTableSource>();
private final List<Object> parameters;
private final MappingContext context;
private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
private int variantIndex = 0;
private final List<SQLExpr> unresolveList = new ArrayList<SQLExpr>();
public MSSQLServerMappingVisitor(MappingEngine engine){
this(engine, Collections.emptyList());
this(engine, new MappingContext());
}
public MSSQLServerMappingVisitor(MappingEngine engine, List<Object> parameters){
public MSSQLServerMappingVisitor(MappingEngine engine, MappingContext context){
this.engine = engine;
this.parameters = parameters;
this.context = context;
}
public MappingEngine getEngine() {
@@ -47,7 +47,11 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
}
public List<Object> getParameters() {
return parameters;
return context.getParameters();
}
public MappingContext getContext() {
return context;
}
public List<PropertyValue> getPropertyValues() {
@@ -64,12 +68,12 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
@Override
public String resolveTableName(Entity entity) {
return engine.resolveTableName(entity, parameters);
return engine.resolveTableName(entity, context.getParameters());
}
@Override
public String resovleColumnName(Entity entity, Property property) {
return engine.resovleColumnName(entity, property, parameters);
return engine.resovleColumnName(entity, property, context.getParameters());
}
@Override
@@ -115,7 +119,7 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
public boolean visit(SQLVariantRefExpr x) {
return MappingVisitorUtils.visit(this, x);
}
@Override
public boolean visit(SQLSubqueryTableSource x) {
return MappingVisitorUtils.visit(this, x);
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
import java.util.List;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
@@ -14,7 +15,7 @@ public interface MappingProvider {
MappingVisitor createMappingVisitor(MappingEngine engine);
MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters);
MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context);
ExportParameterVisitor createExportParameterVisitor(List<Object> parameters);
@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map;
import com.alibaba.druid.mapping.Entity;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.mapping.Property;
import com.alibaba.druid.sql.ast.SQLExpr;
@@ -14,6 +15,8 @@ public interface MappingVisitor extends SQLASTVisitor {
MappingEngine getEngine();
List<Object> getParameters();
MappingContext getContext();
Entity getFirstEntity();
@@ -93,7 +93,7 @@ public class MappingVisitorUtils {
if (x.getParent() instanceof SQLSelectItem) {
SQLSelectItem selectItem = (SQLSelectItem) x.getParent();
if (selectItem.getAlias() == null) {
if (visitor.getContext().isGenerateAlias() && selectItem.getAlias() == null) {
selectItem.setAlias('"' + property.getName() + '"');
}
}
@@ -129,9 +129,9 @@ public class MappingVisitorUtils {
x.putAttribute("mapping.property", property);
x.putAttribute("mapping.entity", propertyEntity);
if (x.getParent() instanceof SQLSelectItem) {
if (visitor.getContext().isGenerateAlias() && x.getParent() instanceof SQLSelectItem) {
SQLSelectItem selectItem = (SQLSelectItem) x.getParent();
if (selectItem.getAlias() == null) {
if (visitor.getContext().isGenerateAlias() && selectItem.getAlias() == null) {
selectItem.setAlias('"' + property.getName() + '"');
}
}
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
import java.util.List;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
@@ -26,8 +27,8 @@ public class MySqlMappingProvider implements MappingProvider {
}
@Override
public MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters) {
return new MySqlMappingVisitor(engine, parameters);
public MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context) {
return new MySqlMappingVisitor(engine, context);
}
@Override
@@ -1,12 +1,12 @@
package com.alibaba.druid.mapping.spi;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.mapping.Entity;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.mapping.Property;
import com.alibaba.druid.sql.ast.SQLExpr;
@@ -28,18 +28,18 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
private final MappingEngine engine;
private final Map<String, SQLTableSource> tableSources = new LinkedHashMap<String, SQLTableSource>();
private final List<Object> parameters;
private final MappingContext context;
private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
private int variantIndex = 0;
private final List<SQLExpr> unresolveList = new ArrayList<SQLExpr>();
public MySqlMappingVisitor(MappingEngine engine){
this(engine, Collections.emptyList());
this(engine, new MappingContext());
}
public MySqlMappingVisitor(MappingEngine engine, List<Object> parameters){
public MySqlMappingVisitor(MappingEngine engine, MappingContext context){
this.engine = engine;
this.parameters = parameters;
this.context = context;
}
public MappingEngine getEngine() {
@@ -47,7 +47,11 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
}
public List<Object> getParameters() {
return parameters;
return context.getParameters();
}
public MappingContext getContext() {
return context;
}
public List<PropertyValue> getPropertyValues() {
@@ -64,12 +68,12 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
@Override
public String resolveTableName(Entity entity) {
return engine.resolveTableName(entity, parameters);
return engine.resolveTableName(entity, context.getParameters());
}
@Override
public String resovleColumnName(Entity entity, Property property) {
return engine.resovleColumnName(entity, property, parameters);
return engine.resovleColumnName(entity, property, context.getParameters());
}
public Entity getFirstEntity() {
@@ -109,7 +113,7 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
public boolean visit(SQLBinaryOpExpr x) {
return MappingVisitorUtils.visit(this, x);
}
@Override
public boolean visit(SQLVariantRefExpr x) {
return MappingVisitorUtils.visit(this, x);
@@ -129,16 +133,16 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
public boolean visit(SQLExprTableSource x) {
return MappingVisitorUtils.visit(this, x);
}
@Override
public int getAndIncrementVariantIndex() {
return variantIndex++;
}
public int getVariantIndex() {
return variantIndex;
}
public List<SQLExpr> getUnresolveList() {
return unresolveList;
}
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
import java.util.List;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
@@ -23,8 +24,8 @@ public class OracleMappingProvider implements MappingProvider {
}
@Override
public MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters) {
return new OracleMappingVisitor(engine, parameters);
public MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context) {
return new OracleMappingVisitor(engine, context);
}
@Override
@@ -1,12 +1,12 @@
package com.alibaba.druid.mapping.spi;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.mapping.Entity;
import com.alibaba.druid.mapping.MappingContext;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.mapping.Property;
import com.alibaba.druid.sql.ast.SQLExpr;
@@ -30,18 +30,18 @@ public class OracleMappingVisitor extends OracleASTVisitorAdapter implements Map
private final MappingEngine engine;
private final Map<String, SQLTableSource> tableSources = new LinkedHashMap<String, SQLTableSource>();
private final List<Object> parameters;
private final MappingContext context;
private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
private int variantIndex = 0;
private final List<SQLExpr> unresolveList = new ArrayList<SQLExpr>();
public OracleMappingVisitor(MappingEngine engine){
this(engine, Collections.emptyList());
this(engine, new MappingContext());
}
public OracleMappingVisitor(MappingEngine engine, List<Object> parameters){
public OracleMappingVisitor(MappingEngine engine, MappingContext context){
this.engine = engine;
this.parameters = parameters;
this.context = context;
}
public MappingEngine getEngine() {
@@ -49,7 +49,11 @@ public class OracleMappingVisitor extends OracleASTVisitorAdapter implements Map
}
public List<Object> getParameters() {
return parameters;
return context.getParameters();
}
public MappingContext getContext() {
return context;
}
public List<PropertyValue> getPropertyValues() {
@@ -66,12 +70,12 @@ public class OracleMappingVisitor extends OracleASTVisitorAdapter implements Map
@Override
public String resolveTableName(Entity entity) {
return engine.resolveTableName(entity, parameters);
return engine.resolveTableName(entity, context.getParameters());
}
@Override
public String resovleColumnName(Entity entity, Property property) {
return engine.resovleColumnName(entity, property, parameters);
return engine.resovleColumnName(entity, property, context.getParameters());
}
public Entity getFirstEntity() {
@@ -29,8 +29,6 @@ import java.util.Map;
import com.alibaba.druid.filter.FilterChain;
import com.alibaba.druid.filter.FilterChainImpl;
import com.alibaba.druid.stat.JdbcSqlStat;
import com.alibaba.druid.stat.JdbcStatContext;
import com.alibaba.druid.stat.JdbcStatManager;
/**
* @author wenshao<szujobs@hotmail.com>
@@ -28,7 +28,6 @@ import com.alibaba.druid.sql.ast.statement.SQLColumnConstraint;
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
@@ -17,7 +17,6 @@ package com.alibaba.druid.sql.dialect.postgresql.ast;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLObjectImpl;
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGExpr;
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
@@ -20,7 +20,6 @@ import java.util.List;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLObjectImpl;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGAnalyticWindowing;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGOrderBy;
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
@@ -1,9 +1,6 @@
package com.alibaba.druid.sql.dialect.postgresql.parser;
import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.dialect.oracle.ast.OracleOrderBy;
import com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleAnalyticWindowing;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGAggregateExpr;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGOrderBy;
import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGAnalytic;