// ============================================================================
//
// 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.dataprofiler.core.ui.views;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.talend.commons.emf.FactoriesUtil;
import org.talend.commons.utils.platform.PluginChecker;
import org.talend.core.model.context.ContextUtils;
import org.talend.core.model.metadata.builder.connection.Connection;
import org.talend.core.model.metadata.builder.connection.DatabaseConnection;
import org.talend.core.model.metadata.builder.connection.DelimitedFileConnection;
import org.talend.core.model.metadata.builder.connection.FileConnection;
import org.talend.core.model.metadata.builder.database.JavaSqlFactory;
import org.talend.core.model.metadata.builder.database.dburl.SupportDBUrlType;
import org.talend.core.model.properties.ConnectionItem;
import org.talend.core.model.properties.ContextItem;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.Property;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.ui.CoreUIPlugin;
import org.talend.cwm.db.connection.ConnectionUtils;
import org.talend.cwm.helper.ColumnHelper;
import org.talend.cwm.helper.ResourceHelper;
import org.talend.cwm.helper.TableHelper;
import org.talend.cwm.helper.TaggedValueHelper;
import org.talend.cwm.relational.TdColumn;
import org.talend.cwm.relational.TdTable;
import org.talend.dataprofiler.core.PluginConstant;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.ui.editor.CommonFormEditor;
import org.talend.dataprofiler.core.ui.exchange.ExchangeComponentRepNode;
import org.talend.dataprofiler.core.ui.utils.WorkbenchUtils;
import org.talend.dataprofiler.ecos.model.IEcosComponent;
import org.talend.dataquality.analysis.Analysis;
import org.talend.dataquality.analysis.AnalysisContext;
import org.talend.dataquality.analysis.AnalysisParameters;
import org.talend.dataquality.domain.pattern.Pattern;
import org.talend.dataquality.domain.pattern.PatternComponent;
import org.talend.dataquality.domain.pattern.RegularExpression;
import org.talend.dataquality.helpers.MetadataHelper;
import org.talend.dataquality.helpers.ReportHelper;
import org.talend.dataquality.properties.TDQAnalysisItem;
import org.talend.dataquality.properties.TDQPatternItem;
import org.talend.dataquality.properties.TDQReportItem;
import org.talend.dataquality.reports.TdReport;
import org.talend.dq.helper.resourcehelper.AnaResourceFileHelper;
import org.talend.dq.helper.resourcehelper.PatternResourceFileHelper;
import org.talend.dq.helper.resourcehelper.RepResourceFileHelper;
import org.talend.dq.nodes.AnalysisRepNode;
import org.talend.dq.nodes.DBCatalogRepNode;
import org.talend.dq.nodes.DBColumnRepNode;
import org.talend.dq.nodes.DBConnectionRepNode;
import org.talend.dq.nodes.DBSchemaRepNode;
import org.talend.dq.nodes.DBTableRepNode;
import org.talend.dq.nodes.DBViewRepNode;
import org.talend.dq.nodes.DFConnectionRepNode;
import org.talend.dq.nodes.DQRepositoryNode;
import org.talend.dq.nodes.PatternLanguageRepNode;
import org.talend.dq.nodes.PatternRepNode;
import org.talend.dq.nodes.ReportRepNode;
import org.talend.dq.nodes.RuleRepNode;
import org.talend.dq.nodes.SourceFileRepNode;
import org.talend.dq.nodes.SysIndicatorDefinitionRepNode;
import org.talend.repository.model.IRepositoryNode;
import org.talend.resource.ResourceManager;
import org.talend.utils.exceptions.MissingDriverException;
import orgomg.cwm.foundation.softwaredeployment.DataManager;
import orgomg.cwm.objectmodel.core.Expression;
import orgomg.cwm.objectmodel.core.ModelElement;
import orgomg.cwm.resource.relational.Catalog;
import orgomg.cwm.resource.relational.PrimaryKey;
import orgomg.cwm.resource.relational.Schema;
import orgomg.cwmx.analysis.informationreporting.Report;
/**
* Detail view of the Data profiler.
*
* @author qzhang
*/
public class RespositoryDetailView extends ViewPart implements ISelectionListener {
private Group gContainer;
private Group tContainer;
private ScrolledComposite scomp = null;
private Composite composite = null;
public static final String ID = "org.talend.dataprofiler.core.ui.views.RespositoryDetailView"; //$NON-NLS-1$
Logger log = Logger.getLogger(RespositoryDetailView.class);
/**
* DOC qzhang RespositoryDetailView constructor comment.
*/
public RespositoryDetailView() {
}
@Override
public void createPartControl(Composite parent) {
// css
CoreUIPlugin.setCSSClass(parent, this.getClass().getSimpleName());
Composite comp = new Composite(parent, SWT.NONE);
comp.setLayout(new FillLayout());
scomp = new ScrolledComposite(comp, SWT.H_SCROLL | SWT.V_SCROLL);
scomp.setLayout(new FillLayout());
composite = new Composite(scomp, SWT.NONE);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
scomp.setExpandHorizontal(true);
scomp.setExpandVertical(true);
scomp.setContent(composite);
gContainer = new Group(composite, SWT.NONE);
gContainer.setText(DefaultMessagesImpl.getString("RespositoryDetailView.group.General")); //$NON-NLS-1$
GridLayout layout = new GridLayout(2, false);
GridData data = new GridData(GridData.FILL_BOTH);
gContainer.setLayout(layout);
gContainer.setLayoutData(data);
// create extend group
if (PluginChecker.isTDQLoaded()) {
tContainer = new Group(composite, SWT.NONE);
tContainer.setText(DefaultMessagesImpl.getString("RespositoryDetailView.group.Technical")); //$NON-NLS-1$
tContainer.setLayout(new GridLayout(2, false));
tContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
createExtDefault();
}
createDefault();
getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(this);
initializeToolBar();
}
private void createTechnicalDetail(EObject fe) {
if (fe == null) {
return;
}
newLabelAndText(tContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.group.Identifier"), ResourceHelper.getUUID(fe)); //$NON-NLS-1$
// MOD xqliu 2009-4-27 bug 6507
newLabelAndText(tContainer, DefaultMessagesImpl.getString("RespositoryDetailView.group.FilePath"), //$NON-NLS-1$
fe.eResource() == null ? "" : fe.eResource().getURI().toPlatformString(false)); //$NON-NLS-1$
// ~
}
private void createTechnicalDetail(IRepositoryViewObject reposViewObj) {
// MOD klliu the DQRepositoryview unified with tos, so refactor as follow bug 19154 2011-02-28
if (reposViewObj.getProperty() != null) {
Item item = reposViewObj.getProperty().getItem();
if (item instanceof ConnectionItem) {
Connection conn = ((ConnectionItem) item).getConnection();
createTechnicalDetail(conn);
} else if (item instanceof TDQAnalysisItem) {
Analysis analysis = ((TDQAnalysisItem) item).getAnalysis();
createTechnicalDetail(analysis);
} else if (item instanceof TDQPatternItem) {
Pattern pattern = ((TDQPatternItem) item).getPattern();
createTechnicalDetail(pattern);
} else if (item instanceof TDQReportItem) {
Report report = ((TDQReportItem) item).getReport();
createTechnicalDetail(report);
}
}
}
private void createTechnicalDetail(IFile fe) {
EObject object = getEObject(fe);
if (object != null) {
createTechnicalDetail(object);
}
}
private void createDefault() {
// feature 19053
if (!gContainer.isDisposed()) {
newText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.noAvailable")); //$NON-NLS-1$
}
}
private void createExtDefault() {
// feature 19053
if (!tContainer.isDisposed()) {
newText(tContainer, DefaultMessagesImpl.getString("RespositoryDetailView.noAvailable")); //$NON-NLS-1$
}
}
@Override
public void setFocus() {
gContainer.setFocus();
}
/*
* (non-Javadoc)
*
* @seeorg.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui. IWorkbenchPart,
* org.eclipse.jface.viewers.ISelection)
*/
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
clearContainer();
boolean isNeedcreateDefault = true;
try {
if (part instanceof DQRespositoryView) {
StructuredSelection sel = (StructuredSelection) selection;
// MOD by zshen for bug 15750 TODO 39(13) make Detail View can be used.
Object fe = sel.getFirstElement();
// MOD klliu 2011-02-24 if choose diffirent node ,that will load diffirent child ,so that not use up.
if (fe instanceof AnalysisRepNode || fe instanceof ReportRepNode || fe instanceof SysIndicatorDefinitionRepNode
|| fe instanceof PatternRepNode || fe instanceof RuleRepNode) {
fe = ((IRepositoryNode) fe).getObject();
}
if (fe instanceof IFile) {
IFile fe2 = (IFile) fe;
isNeedcreateDefault = createFileDetail(isNeedcreateDefault, fe2);
} else if (fe instanceof IRepositoryViewObject) {
isNeedcreateDefault = createFileDetail(isNeedcreateDefault, (IRepositoryViewObject) fe);
} else if (fe instanceof DBConnectionRepNode) {
DBConnectionRepNode connNode = (DBConnectionRepNode) fe;
// MOD sizhaoliu TDQ-6316
ConnectionItem connectionItem = (ConnectionItem) connNode.getObject().getProperty().getItem();
createDataProviderDetail(connectionItem);
isNeedcreateDefault = false;
} else if (fe instanceof DBCatalogRepNode) {
DBCatalogRepNode catalogNode = (DBCatalogRepNode) fe;
Catalog catalog = catalogNode.getCatalog();
createTdCatalogDetail(catalog);
isNeedcreateDefault = false;
} else if (fe instanceof DBSchemaRepNode) {
DBSchemaRepNode schemaNode = (DBSchemaRepNode) fe;
Schema schema = schemaNode.getSchema();
createTdSchemaDetail(schema);
isNeedcreateDefault = false;
} else if (fe instanceof DBTableRepNode) {
DBTableRepNode tableNode = (DBTableRepNode) fe;
// MOD gdbu 2011-9-14 TDQ-3243
if (!DQRepositoryNode.isOnFilterring()) {
tableNode.getChildren().get(0).getChildren();
}
// ~TDQ-3243
TdTable tdTable = tableNode.getTdTable();
createTableDetail(tdTable);
isNeedcreateDefault = false;
} else if (fe instanceof DBViewRepNode) {
DBViewRepNode viewNode = (DBViewRepNode) fe;
// MOD gdbu 2011-9-14 TDQ-3243
if (!DQRepositoryNode.isOnFilterring()) {
viewNode.getChildren().get(0).getChildren();
}
// ~TDQ-3243
createNameCommentDetail(viewNode.getTdView());
isNeedcreateDefault = false;
} else if (fe instanceof DBColumnRepNode) {
DBColumnRepNode columnNode = (DBColumnRepNode) fe;
TdColumn column = columnNode.getTdColumn();
createTdColumn(column);
isNeedcreateDefault = false;
} else if (fe instanceof IEcosComponent) {
IEcosComponent component = (IEcosComponent) fe;
createEcosComponent(component);
isNeedcreateDefault = false;
} else if (fe instanceof RegularExpression) {
// MOD mzhao 2009-04-20,Bug 6349.
RegularExpression regularExpression = (RegularExpression) fe;
createRegularExpression(regularExpression);
isNeedcreateDefault = false;
} else if (fe instanceof PatternLanguageRepNode) {
// MOD mzhao 2012-08-15,feature TDQ-4037.
PatternLanguageRepNode pattLangNode = (PatternLanguageRepNode) fe;
createRegularExpression(pattLangNode.getRegularExpression());
isNeedcreateDefault = false;
} else if (fe instanceof SourceFileRepNode) {
// MOD klliu 2001-02-28 bug 19154
IPath filePath = WorkbenchUtils.getFilePath((SourceFileRepNode) fe);
DQRepositoryNode node = (DQRepositoryNode) fe;
IFile file = ResourceManager.getRoot().getProject(node.getProject().getTechnicalLabel()).getFile(filePath);
createSqlFileDetail(file);
} else if (fe instanceof ExchangeComponentRepNode) {
// MOD klliu 2001-02-28 bug 19154
IEcosComponent ecosComponent = ((ExchangeComponentRepNode) fe).getEcosComponent();
IEcosComponent component = ecosComponent;
createEcosComponent(component);
isNeedcreateDefault = false;
// ADD by msjian 2011-5-12 21186: don't check whether the selected object is "MDMConnectionRepNode"
} else if (fe instanceof DFConnectionRepNode) {
DFConnectionRepNode dfNode = (DFConnectionRepNode) fe;
DelimitedFileConnection dfConnection = dfNode.getDfConnection();
createDFconnectionName(dfNode.getObject().getLabel());
createDataProviderDetail(dfConnection);
isNeedcreateDefault = false;
}
if (PluginChecker.isTDQLoaded()) {
if (fe instanceof EObject) {
createTechnicalDetail((EObject) fe);
} else if (fe instanceof IFile) {
createTechnicalDetail((IFile) fe);
} else if (fe instanceof IRepositoryViewObject) {
createTechnicalDetail((IRepositoryViewObject) fe);
} else {
createExtDefault();
}
}
if (!scomp.isDisposed()) {
scomp.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
composite.layout();
}
} else if (part instanceof CommonFormEditor) {
CommonFormEditor editor = (CommonFormEditor) part;
IEditorInput editorInput = editor.getEditorInput();
if (editorInput instanceof IFileEditorInput) {
IFileEditorInput input = (IFileEditorInput) editorInput;
IFile file = input.getFile();
isNeedcreateDefault = createFileDetail(isNeedcreateDefault, file);
}
}
if (isNeedcreateDefault) {
createDefault();
}
// feature 19053
if (!gContainer.isDisposed()) {
gContainer.layout();
if (tContainer != null) {
tContainer.layout();
}
}
} catch (MissingDriverException e) {
if (PluginChecker.isOnlyTopLoaded()) {
MessageDialog.openWarning(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
DefaultMessagesImpl.getString("RespositoryDetailView.warning"), //$NON-NLS-1$
e.getErrorMessage());
} else {
log.error(e, e);
}
}
}
/**
* DOC klliu Comment method "createDFconnectionName".
*
* @param label
*/
private void createDFconnectionName(String label) {
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.name"), label); //$NON-NLS-1$
}
/**
* DOC bZhou Comment method "createEcosComponent".
*
* @param component
*/
private void createEcosComponent(IEcosComponent component) {
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.Name"), component.getName()); //$NON-NLS-1$
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.Author"), component.getAuthor()); //$NON-NLS-1$
newLabelAndText(gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.Description"), component.getDescription()); //$NON-NLS-1$
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.Type"), component.getCategry().getName()); //$NON-NLS-1$
}
private void createRegularExpression(RegularExpression regularExpression) {
newLabelAndText(gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.Expression"), regularExpression.getExpression().getBody()); //$NON-NLS-1$
}
private void createTableDetail(TdTable table) {
createNameCommentDetail(table);
List<PrimaryKey> primaryKeys = TableHelper.getPrimaryKeys(table);
newLabelAndText(
gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.PrimaryKeys"), primaryKeys.isEmpty() ? null : primaryKeys.get(0).getName() + "(" + String.valueOf(primaryKeys.get(0).getFeature().size()) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
Map<String, Integer> foreignInfo = TableHelper.getForeignKeysInformation(table);
String[] foreignNameArray = foreignInfo.keySet().toArray(new String[foreignInfo.keySet().size()]);
newLabelAndText(
gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.Foreignkeys"), foreignNameArray.length == 0 ? null : foreignNameArray[0] + "(" + foreignInfo.get(foreignNameArray[0]) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
for (int i = 1; i < foreignNameArray.length; i++) {
newLabelAndText(gContainer, "", foreignNameArray[i] + "(" + foreignInfo.get(foreignNameArray[i]) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
if (PluginChecker.isTDQLoaded()) {
String conceptName = TaggedValueHelper.getValueString(TaggedValueHelper.CONCEPT_NAME, table);
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.semanticName"), conceptName); //$NON-NLS-1$
}
}
private boolean createFileDetail(boolean is, IFile fe2) {
if (fe2.getFileExtension().equals(FactoriesUtil.PATTERN)) {
Pattern pattern = PatternResourceFileHelper.getInstance().findPattern(fe2);
createPatternDetail(pattern);
is = false;
} else if (fe2.getFileExtension().equals(FactoriesUtil.ANA)) {
Analysis ana = AnaResourceFileHelper.getInstance().findAnalysis(fe2);
createAnaysisDetail(ana);
is = false;
} else if (fe2.getFileExtension().equals(FactoriesUtil.REP)) {
TdReport rep = RepResourceFileHelper.getInstance().findReport(fe2);
createReportDetail(rep);
is = false;
} else if (fe2.getFileExtension().equals(FactoriesUtil.SQL)) {
createSqlFileDetail(fe2);
is = false;
}
return is;
}
private boolean createFileDetail(boolean is, IRepositoryViewObject reposViewObj) {
// MOD klliu 2001-02-28 bug 19154
if (reposViewObj.getProperty() != null) {
Item item = reposViewObj.getProperty().getItem();
if (item instanceof ConnectionItem) {
Connection conn = ((ConnectionItem) item).getConnection();
createDataProviderDetail(conn);
is = false;
}
if (item instanceof TDQAnalysisItem) {
Analysis analysis = ((TDQAnalysisItem) item).getAnalysis();
createAnaysisDetail(analysis);
is = false;
}
if (item instanceof TDQPatternItem) {
Pattern pattern = ((TDQPatternItem) item).getPattern();
createPatternDetail(pattern);
is = false;
}
if (item instanceof TDQReportItem) {
Report report = ((TDQReportItem) item).getReport();
createReportDetail(report);
is = false;
}
}
return is;
}
private EObject getEObject(IFile fe2) {
EObject object = null;
if (fe2.getFileExtension().equals(FactoriesUtil.PATTERN)) {
object = PatternResourceFileHelper.getInstance().findPattern(fe2);
} else if (fe2.getFileExtension().equals(FactoriesUtil.ANA)) {
object = AnaResourceFileHelper.getInstance().findAnalysis(fe2);
} else if (fe2.getFileExtension().equals(FactoriesUtil.REP)) {
object = RepResourceFileHelper.getInstance().findReport(fe2);
}
return object;
}
private void createPatternDetail(Pattern pattern) {
createName(pattern);
createPurpose(pattern);
createDescription(pattern);
EList<PatternComponent> components = pattern.getComponents();
StringBuilder description = new StringBuilder();
for (PatternComponent poc : components) {
if (poc instanceof RegularExpression) {
RegularExpression expression = (RegularExpression) poc;
description.append(" ").append(expression.getExpression().getLanguage()); //$NON-NLS-1$
}
}
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.type"), description.toString().trim()); //$NON-NLS-1$
}
private void createAnaysisDetail(Analysis ana) {
if (ana == null) {
return;
}
createName(ana);
createPurpose(ana);
createDescription(ana);
AnalysisParameters parameters = ana.getParameters();
String description = parameters == null ? null : parameters.getAnalysisType().getLiteral();
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.otherType"), description); //$NON-NLS-1$
AnalysisContext context = ana.getContext();
int numn = context == null ? 0 : context.getAnalysedElements().size();
newLabelAndText(gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.numberOfAnalyzedElements"), String.valueOf(numn)); //$NON-NLS-1$
DataManager connection = context == null ? null : context.getConnection();
if (connection == null) {
description = null;
} else {
description = connection.getName();
}
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.connection"), description); //$NON-NLS-1$
}
private void newText(Composite composite, String inputText) {
newText(composite, inputText, DefaultMessagesImpl.getString("RespositoryDetailView.none")); //$NON-NLS-1$
}
private void newLabelAndText(Composite composite, String labelString, String inputText) {
if (composite.isDisposed()) {
return;
}
Label label = new Label(composite, SWT.NONE);
label.setText(labelString);
newText(composite, inputText, DefaultMessagesImpl.getString("RespositoryDetailView.none")); //$NON-NLS-1$
}
private void newText(Composite composite, String inputText, String defaultText) {
Text text = new Text(composite, SWT.NONE);
text.setEditable(false);
if (inputText == null || inputText.trim().length() == 0) {
text.setForeground(text.getDisplay().getSystemColor(SWT.COLOR_RED));
text.setText(defaultText);
} else {
text.setText(inputText);
}
GridData data = new GridData(GridData.FILL_HORIZONTAL);
text.setLayoutData(data);
}
private void createSqlFileDetail(IFile fe2) {
newLabelAndText(gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.filename"), fe2.getFullPath().toPortableString()); //$NON-NLS-1$
// MODSCA 20080728 changed to getLocalTimeStamp() because
// modificationStamp was 1 or 2 (=> year 1970)
// long modificationStamp = fe2.getModificationStamp();
long modificationStamp = fe2.getLocalTimeStamp();
newLabelAndText(gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.modificationDate"), new Date(modificationStamp).toString()); //$NON-NLS-1$
}
private void createReportDetail(Report rep) {
createName(rep);
createPurpose(rep);
createDescription(rep);
int description = ReportHelper.getAnalyses(rep).size();
newLabelAndText(gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.numberOfAnalyses"), String.valueOf(description)); //$NON-NLS-1$
}
private void createTdColumn(TdColumn column) {
createNameCommentDetail(column);
newLabelAndText(
gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.typex"), column.getSqlDataType() != null ? column.getSqlDataType().getName() : ""); //$NON-NLS-1$ //$NON-NLS-2$
String purpose = "" + column.isNullable(); //$NON-NLS-1$
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.nullable"), purpose); //$NON-NLS-1$
final Expression initialValue = column.getInitialValue();
String defValueText = (initialValue != null) ? initialValue.getBody() : null;
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.DefaultValue"), defValueText); //$NON-NLS-1$
newLabelAndText(gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.Size"), String.valueOf(column.getLength())); //$NON-NLS-1$
if (PluginChecker.isTDQLoaded()) {
String semanticName = TaggedValueHelper.getValueString(TaggedValueHelper.SEMANTIC_NAME, column);
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.semanticName"), semanticName); //$NON-NLS-1$
}
}
private void createNameCommentDetail(ModelElement element) {
createName(element);
String purpose = ColumnHelper.getComment(element);
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.remarks"), purpose); //$NON-NLS-1$
}
private void createName(ModelElement element) {
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.name"), element.getName()); //$NON-NLS-1$
}
private void createContextDetail(Connection connection) {
if (connection == null) {
return;
}
String contextId = connection.getContextId();
if (contextId != null && !contextId.equals(PluginConstant.EMPTY_STRING)) {
ContextItem contextItem = ContextUtils.getContextItemById2(contextId);
if (contextItem != null) {
newLabelAndText(
gContainer,
DefaultMessagesImpl.getString("RespositoryDetailView.contextGroupName"), contextItem.getProperty().getLabel()); //$NON-NLS-1$
}
}
String contextName = connection.getContextName();
if (contextName != null) {
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.contextName"), contextName); //$NON-NLS-1$
}
}
private void createTdSchemaDetail(Schema schema) {
createName(schema);
}
private void createTdCatalogDetail(Catalog catalog) {
createName(catalog);
}
private void createDataProviderDetail(ConnectionItem connectionItem) {
Connection dataProvider = connectionItem.getConnection();
Property dbProperty = connectionItem.getProperty();
boolean isDelimitedFile = ConnectionUtils.isDelimitedFileConnection(dataProvider);
// MOD qiongli 2011-9-21 TDQ-3317
Connection origValueConn = null;
if (dataProvider.isContextMode()) {
if (dataProvider instanceof DatabaseConnection) {
origValueConn = ConnectionUtils.getOriginalDatabaseConnection((DatabaseConnection) dataProvider);
} else if (dataProvider instanceof FileConnection) {
origValueConn = ConnectionUtils.getOriginalFileConnection((FileConnection) dataProvider);
}
}
if (!isDelimitedFile) {
createName(origValueConn == null ? dataProvider : origValueConn);
}
if (origValueConn != null) {
createContextDetail(dataProvider);
}
if (dbProperty != null) {
createPurpose(dbProperty);
createDescription(dbProperty);
} else {
createPurpose(origValueConn == null ? dataProvider : origValueConn);
createDescription(origValueConn == null ? dataProvider : origValueConn);
}
// MOD mzhao xmldb have no actual connection.
if (dataProvider != null) {
String connectionString = JavaSqlFactory.getURL(dataProvider);
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.URL"), connectionString); //$NON-NLS-1$
}
// MOD gdbu 2011-9-16 TDQ-3337
String subtype = PluginConstant.EMPTY_STRING;
String version = PluginConstant.EMPTY_STRING;
if (dataProvider instanceof DatabaseConnection) {
subtype = TaggedValueHelper.getValueString(TaggedValueHelper.DB_PRODUCT_NAME, dataProvider);
if (PluginConstant.EMPTY_STRING.equals(subtype)) { // tagged values not present in local connection file.
ConnectionUtils.updataTaggedValueForConnectionItem(dataProvider);
subtype = TaggedValueHelper.getValueString(TaggedValueHelper.DB_PRODUCT_NAME, dataProvider);
if (!PluginConstant.EMPTY_STRING.equals(subtype)) {
version = TaggedValueHelper.getValueString(TaggedValueHelper.DB_PRODUCT_VERSION, dataProvider);
}
} else {
version = TaggedValueHelper.getValueString(TaggedValueHelper.DB_PRODUCT_VERSION, dataProvider);
}
} else {
subtype = isDelimitedFile ? SupportDBUrlType.DELIMITEDFILE.getLanguage() : PluginConstant.EMPTY_STRING;
if (!DQRepositoryNode.isOnFilterring()) {
version = PluginConstant.EMPTY_STRING;
}
}
// ~TDQ-3337
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.type2"), subtype); //$NON-NLS-1$
newLabelAndText(gContainer, "Version: ", version); //$NON-NLS-1$
}
private void createDataProviderDetail(Connection dataProvider) {
}
/**
* DOC xqliu Comment method "createDescription".
*
* @param dataProvider
* @deprecated use createDescription(Property prop) instead of it
*/
@Deprecated
private void createDescription(ModelElement dataProvider) {
String description = MetadataHelper.getDescription(dataProvider);
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.description"), description); //$NON-NLS-1$
}
/**
* DOC xqliu Comment method "createPurpose".
*
* @param dataProvider
* @deprecated use createPurpose(Property prop) instead of it
*/
@Deprecated
private void createPurpose(ModelElement dataProvider) {
String purpose = MetadataHelper.getPurpose(dataProvider);
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.purpose"), purpose); //$NON-NLS-1$
}
/**
* create the Description's Label and Text by the Property.
*
* @param prop
*/
private void createDescription(Property prop) {
String description = prop.getDescription() == null ? PluginConstant.EMPTY_STRING : prop.getDescription();
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.description"), description); //$NON-NLS-1$
}
/**
* create the Purpose's Label and Text by the Property.
*
* @param prop
*/
private void createPurpose(Property prop) {
String purpose = prop.getPurpose() == null ? PluginConstant.EMPTY_STRING : prop.getPurpose();
newLabelAndText(gContainer, DefaultMessagesImpl.getString("RespositoryDetailView.purpose"), purpose); //$NON-NLS-1$
}
private void clearContainer() {
if (gContainer != null && !gContainer.isDisposed()) {
Control[] children = gContainer.getChildren();
for (Control control : children) {
control.dispose();
}
}
if (tContainer != null && !tContainer.isDisposed()) {
Control[] children = tContainer.getChildren();
for (Control control : children) {
control.dispose();
}
}
}
private void initializeToolBar() {
getViewSite().getActionBars().getToolBarManager();
}
}