/*******************************************************************************
* 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
******************************************************************************/
package com.hangum.tadpole.rdb.core.actions.object.rdb.generate;
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.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.query.dao.mysql.ProcedureFunctionDAO;
import com.hangum.tadpole.engine.query.dao.mysql.TableDAO;
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.sqlscripts.DDLScriptManager;
import com.hangum.tadpole.rdb.core.actions.object.AbstractObjectSelectAction;
import com.hangum.tadpole.rdb.core.util.FindEditorAndWriteQueryUtil;
/**
* generate ddl view
*
* @author hangum
*
*/
public class GenerateViewDDLAction extends AbstractObjectSelectAction {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(GenerateViewDDLAction.class);
public final static String ID = "com.hangum.db.browser.rap.core.actions.object.GenerateViewDDLAction"; //$NON-NLS-1$
/**
* generated view ddl
*
* @param window
* @param actionType
* @param target
*/
public GenerateViewDDLAction(IWorkbenchWindow window, PublicTadpoleDefine.OBJECT_TYPE actionType, String target) {
super(window, actionType);
setId(ID + actionType.toString());
setText(target);
window.getSelectionService().addSelectionListener(this);
}
@Override
public void run(IStructuredSelection selection, UserDBDAO userDB, OBJECT_TYPE actionType) {
try {
DDLScriptManager scriptManager;
String strObjectName = "";
String strScript = "";
Object obj = null;
if (PublicTadpoleDefine.OBJECT_TYPE.SYNONYM.equals(actionType)) {
OracleSynonymDAO synonym = (OracleSynonymDAO) selection.getFirstElement();
if (PublicTadpoleDefine.OBJECT_TYPE.TABLES.toString().startsWith(synonym.getObject_type())) {
scriptManager = new DDLScriptManager(userDB, PublicTadpoleDefine.OBJECT_TYPE.TABLES);
TableDAO dao = new TableDAO();
dao.setName(synonym.getName());
obj = dao;
} else if (PublicTadpoleDefine.OBJECT_TYPE.VIEWS.toString().startsWith(synonym.getObject_type())) {
scriptManager = new DDLScriptManager(userDB, PublicTadpoleDefine.OBJECT_TYPE.VIEWS);
obj = synonym.getName();
} else if (PublicTadpoleDefine.OBJECT_TYPE.PACKAGES.toString().startsWith(synonym.getObject_type())) {
scriptManager = new DDLScriptManager(userDB, PublicTadpoleDefine.OBJECT_TYPE.PACKAGES);
ProcedureFunctionDAO dao = new ProcedureFunctionDAO();
dao.setName(synonym.getName());
dao.setPackagename(synonym.getName());
obj = dao;
} else if (PublicTadpoleDefine.OBJECT_TYPE.PROCEDURES.toString().startsWith(synonym.getObject_type())) {
scriptManager = new DDLScriptManager(userDB, PublicTadpoleDefine.OBJECT_TYPE.PROCEDURES);
ProcedureFunctionDAO dao = new ProcedureFunctionDAO();
dao.setName(synonym.getName());
obj = dao;
} else if (PublicTadpoleDefine.OBJECT_TYPE.FUNCTIONS.toString().startsWith(synonym.getObject_type())) {
scriptManager = new DDLScriptManager(userDB, PublicTadpoleDefine.OBJECT_TYPE.FUNCTIONS);
ProcedureFunctionDAO dao = new ProcedureFunctionDAO();
dao.setName(synonym.getName());
obj = dao;
} else {
scriptManager = new DDLScriptManager(userDB, actionType);
obj = synonym;
}
strObjectName = synonym.getName();
strScript = scriptManager.getScript(obj);
} else {
scriptManager = new DDLScriptManager(userDB, actionType);
obj = selection.getFirstElement();
strScript = scriptManager.getScript(obj);
strObjectName = scriptManager.getObjectName();
}
FindEditorAndWriteQueryUtil.run(userDB, strObjectName, strScript, true, actionType);
} catch (Exception e) {
logger.error("view ddl", e);
MessageDialog.openError(null,CommonMessages.get().Error, e.getMessage());
}
}
}