/* * 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.parser; import com.alibaba.druid.sql.dialect.db2.parser.DB2ExprParser; import com.alibaba.druid.sql.dialect.db2.parser.DB2StatementParser; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.odps.parser.OdpsExprParser; import com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser; import com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser; import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; import com.alibaba.druid.sql.dialect.phoenix.parser.PhoenixExprParser; import com.alibaba.druid.sql.dialect.phoenix.parser.PhoenixStatementParser; import com.alibaba.druid.sql.dialect.postgresql.parser.PGExprParser; import com.alibaba.druid.sql.dialect.postgresql.parser.PGSQLStatementParser; import com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerExprParser; import com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser; import com.alibaba.druid.util.JdbcUtils; public class SQLParserUtils { public static SQLStatementParser createSQLStatementParser(String sql, String dbType) { if (JdbcUtils.ORACLE.equals(dbType) || JdbcUtils.ALI_ORACLE.equals(dbType)) { return new OracleStatementParser(sql); } if (JdbcUtils.MYSQL.equals(dbType)) { return new MySqlStatementParser(sql); } if (JdbcUtils.MARIADB.equals(dbType)) { return new MySqlStatementParser(sql); } if (JdbcUtils.POSTGRESQL.equals(dbType)) { return new PGSQLStatementParser(sql); } if (JdbcUtils.SQL_SERVER.equals(dbType) || JdbcUtils.JTDS.equals(dbType)) { return new SQLServerStatementParser(sql); } if (JdbcUtils.H2.equals(dbType)) { return new MySqlStatementParser(sql); } if (JdbcUtils.DB2.equals(dbType)) { return new DB2StatementParser(sql); } if (JdbcUtils.ODPS.equals(dbType)) { return new OdpsStatementParser(sql); } if (JdbcUtils.PHOENIX.equals(dbType)) { return new PhoenixStatementParser(sql); } return new SQLStatementParser(sql, dbType); } public static SQLExprParser createExprParser(String sql, String dbType) { if (JdbcUtils.ORACLE.equals(dbType) || JdbcUtils.ALI_ORACLE.equals(dbType)) { return new OracleExprParser(sql); } if (JdbcUtils.MYSQL.equals(dbType) || // JdbcUtils.MARIADB.equals(dbType) || // JdbcUtils.H2.equals(dbType)) { return new MySqlExprParser(sql); } if (JdbcUtils.POSTGRESQL.equals(dbType)) { return new PGExprParser(sql); } if (JdbcUtils.SQL_SERVER.equals(dbType) || JdbcUtils.JTDS.equals(dbType)) { return new SQLServerExprParser(sql); } if (JdbcUtils.DB2.equals(dbType)) { return new DB2ExprParser(sql); } if (JdbcUtils.ODPS.equals(dbType)) { return new OdpsExprParser(sql); } if (JdbcUtils.PHOENIX.equals(dbType)) { return new PhoenixExprParser(sql); } return new SQLExprParser(sql); } }