/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
* nilriri - agens그래프를 위한 set graph_path=x; 실행...
******************************************************************************/
package com.hangum.tadpole.rdb.core.actions.object.rdb.object;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbenchWindow;
import com.hangum.tadpole.commons.dialogs.message.dao.RequestResultDAO;
import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine;
import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine.OBJECT_TYPE;
import com.hangum.tadpole.commons.libs.core.message.CommonMessages;
import com.hangum.tadpole.engine.define.DBDefine;
import com.hangum.tadpole.engine.define.DBGroupDefine;
import com.hangum.tadpole.engine.query.dao.agens.AgensGraphPathDAO;
import com.hangum.tadpole.engine.query.dao.mongodb.MongoDBIndexDAO;
import com.hangum.tadpole.engine.query.dao.mongodb.MongoDBServerSideJavaScriptDAO;
import com.hangum.tadpole.engine.query.dao.mysql.InformationSchemaDAO;
import com.hangum.tadpole.engine.query.dao.mysql.ProcedureFunctionDAO;
import com.hangum.tadpole.engine.query.dao.mysql.TableConstraintsDAO;
import com.hangum.tadpole.engine.query.dao.mysql.TableDAO;
import com.hangum.tadpole.engine.query.dao.mysql.TriggerDAO;
import com.hangum.tadpole.engine.query.dao.rdb.InOutParameterDAO;
import com.hangum.tadpole.engine.query.dao.rdb.OracleDBLinkDAO;
import com.hangum.tadpole.engine.query.dao.rdb.OracleJavaDAO;
import com.hangum.tadpole.engine.query.dao.rdb.OracleJobDAO;
import com.hangum.tadpole.engine.query.dao.rdb.OracleSequenceDAO;
import com.hangum.tadpole.engine.query.dao.rdb.OracleSynonymDAO;
import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
import com.hangum.tadpole.engine.sql.util.ExecuteDDLCommand;
import com.hangum.tadpole.engine.sql.util.SQLUtil;
import com.hangum.tadpole.engine.sql.util.executer.ProcedureExecuterManager;
import com.hangum.tadpole.mongodb.core.query.MongoDBQuery;
import com.hangum.tadpole.rdb.core.Messages;
import com.hangum.tadpole.rdb.core.actions.object.AbstractObjectSelectAction;
import com.hangum.tadpole.rdb.core.util.GrantCheckerUtils;
import com.hangum.tadpole.tajo.core.connections.TajoConnectionManager;
/**
* Object Explorer에서 사용하는 공통 action
*
* @author nilriri
*
*/
public class SetGraphPathAction extends AbstractObjectSelectAction {
/**
* Logger for this class
*/
private static final Logger logger = Logger .getLogger(SetGraphPathAction.class);
public final static String ID = "com.hangum.db.browser.rap.core.actions.object.setpath"; //$NON-NLS-1$
public SetGraphPathAction(IWorkbenchWindow window, PublicTadpoleDefine.OBJECT_TYPE actionType, String title) {
super(window, actionType);
setId(ID + actionType);
setText(title);
}
@Override
public void run(IStructuredSelection selection, UserDBDAO userDB, OBJECT_TYPE actionType) {
try {
if(!GrantCheckerUtils.ifExecuteQuery(userDB)) return;
} catch (Exception e) {
MessageDialog.openError(getWindow().getShell(),CommonMessages.get().Error, e.getMessage());
return;
}
if(actionType == PublicTadpoleDefine.OBJECT_TYPE.GRAPHPATH) {
AgensGraphPathDAO dao = (AgensGraphPathDAO)selection.getFirstElement();
if(MessageDialog.openConfirm(getWindow().getShell(), CommonMessages.get().Confirm, "Set graph path?")) {
try {
executeSQL(userDB, "SET GRAPH_PATH = "+dao.getGraphname()); //$NON-NLS-1$ //$NON-NLS-2$
} catch(Exception e) {
logger.error("set graph path", e);
}
}
}
} // end method
/**
* executeSQL
*
* @param userDB
* @param cmd
* @throws Exception
*/
private void executeSQL(UserDBDAO userDB, String cmd) throws Exception {
RequestResultDAO reqReResultDAO = new RequestResultDAO();
ExecuteDDLCommand.executSQL(userDB, reqReResultDAO, cmd); //$NON-NLS-1$
if(PublicTadpoleDefine.SUCCESS_FAIL.F.name().equals(reqReResultDAO.getResult())) {
exeMessage(Messages.get().ObjectDeleteAction_0, reqReResultDAO.getException());
}
}
}