All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sharksharding.sql.dialect.mysql.visitor.MySqlParameterizedOutputVisitor Maven / Gradle / Ivy

The newest version!
package com.sharksharding.sql.dialect.mysql.visitor;
///*
// * Copyright 1999-2101 Alibaba Group Holding Ltd.
// *
// * Licensed under the Apache License, Version 2.0 (the "License");
// * you may not use this file except in compliance with the License.
// * You may obtain a copy of the License at
// *
// *      http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software
// * distributed under the License is distributed on an "AS IS" BASIS,
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// * See the License for the specific language governing permissions and
// * limitations under the License.
// */
//package com.alibaba.druid.sql.dialect.mysql.visitor;
//
//import com.alibaba.druid.sql.ast.SQLObject;
//import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
//import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
//import com.alibaba.druid.sql.ast.expr.SQLHexExpr;
//import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
//import com.alibaba.druid.sql.ast.expr.SQLInListExpr;
//import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
//import com.alibaba.druid.sql.ast.expr.SQLNCharExpr;
//import com.alibaba.druid.sql.ast.expr.SQLNullExpr;
//import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
//import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
//import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
//import com.alibaba.druid.sql.ast.statement.SQLInsertStatement.ValuesClause;
//import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
//import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement;
//import com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils;
//import com.alibaba.druid.sql.visitor.ParameterizedVisitor;
//
//import java.security.AccessControlException;
//import java.util.List;
//import java.util.Properties;
//
//public class MySqlParameterizedOutputVisitor extends MySqlOutputVisitor implements ParameterizedVisitor {
//
//    private boolean shardingSupport = true;
//
//    private int     replaceCount;
//
//    public MySqlParameterizedOutputVisitor(){
//        this(new StringBuilder());
//    }
//
//    public MySqlParameterizedOutputVisitor(Appendable appender){
//        super(appender);
//
//        try {
//            configFromProperty(System.getProperties());
//        } catch (AccessControlException e) {
//        }
//    }
//
//    public void configFromProperty(Properties properties) {
//        {
//            String property = properties.getProperty("druid.parameterized.shardingSupport");
//            if ("true".equals(property)) {
//                this.setShardingSupport(true);
//            } else if ("false".equals(property)) {
//                this.setShardingSupport(false);
//            }
//        }
//    }
//
//    public boolean isShardingSupport() {
//        return shardingSupport;
//    }
//
//    public void setShardingSupport(boolean shardingSupport) {
//        this.shardingSupport = shardingSupport;
//    }
//
//    public int getReplaceCount() {
//        return this.replaceCount;
//    }
//
//    public void incrementReplaceCunt() {
//        replaceCount++;
//    }
//
//    public boolean visit(SQLInListExpr x) {
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//
//    public boolean visit(SQLIdentifierExpr x) {
//        final String name = x.getName();
//        boolean computeSharding = isShardingSupport();
//        if (computeSharding) {
//            SQLObject parent = x.getParent();
//            computeSharding = parent instanceof SQLExprTableSource || parent instanceof SQLPropertyExpr;
//        }
//
//        if (computeSharding) {
//            int pos = name.lastIndexOf('_');
//            if (pos != -1 && pos != name.length() - 1) {
//                boolean isNumber = true;
//                for (int i = pos + 1; i < name.length(); ++i) {
//                    char ch = name.charAt(i);
//                    if (ch < '0' || ch > '9') {
//                        isNumber = false;
//                        break;
//                    }
//                }
//                if (isNumber) {
//                    String realName = name.substring(0, pos);
//                    print(realName);
//                    incrementReplaceCunt();
//                    return false;
//                }
//            }
//
//            int numberCount = 0;
//            for (int i = name.length() - 1; i >= 0; --i) {
//                char ch = name.charAt(i);
//                if (ch < '0' || ch > '9') {
//                    break;
//                } else {
//                    numberCount++;
//                }
//            }
//
//            if (numberCount > 1) {
//                int numPos = name.length() - numberCount;
//                String realName = name.substring(0, numPos);
//                print(realName);
//                incrementReplaceCunt();
//                return false;
//            }
//        }
//        print(name);
//        return false;
//    }
//
//    public boolean visit(SQLBinaryOpExpr x) {
//        x = ParameterizedOutputVisitorUtils.merge(this, x);
//
//        return super.visit(x);
//    }
//
//    public boolean visit(SQLIntegerExpr x) {
//        if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
//            return super.visit(x);
//        }
//
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//
//    public boolean visit(SQLNumberExpr x) {
//        if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
//            return super.visit(x);
//        }
//
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//
//    public boolean visit(SQLCharExpr x) {
//        if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
//            return super.visit(x);
//        }
//
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//
//    public boolean visit(SQLNCharExpr x) {
//        if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
//            return super.visit(x);
//        }
//
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//
//    public boolean visit(SQLNullExpr x) {
//        if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
//            return super.visit(x);
//        }
//
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//    
//    public boolean visit(SQLHexExpr x) {
//        if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
//            return super.visit(x);
//        }
//
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//    
//    public boolean visit(MySqlCharExpr x) {
//        if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
//            return super.visit(x);
//        }
//
//        return ParameterizedOutputVisitorUtils.visit(this, x);
//    }
//
//    protected void printValuesList(MySqlInsertStatement x) {
//        List valuesList = x.getValuesList();
//        print("VALUES ");
//        incrementIndent();
//        valuesList.get(0).accept(this);
//        decrementIndent();
//        if (valuesList.size() > 1) {
//            this.incrementReplaceCunt();
//        }
//    }
//}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy