/*******************************************************************************
* 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:
* nilriri - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.rdb.core.viewers.object.sub.rdb.table;
import org.apache.log4j.Logger;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import com.hangum.tadpole.engine.define.DBGroupDefine;
import com.hangum.tadpole.engine.query.dao.mysql.TableColumnDAO;
import com.hangum.tadpole.engine.query.dao.mysql.TableDAO;
import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
import com.hangum.tadpole.rdb.core.viewers.object.sub.utils.TableColumnObjectQuery;
/**
* column comment editor
*
* @author nilriri
*
*/
public class ColumnCommentEditorSupport extends EditingSupport {
private static final Logger logger = Logger.getLogger(ColumnCommentEditorSupport.class);
private final TableViewer tableviewer;
private final TableViewer viewer;
private UserDBDAO userDB;
private int column;
/**
*
* @param viewer
* @param explorer
*/
public ColumnCommentEditorSupport(TableViewer tableviewer, TableViewer viewer, UserDBDAO userDB, int column) {
super(viewer);
this.tableviewer = tableviewer;
this.viewer = viewer;
this.userDB = userDB;
this.column = column;
}
@Override
protected CellEditor getCellEditor(Object element) {
if(column == 3) return new CommentCellEditor(column, viewer);
else return null;
}
@Override
protected boolean canEdit(Object element) {
if(column == 3) {
if(DBGroupDefine.ORACLE_GROUP == userDB.getDBGroup() ||
DBGroupDefine.POSTGRE_GROUP == userDB.getDBGroup() ||
DBGroupDefine.MSSQL_GROUP == userDB.getDBGroup() ||
DBGroupDefine.MYSQL_GROUP == userDB.getDBGroup() ) {
return true;
}
}
return false;
}
@Override
protected Object getValue(Object element) {
try {
TableColumnDAO dao = (TableColumnDAO) element;
String comment = dao.getComment();
return comment == null ? "" : comment;
} catch (Exception e) {
logger.error("getValue error ", e);
return "";
}
}
@Override
protected void setValue(Object element, Object value) {
IStructuredSelection is = (IStructuredSelection) tableviewer.getSelection();
final TableDAO tableDAO = (TableDAO)is.getFirstElement();
String comment = "";
try {
TableColumnDAO columnDAO = (TableColumnDAO) element;
comment = (String) (value == null ? "" : value);
if(logger.isDebugEnabled()) logger.debug("dao column name is " + columnDAO.getField());
// 기존 코멘트와 다를때만 db에 반영한다.
if (!(comment.equals(columnDAO.getComment()))) {
columnDAO.setComment(comment);
TableColumnObjectQuery.updateComment(userDB, tableDAO, columnDAO);
}
viewer.update(element, null);
} catch (Exception e) {
logger.error("setValue error ", e);
}
}
}