Java tutorial
/******************************************************************************* * Copyright (c) 2012 Cho Hyun Jong. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cho Hyun Jong - initial API and implementation ******************************************************************************/ package com.hangum.tadpole.commons.sql.util; import org.apache.commons.lang.StringUtils; import com.hangum.tadpole.commons.sql.define.DBDefine; import com.hangum.tadpole.dao.system.UserDBDAO; import com.hangum.tadpole.define.CubridDMLTemplate; import com.hangum.tadpole.define.MSSQLDMLTemplate; import com.hangum.tadpole.define.MySQLDMLTemplate; import com.hangum.tadpole.define.OracleDMLTemplate; import com.hangum.tadpole.define.PostgreDMLTemplate; import com.hangum.tadpole.define.SQLiteDMLTemplate; /** * ? DBMS? ? ?. * * @author hangum * */ public class PartQueryUtil { /** * ? DBMS? SELECT ? ?. * * @return */ public static String makeSelect(UserDBDAO userDB, String originalQuery, int startResultPos, int endResultPos) { String requestQuery = ""; if (DBDefine.MYSQL_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { if (!StringUtils.contains(originalQuery.toLowerCase(), "limit ")) { requestQuery = String.format(MySQLDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos, endResultPos); } else { requestQuery = originalQuery; } } else if (DBDefine.ORACLE_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { if (!StringUtils.contains(originalQuery.toLowerCase(), "where")) { requestQuery = String.format(OracleDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos, endResultPos); } else { requestQuery = originalQuery; } } else if (DBDefine.SQLite_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { if (!StringUtils.contains(originalQuery.toLowerCase(), "limit ")) { requestQuery = String.format(SQLiteDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos, endResultPos); } else { requestQuery = originalQuery; } } else if (DBDefine.CUBRID_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { // //https://github.com/hangum/TadpoleForDBTools/issues/12 ? ? ? ? ? ? . if (!StringUtils.contains(originalQuery.toLowerCase(), "limit ")) { requestQuery = String.format(CubridDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos, endResultPos); } else { requestQuery = originalQuery; } } else if (DBDefine.POSTGRE_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { // ? limit . if (!StringUtils.contains(originalQuery.toLowerCase(), "limit ")) { requestQuery = String.format(PostgreDMLTemplate.TMP_GET_PARTDATA, originalQuery, endResultPos, startResultPos); } else { requestQuery = originalQuery; } // } else if(DBDefine.MSSQL_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { // if(!StringUtils.contains(originalQuery.toLowerCase(), "where")) { // requestQuery = String.format(MSSQLDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos, endResultPos); // } else { // requestQuery = originalQuery; // } // ? ? dbms ? . } else { requestQuery = originalQuery; } return requestQuery; } /** * ? dbms? explain query ?. * * @param userDB * @param query * @return */ public static String makeExplainQuery(UserDBDAO userDB, String query) throws Exception { String resultQuery = ""; if (DBDefine.MYSQL_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { resultQuery = MySQLDMLTemplate.TMP_EXPLAIN_EXTENDED + query; } else if (DBDefine.ORACLE_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { resultQuery = OracleDMLTemplate.TMP_EXPLAIN_EXTENDED + query; } else if (DBDefine.SQLite_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { resultQuery = SQLiteDMLTemplate.TMP_EXPLAIN_EXTENDED + query; } else if (DBDefine.CUBRID_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) { resultQuery = query; } else { throw new Exception("Not Support DBMS Query Plan."); } return resultQuery; } }