com.hangum.tadpole.rdb.core.editors.main.PartQueryUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.hangum.tadpole.rdb.core.editors.main.PartQueryUtil.java

Source

/*******************************************************************************
 * 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.rdb.core.editors.main;

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.MySQLDMLTemplate;
import com.hangum.tadpole.define.OracleDMLTemplate;
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())) {
            requestQuery = String.format(MySQLDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos,
                    endResultPos);

        } else if (DBDefine.ORACLE_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) {

            if (StringUtils.indexOf(originalQuery.toLowerCase(), "where") == -1) {
                requestQuery = String.format(OracleDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos,
                        endResultPos);
            } else {
                requestQuery = originalQuery;
            }

        } else if (DBDefine.SQLite_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) {
            requestQuery = String.format(SQLiteDMLTemplate.TMP_GET_PARTDATA, originalQuery, startResultPos,
                    endResultPos);

        } else if (DBDefine.CUBRID_DEFAULT == DBDefine.getDBDefine(userDB.getTypes())) {

            //         
            //         https://github.com/hangum/TadpoleForDBTools/issues/12  ? ? ? ? ?   ?  .
            //         
            //         if( StringUtils.indexOf(originalQuery, "where") == -1 ) {
            //            requestQuery = String.format(CubridDMLTemplate.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;
    }
}