/******************************************************************************* * 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.importexport.core.editors.mongodb.composite; import java.util.ArrayList; 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.ArrayContentProvider; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import com.hangum.tadpole.commons.google.analytics.AnalyticCaller; import com.hangum.tadpole.commons.util.GlobalImageUtils; import com.hangum.tadpole.engine.define.DBGroupDefine; import com.hangum.tadpole.engine.manager.TadpoleSQLManager; import com.hangum.tadpole.engine.query.dao.mysql.TableDAO; import com.hangum.tadpole.engine.query.dao.system.UserDBDAO; import com.hangum.tadpole.importexport.core.Messages; import com.hangum.tadpole.importexport.core.editors.mongodb.composite.editingsupport.ExistOnDeleteColumnEditingSupport; import com.hangum.tadpole.importexport.core.editors.mongodb.composite.editingsupport.ImportColumnEditingSupport; import com.hangum.tadpole.importexport.core.editors.mongodb.composite.editingsupport.RenameColumnEditingSupport; import com.hangum.tadpole.mongodb.core.query.MongoDBQuery; import com.ibatis.sqlmap.client.SqlMapClient; /** * <pre> * Table * - column : type * 을 구조를 갖는 콤포짖 * (현재(12.11.18)는 테이블 정보만 표시합니다. * </pre> * * @author hangum * */ public class TableColumnLIstComposite extends Composite { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(TableColumnLIstComposite.class); private UserDBDAO userDB = null; private TableViewer tableViewer = null; private List<ModTableDAO> listTables = new ArrayList<ModTableDAO>(); /** * Create the composite. * @param parent * @param style */ public TableColumnLIstComposite(Composite parent, int style) { super(parent, style); setLayout(new GridLayout(1, false)); tableViewer = new TableViewer(this, SWT.BORDER | SWT.FULL_SELECTION /* | SWT.VIRTUAL */); Table table = tableViewer.getTable(); table.setLinesVisible(true); table.setHeaderVisible(true); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); final TableViewerColumn tableColumn = new TableViewerColumn(tableViewer, SWT.LEFT); tableColumn.getColumn().setText("Is Import"); //$NON-NLS-1$ tableColumn.getColumn().setWidth(70); tableColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return null; } @Override public Image getImage(Object element) { ModTableDAO modDao = (ModTableDAO)element; if (modDao.isModify()) { return GlobalImageUtils.getCheck(); } else { return GlobalImageUtils.getUnCheck(); } } }); tableColumn.setEditingSupport(new ImportColumnEditingSupport(tableViewer)); final TableViewerColumn tableColumnName = new TableViewerColumn(tableViewer, SWT.LEFT); tableColumnName.getColumn().setText("Table Name"); //$NON-NLS-1$ tableColumnName.getColumn().setWidth(200); tableColumnName.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { ModTableDAO modDao = (ModTableDAO)element; return modDao.getName(); } }); final TableViewerColumn tableColumnExistOnDelete = new TableViewerColumn(tableViewer, SWT.LEFT); tableColumnExistOnDelete.getColumn().setText("Exist on delete"); //$NON-NLS-1$ tableColumnExistOnDelete.getColumn().setWidth(100); tableColumnExistOnDelete.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return null; } @Override public Image getImage(Object element) { ModTableDAO modDao = (ModTableDAO)element; if (modDao.isExistOnDelete()) { return GlobalImageUtils.getCheck(); } else { return GlobalImageUtils.getUnCheck(); } } }); tableColumnExistOnDelete.setEditingSupport(new ExistOnDeleteColumnEditingSupport(tableViewer)); final TableViewerColumn tableColumnRename = new TableViewerColumn(tableViewer, SWT.LEFT); tableColumnRename.getColumn().setText("Rename"); //$NON-NLS-1$ tableColumnRename.getColumn().setWidth(200); tableColumnRename.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { ModTableDAO modDao = (ModTableDAO)element; return modDao.getReName(); } }); tableColumnRename.setEditingSupport(new RenameColumnEditingSupport(tableViewer)); tableViewer.setContentProvider(new ArrayContentProvider()); tableViewer.setInput(listTables); } public void init(UserDBDAO userDB) { if(userDB == null) { MessageDialog.openWarning(null, "Data Import", Messages.get().TableColumnLIstComposite_1); //$NON-NLS-1$ return; } listTables.clear(); this.userDB = userDB; try { if(userDB != null && userDB.getDBGroup() == DBGroupDefine.MONGODB_GROUP) { List<TableDAO> listCollection = MongoDBQuery.listCollection(userDB); for (TableDAO tableDao : listCollection) { listTables.add( new ModTableDAO(tableDao.getName()) ); } } else { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(userDB); List<TableDAO> showTables = sqlClient.queryForList("tableList", StringUtils.isBlank(userDB.getSchema()) ? userDB.getDb() : userDB.getSchema()); //$NON-NLS-1$ for (TableDAO tableDAO : showTables) { listTables.add( new ModTableDAO(tableDAO.getName()) ); } } } catch (Exception e) { logger.error("DB Connecting... ", e); //$NON-NLS-1$ MessageDialog.openError(null, "Data Import", e.getMessage()); //$NON-NLS-1$ } tableViewer.setInput(listTables); tableViewer.refresh(); // google analytic AnalyticCaller.track("TableColumnLIstComposite"); } public List<ModTableDAO> getListTables() { return listTables; } /** * 사용자가 선택한 테이블 정보만 넘겨줍니다. * @return */ public List<ModTableDAO> getSelectListTables() { List<ModTableDAO> listSelectTable = new ArrayList<ModTableDAO>(); for (ModTableDAO modTableDAO : getListTables()) { if(modTableDAO.isModify()) listSelectTable.add(modTableDAO); } return listSelectTable; } /** * select all */ public void selectAll() { for(ModTableDAO modDAO : getListTables()) { modDAO.setModify(true); } tableViewer.refresh(); } /** * */ public void selectNotAll() { for(ModTableDAO modDAO : getListTables()) { modDAO.setModify(false); } tableViewer.refresh(); } @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } }