// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dq.nodes;
import java.util.List;
import org.talend.core.model.metadata.builder.connection.MetadataTable;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.repository.model.repositoryObject.MetadataColumnRepositoryObject;
import org.talend.core.repository.model.repositoryObject.TdTableRepositoryObject;
import org.talend.core.repository.model.repositoryObject.TdViewRepositoryObject;
import org.talend.cwm.helper.ColumnHelper;
import org.talend.cwm.relational.TdColumn;
import org.talend.cwm.relational.TdSqlDataType;
import org.talend.cwm.relational.TdTable;
import org.talend.cwm.relational.TdView;
import org.talend.repository.model.IRepositoryNode;
import org.talend.repository.model.RepositoryNode;
/**
* DOC klliu Database column repository node displayed on repository view (UI).
*/
public class DBColumnRepNode extends ColumnRepNode {
/**
* DOC klliu DBColumnRepNode constructor comment.
*
* @param object
* @param parent if parent is null will try to create new one to insert of old parent.
* @param type
*/
public DBColumnRepNode(IRepositoryViewObject object, RepositoryNode parent, ENodeType type,
org.talend.core.model.general.Project inWhichProject) {
super(object, parent, type, inWhichProject);
if (object instanceof MetadataColumnRepositoryObject) {
metadataColumnRepositoryObject = (MetadataColumnRepositoryObject) object;
if (parent == null) {
RepositoryNode createParentNode = createParentNode();
this.setParent(createParentNode);
}
}
}
/**
* create node of parent
*
* @param metadataColumnRepositoryObject2
*/
private RepositoryNode createParentNode() {
DBColumnFolderRepNode dbColumnFolderRepNode = new DBColumnFolderRepNode(getParentViewObject(), null,
ENodeType.TDQ_REPOSITORY_ELEMENT, getProject());
dbColumnFolderRepNode.setId(NO_ID);
return dbColumnFolderRepNode;
}
/*
* (non-Javadoc)
*
* @see
* org.talend.dq.nodes.DQRepositoryNode#getParentViewObject(org.talend.core.model.repository.IRepositoryViewObject)
*/
@Override
protected IRepositoryViewObject getParentViewObject() {
IRepositoryViewObject returnViewObject = null;
MetadataTable columnOwnerAsMetadataTable = ColumnHelper.getColumnOwnerAsMetadataTable(getTdColumn());
if (columnOwnerAsMetadataTable instanceof TdTable) {
returnViewObject = new TdTableRepositoryObject(metadataColumnRepositoryObject.getViewObject(),
(TdTable) columnOwnerAsMetadataTable);
} else if (columnOwnerAsMetadataTable instanceof TdView) {
returnViewObject = new TdViewRepositoryObject(metadataColumnRepositoryObject.getViewObject(),
(TdView) columnOwnerAsMetadataTable);
}
return returnViewObject;
}
public TdColumn getTdColumn() {
TdColumn tdColumn = (TdColumn) metadataColumnRepositoryObject.getTdColumn();
return tdColumn;
}
/*
* (non-Jsdoc)
*
* @see org.talend.repository.model.RepositoryNode#getChildren()
*/
@Override
public List<IRepositoryNode> getChildren() {
// MOD gdbu 2011-6-28 bug : 22204
return filterResultsIfAny(super.getChildren());
// ~22204
}
@Override
public String getLabel() {
if (this.getTdColumn() != null) {
return this.getTdColumn().getName();
}
return super.getLabel();
}
public String getNodeDataType() {
TdSqlDataType sqlDataType = this.getTdColumn().getSqlDataType();
return sqlDataType.getName();
}
public boolean isKey() {
return ColumnHelper.isPrimaryKey(this.getTdColumn());
}
/*
* (non-Javadoc)
*
* @see org.talend.repository.model.RepositoryNode#getDisplayText()
*/
@Override
public String getDisplayText() {
return getLabel() + "(" + getNodeDataType() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
}