/******************************************************************************* * 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.viewers.object.sub; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.ui.IWorkbenchPartSite; import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine; import com.hangum.tadpole.commons.libs.core.message.CommonMessages; import com.hangum.tadpole.engine.define.DBDefine; import com.hangum.tadpole.engine.query.dao.system.UserDBDAO; import com.hangum.tadpole.rdb.core.Messages; import com.hangum.tadpole.rdb.core.actions.object.AbstractObjectAction; import com.hangum.tadpole.rdb.core.viewers.object.comparator.ObjectComparator; /** * Object explorer composite * * @author hangum * */ public abstract class AbstractObjectComposite extends Composite { protected IWorkbenchPartSite site; protected CTabFolder tabFolderObject; /** object select action */ protected AbstractObjectAction objectSelectionToEditorAction; /** 데이터를 가져오고 있습니다. 공통 메시지 정의 */ public static final String MSG_DataIsBeginAcquired = CommonMessages.get().DataIsBeginAcquired; /** TAB DATA KEY */ public static String TAB_DATA_KEY = "DB_ACTION"; protected UserDBDAO userDB; protected int DND_OPERATIONS = DND.DROP_COPY | DND.DROP_MOVE; /** * 디비 중에 올챙이가 테이블,컬럼의 도움말을 제공하는 디비를 정의합니다. */ protected static DBDefine[] editType = {DBDefine.ORACLE_DEFAULT, DBDefine.POSTGRE_DEFAULT, DBDefine.MYSQL_DEFAULT, DBDefine.MARIADB_DEFAULT}; /** * is insert lock? * @return */ public boolean isInsertLock() { return PublicTadpoleDefine.YES_NO.YES.name().equals(userDB.getDbAccessCtl().getInsert_lock()); } /** * is update lock? * @return */ public boolean isUpdateLock() { return PublicTadpoleDefine.YES_NO.YES.name().equals(userDB.getDbAccessCtl().getUpdate_lock()); } /** * is delete lock? * @return */ public boolean isDeleteLock() { return PublicTadpoleDefine.YES_NO.YES.name().equals(userDB.getDbAccessCtl().getDelete_locl()); } /** * is ddl lock? * * @return */ public boolean isDDLLock() { return PublicTadpoleDefine.YES_NO.YES.name().equals(userDB.getDbAccessCtl().getDdl_lock()); } /** * * @param site * @param parent * @param userDB */ public AbstractObjectComposite(IWorkbenchPartSite site, CTabFolder tabFolderObject, UserDBDAO userDB) { super(tabFolderObject, SWT.NONE); this.site = site; this.tabFolderObject = tabFolderObject; this.userDB = userDB; } /** * select userDB * @return */ public UserDBDAO getUserDB() { return userDB; } protected String getUserRoleType() { return userDB.getRole_id();//SessionManager.getRoleType(getUserDB()); } /** * select site * @return */ public IWorkbenchPartSite getSite() { return site; } /** * search text * @param searchText */ public abstract void setSearchText(String searchText); /** * init action */ public abstract void initAction(); /** * select data of table */ public abstract void selectDataOfTable(String strObjectName); /** * 테이블, 테이블 컬럼의 컬럼을 에디트 할수 있는지. * @param userDB * @return */ protected boolean isCommentEdit(UserDBDAO userDB) { if(userDB == null) return false; for (DBDefine dbType : editType) { if(dbType.getDBToString().equals(userDB.getDb())) return true; } return false; } /** * trigger table column * @param tv */ protected void createTriggerColumn(TableViewer tv, ObjectComparator comparator) { String[] name = {Messages.get().Trigger, Messages.get().Event, Messages.get().Table, Messages.get().Statement, Messages.get().Timing, Messages.get().Created, Messages.get().AbstractObjectComposite_6, Messages.get().Definer, Messages.get().AbstractObjectComposite_8, Messages.get().AbstractObjectComposite_9, Messages.get().Database, Messages.get().Collation }; int[] size = {120, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70 }; for (int i=0; i<name.length; i++) { TableViewerColumn tableColumn = new TableViewerColumn(tv, SWT.LEFT); tableColumn.getColumn().setText(name[i]); tableColumn.getColumn().setWidth(size[i]); tableColumn.getColumn().setMoveable(true); tableColumn.getColumn().addSelectionListener(getSelectionAdapter(tv, comparator, tableColumn.getColumn(), i)); } } /** * Procedure table column * @param tv */ protected void createProcedureFunctionColumn(TableViewer tv, ObjectComparator comparator) { String[] name = {CommonMessages.get().Name, Messages.get().Definer, Messages.get().Modified, Messages.get().Created, Messages.get().AbstractObjectComposite_16, Messages.get().Comment, Messages.get().AbstractObjectComposite_18, Messages.get().AbstractObjectComposite_19, Messages.get().Database, Messages.get().Collation }; int[] size = {120, 70, 70, 70, 70, 70, 70, 70, 70, 70 }; for (int i=0; i<name.length; i++) { TableViewerColumn tableColumn = new TableViewerColumn(tv, SWT.LEFT); tableColumn.getColumn().setText(name[i]); tableColumn.getColumn().setWidth(size[i]); tableColumn.getColumn().setMoveable(true); tableColumn.getColumn().addSelectionListener(getSelectionAdapter(tv, comparator, tableColumn.getColumn(), i)); } } /** * indexes table column * @param tv */ protected void createIndexesColumn(final TableViewer tv, final ObjectComparator comparator) { String[] name = {Messages.get().TableName, Messages.get().IndexName,Messages.get().Type,Messages.get().Comment}; int[] size = {120, 120, 70, 70}; for (int i=0; i<name.length; i++) { TableViewerColumn tableColumn = new TableViewerColumn(tv, SWT.LEFT); tableColumn.getColumn().setText(name[i]); tableColumn.getColumn().setWidth(size[i]); tableColumn.getColumn().setMoveable(true); tableColumn.getColumn().addSelectionListener(getSelectionAdapter(tv, comparator, tableColumn.getColumn(), i)); } } /** * * @param tv * @param comparator */ protected void crateSchedule(final TableViewer tv, final ObjectComparator comparator) { String[] name = {"WHAT", "JOB", "NEXT_DATE", "NEXT_SEC", "FAILURES", "BROKEN"}; int[] size = {120, 120, 70, 70, 70, 70}; for (int i=0; i<name.length; i++) { TableViewerColumn tableColumn = new TableViewerColumn(tv, SWT.LEFT); tableColumn.getColumn().setText(name[i]); tableColumn.getColumn().setWidth(size[i]); tableColumn.getColumn().setMoveable(true); // tableColumn.getColumn().addSelectionListener(getSelectionAdapter(tv, comparator, tableColumn.getColumn(), i)); } } /** * table sorter * * @param comparator * @param viewer * @param column * @param index * @return */ protected SelectionAdapter getSelectionAdapter(final TableViewer viewer, final ObjectComparator comparator, final TableColumn column, final int index) { SelectionAdapter adapter = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { comparator.setColumn(index); viewer.getTable().setSortDirection(comparator.getDirection()); viewer.getTable().setSortColumn(column); viewer.refresh(); } }; return adapter; } @Override public void dispose() { super.dispose(); if(objectSelectionToEditorAction != null) objectSelectionToEditorAction.dispose(); } /** * get tabFolder * @return */ protected CTabFolder getTabFolderObject() { return tabFolderObject; } @Override protected void checkSubclass() { } }