/*******************************************************************************
* 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.connections;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine;
import com.hangum.tadpole.engine.define.DBDefine;
import com.hangum.tadpole.engine.permission.PermissionChecker;
import com.hangum.tadpole.engine.query.dao.ManagerListDTO;
import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
import com.hangum.tadpole.engine.query.dao.system.UserDBResourceDAO;
import com.hangum.tadpole.engine.query.dao.system.userdb.DBOtherDAO;
import com.hangum.tadpole.engine.query.dao.system.userdb.ResourcesDAO;
import com.hangum.tadpole.rdb.core.Activator;
import com.hangum.tadpole.rdb.core.Messages;
import com.swtdesigner.ResourceManager;
/**
* manager view label provider
*
* @author hangum
*
*/
public class ManagerLabelProvider extends ColumnLabelProvider {
private static final Logger logger = Logger.getLogger(ManagerLabelProvider.class);
// /** production markup start tag */
// public static String PRODUCTION_SERVER_START_TAG = "<em style='color:rgb(255, 0, 0)'>"; //$NON-NLS-1$
// /** development markup start tag */
// public static String DEVELOPMENT_SERVER_START_TAG = "<em style='color:rgb(224, 224, 224)'>"; //$NON-NLS-1$
// /** development markup start tag */
// public static String INFO_SERVER_START_TAG = "<em style='color:rgb(145, 129, 129)'>"; //$NON-NLS-1$
//
// /** Markup end tag */
// public static String END_TAG = "</em>"; //$NON-NLS-1$
//
@Override
public String getToolTipText(Object element) {
if(element instanceof UserDBDAO) {
UserDBDAO userDB = (UserDBDAO)element;
String retText = "";
if(PublicTadpoleDefine.DBOperationType.PRODUCTION.toString().equals(userDB.getOperation_type())) {
retText += String.format(Messages.get().DBType, userDB.getOperation_type());
}
// master, slave 표시
if(!StringUtils.isBlank(userDB.getDuplication_type())) {
retText += String.format(Messages.get().DBReplication, userDB.getDuplication_type());
}
if("YES".equals(userDB.getReadonly())) {
retText += String.format(Messages.get().DBReadOnly, userDB.getReadonly());
}
return retText;
}
return null;
}
@Override
public Point getToolTipShift(Object object) {
return new Point(1, 1);
}
@Override
public int getToolTipDisplayDelayTime(Object object) {
return 0;
}
@Override
public int getToolTipTimeDisplayed(Object object) {
return 5000;
}
/**
* get group image
*
* @return
*/
public static Image getGroupImage() {
return ResourceManager.getPluginImage(Activator.PLUGIN_ID, "resources/icons/server_database.png"); //$NON-NLS-1$
}
/**
* user label text
*
* @param userDB
* @return
*/
public static String getDBText(UserDBDAO userDB) {
String retText = "";
if(PublicTadpoleDefine.DBOperationType.PRODUCTION.toString().equals(userDB.getOperation_type())) {
// retText = String.format("%s [%s] %s", PRODUCTION_SERVER_START_TAG, StringUtils.substring(userDB.getOperation_type(), 0, 1), END_TAG);
retText = String.format("[%s]", StringUtils.substring(userDB.getOperation_type(), 0, 1));
// } else {
// retText = String.format("%s [%s] %s", DEVELOPMENT_SERVER_START_TAG, StringUtils.substring(userDB.getOperation_type(), 0, 1), END_TAG);
}
// master, slave 표시
if(!StringUtils.isBlank(userDB.getDuplication_type())) {
retText += String.format("[%s]", StringUtils.substring(userDB.getDuplication_type(), 0, 1)); //$NON-NLS-3$
}
String strReadOnly = userDB.getReadonly();
if(strReadOnly.equalsIgnoreCase("YES")) {
retText += String.format("[R]"); //$NON-NLS-3$
}
if(PermissionChecker.isDBAdminRole(userDB)) {
if(userDB.getDBDefine() == DBDefine.SQLite_DEFAULT) {
retText += String.format("%s", userDB.getDisplay_name()); //$NON-NLS-3$
} else {
retText += String.format("%s (%s)", userDB.getDisplay_name(), userDB.getUsers()); //$NON-NLS-3$
}
} else {
// 프러덕이나 백업디비이면디비 이름만보이면 됨.
if(PermissionChecker.isProductBackup(userDB)) {
retText += userDB.getDisplay_name();
// 기타 디비 이면 다 보이면 됨.
} else {
if(userDB.getDBDefine() == DBDefine.SQLite_DEFAULT) {
retText += String.format("%s", userDB.getDisplay_name()); //$NON-NLS-3$
} else {
retText += String.format("%s (%s)", userDB.getDisplay_name(), userDB.getUsers()); //$NON-NLS-3$
}
}
}
return retText;
}
@Override
public Image getImage(Object element) {
if(element instanceof ManagerListDTO) {
return getGroupImage();
} else if(element instanceof UserDBDAO) {
return DBIconsUtils.getDBConnectionImage((UserDBDAO)element);
} else if(element instanceof ResourcesDAO) {
return ResourceManager.getPluginImage(Activator.PLUGIN_ID, "resources/icons/managerExplorer/resources.png"); //$NON-NLS-1$
} else if(element instanceof UserDBResourceDAO) {
UserDBResourceDAO dao = (UserDBResourceDAO)element;
Image baseImage = null;
if(PublicTadpoleDefine.RESOURCE_TYPE.SQL.toString().equals( dao.getResource_types())) {
baseImage = ResourceManager.getPluginImage(Activator.PLUGIN_ID, "resources/icons/sql-query.png"); //$NON-NLS-1$
} else if(PublicTadpoleDefine.RESOURCE_TYPE.ERD.toString().equals( dao.getResource_types())) {
baseImage = ResourceManager.getPluginImage(Activator.PLUGIN_ID, "resources/icons/erd.png"); //$NON-NLS-1$
}
// 이미지 캐쉬에 문제가 있어서 주석처리.
// if(PublicTadpoleDefine.SHARED_TYPE.PRIVATE.name().equals(dao.getShared_type())) {
// try {
// baseImage = DBIconsUtils.getDecorateImage(baseImage, "resources/icons/lock_0.28.png", ResourceManager.TOP_RIGHT);
// } catch(Exception e) {
// logger.error("image decorate error", e);
// }
// }
return baseImage;
} else if(element instanceof DBOtherDAO) {
return ResourceManager.getPluginImage(Activator.PLUGIN_ID, "resources/icons/managerExplorer/extension.png"); //$NON-NLS-1$
}
return super.getImage(element);
}
@Override
public String getText(Object element) {
if(element instanceof ManagerListDTO) {
ManagerListDTO dto = (ManagerListDTO)element;
return dto.getName();
} else if(element instanceof UserDBDAO) {
return getDBText((UserDBDAO)element);
} else if(element instanceof ResourcesDAO) {
ResourcesDAO dto = (ResourcesDAO)element;
return dto.getName();
} else if(element instanceof UserDBResourceDAO) {
UserDBResourceDAO dao = (UserDBResourceDAO)element;
String strShareType = "[Pu] ";
if(PublicTadpoleDefine.SHARED_TYPE.PRIVATE.name().equals(dao.getShared_type())) {
strShareType = "[Pr] ";
}
String strSupportAPI = PublicTadpoleDefine.YES_NO.YES.name().equals(dao.getRestapi_yesno())?
// String.format("%s [%s] %s", INFO_SERVER_START_TAG, dao.getRestapi_uri(), END_TAG):"";
String.format("[%s]", dao.getRestapi_uri()):"";
String strComment = "".equals(dao.getDescription())?"":" (" + dao.getDescription() + ")";
return strShareType + dao.getName() + " " + strSupportAPI + strComment;
} else if(element instanceof DBOtherDAO) {
DBOtherDAO dao = (DBOtherDAO)element;
if("".equals(dao.getComment()) || "null".equals(dao.getComment()) || null == dao.getComment()) return dao.getName();
else return String.format("%s (%s)", dao.getName(), dao.getComment());
}
return "## not set ##"; //$NON-NLS-1$
}
}