// ============================================================================
//
// 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.editor.analysis;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
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.MetadataTable;
import org.talend.core.model.metadata.builder.database.DqRepositoryViewService;
import org.talend.core.model.metadata.builder.database.JavaSqlFactory;
import org.talend.core.model.metadata.builder.database.dburl.SupportDBUrlStore;
import org.talend.core.repository.model.repositoryObject.MetadataTableRepositoryObject;
import org.talend.cwm.helper.CatalogHelper;
import org.talend.cwm.helper.ColumnSetHelper;
import org.talend.cwm.helper.ViewHelper;
import org.talend.cwm.relational.TdView;
import org.talend.dataprofiler.core.ImageLib;
import org.talend.dataprofiler.core.PluginConstant;
import org.talend.dataprofiler.core.helper.FolderNodeHelper;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.model.OverviewIndUIElement;
import org.talend.dataprofiler.core.ui.ColumnSortListener;
import org.talend.dataprofiler.core.ui.action.actions.AnalyzeColumnSetAction;
import org.talend.dataprofiler.core.ui.action.actions.OverviewAnalysisAction;
import org.talend.dataprofiler.core.ui.utils.TableUtils;
import org.talend.dataquality.analysis.ExecutionInformations;
import org.talend.dataquality.indicators.Indicator;
import org.talend.dataquality.indicators.schema.CatalogIndicator;
import org.talend.dataquality.indicators.schema.SchemaIndicator;
import org.talend.dataquality.indicators.schema.TableIndicator;
import org.talend.dataquality.indicators.schema.ViewIndicator;
import org.talend.dq.analysis.AnalysisHandler;
import org.talend.dq.helper.RepositoryNodeHelper;
import org.talend.dq.helper.SqlExplorerUtils;
import org.talend.dq.nodes.DBTableFolderRepNode;
import org.talend.dq.nodes.DBViewFolderRepNode;
import org.talend.dq.nodes.DBViewRepNode;
import org.talend.repository.model.IRepositoryNode;
import org.talend.repository.model.RepositoryNode;
import orgomg.cwm.foundation.softwaredeployment.DataManager;
import orgomg.cwm.objectmodel.core.Package;
import orgomg.cwm.resource.relational.Catalog;
import orgomg.cwm.resource.relational.ColumnSet;
import orgomg.cwm.resource.relational.Schema;
/**
* DOC msjian class global comment. Detailled comment
*/
public class OverviewResultPage extends AbstractAnalysisResultPage implements PropertyChangeListener {
private Composite resultComp;
private AbstractFilterMetadataPage masterPage;
private Section statisticalSection = null;
private TableViewer catalogTableViewer;
private Composite sumSectionClient;
private Composite tableAndViewComposite;
private TableViewer tableOfCatalogOrSchemaViewer;
private TableViewer viewOfCatalogOrSchemaViewer;
private SchemaIndicator currentSelectionSchemaIndicator;
private SchemaIndicator currentCatalogIndicator = null; // used in sqlserver
private static final int COLUMN_TABLE_WIDTH = 100;
private static final int COLUMN_VIEW_WIDTH = 150;
/**
* Width of the first column.
*/
private static final int COL1_WIDTH = 200;
/**
* Width of columns.
*/
private static final int COL_WIDTH = 100;
private TableViewer schemaTableViewer;
private AbstractStatisticalViewerProvider provider;
private static final Logger log = Logger.getLogger(OverviewResultPage.class);
private SchemaTableSorter[][] tableSorters = {
{ new SchemaTableSorter(SchemaTableSorter.TABLE), new SchemaTableSorter(-SchemaTableSorter.TABLE) },
{ new SchemaTableSorter(SchemaTableSorter.ROWS), new SchemaTableSorter(-SchemaTableSorter.ROWS) },
{ new SchemaTableSorter(SchemaTableSorter.KEYS), new SchemaTableSorter(-SchemaTableSorter.KEYS) },
{ new SchemaTableSorter(SchemaTableSorter.INDEXES), new SchemaTableSorter(-SchemaTableSorter.INDEXES) } };
private SchemaViewSorter[][] viewSorters = {
{ new SchemaViewSorter(SchemaViewSorter.VIEW), new SchemaViewSorter(-SchemaViewSorter.VIEW) },
{ new SchemaViewSorter(SchemaViewSorter.ROWS), new SchemaViewSorter(-SchemaViewSorter.ROWS) } };
private SchemaSorter[][] schemaSorters = { { new SchemaSorter(SchemaSorter.SCHEMA), new SchemaSorter(-SchemaSorter.SCHEMA) },
{ new SchemaSorter(SchemaSorter.ROWS), new SchemaSorter(-SchemaSorter.ROWS) },
{ new SchemaSorter(SchemaSorter.TABLES), new SchemaSorter(-SchemaSorter.TABLES) },
{ new SchemaSorter(SchemaSorter.ROWS_TABLES), new SchemaSorter(-SchemaSorter.ROWS_TABLES) },
{ new SchemaSorter(SchemaSorter.VIEWS), new SchemaSorter(-SchemaSorter.VIEWS) },
{ new SchemaSorter(SchemaSorter.ROWS_VIEWS), new SchemaSorter(-SchemaSorter.ROWS_VIEWS) },
{ new SchemaSorter(SchemaSorter.KEYS), new SchemaSorter(-SchemaSorter.KEYS) },
{ new SchemaSorter(SchemaSorter.INDEXES), new SchemaSorter(-SchemaSorter.INDEXES) } };
private CatalogWithSchemaSorter[][] catalogWithSchemaSorters = {
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.CATALOG),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.CATALOG) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.ROWS),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.ROWS) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.SCHEMAS),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.SCHEMAS) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.ROWS_SCHEMAS),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.ROWS_SCHEMAS) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.TABLES),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.TABLES) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.ROWS_TABLES),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.ROWS_TABLES) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.VIEWS),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.VIEWS) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.ROWS_VIEWS),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.ROWS_VIEWS) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.KEYS),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.KEYS) },
{ new CatalogWithSchemaSorter(CatalogWithSchemaSorter.INDEXES),
new CatalogWithSchemaSorter(-CatalogWithSchemaSorter.INDEXES) } };
/**
* DOC msjian OverviewResultPage constructor comment.
*
* @param editor
* @param id
* @param title
*/
public OverviewResultPage(FormEditor editor, String id, String title) {
super(editor, id, title);
AnalysisEditor analysisEditor = (AnalysisEditor) editor;
this.masterPage = (AbstractFilterMetadataPage) analysisEditor.getMasterPage();
}
@Override
protected void createFormContent(IManagedForm managedForm) {
super.createFormContent(managedForm);
if (topComposite != null && !topComposite.isDisposed()) {
resultComp = toolkit.createComposite(topComposite);
resultComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
resultComp.setLayout(new GridLayout());
createResultSection(resultComp);
form.reflow(true);
}
}
@Override
protected void createSummarySection(ScrolledForm form, Composite parent, AnalysisHandler analysisHandler) {
summarySection = this.createSection(form, parent,
DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.analysisSummary")); //$NON-NLS-1$
sumSectionClient = toolkit.createComposite(summarySection);
sumSectionClient.setLayout(new GridLayout(2, false));
sumSectionClient.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
refreshSumSection();
summarySection.setClient(sumSectionClient);
}
@Override
protected AnalysisHandler getAnalysisHandler() {
return this.masterPage.getAnalysisHandler();
}
@Override
protected void createResultSection(Composite parent) {
statisticalSection = this.createSection(form, parent,
DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.statisticalinformations"), null); //$NON-NLS-1$
Composite sectionClient = toolkit.createComposite(statisticalSection);
sectionClient.setLayout(new GridLayout());
catalogTableViewer = new TableViewer(sectionClient, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
Table catalogTable = catalogTableViewer.getTable();
TableUtils.addActionTooltip(catalogTable);
catalogTable.setHeaderVisible(true);
catalogTable.setBackgroundMode(SWT.INHERIT_FORCE);
catalogTable.setLinesVisible(true);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(catalogTable);
List<Catalog> catalogs = getCatalogs();
boolean containSubSchema = false;
for (Catalog catalog : catalogs) {
List<Schema> schemas = CatalogHelper.getSchemas(catalog);
if (schemas.size() > 0) {
containSubSchema = true;
break;
}
}
if (catalogs.size() > 0 && containSubSchema) {
createCatalogSchemaColumns(catalogTable);
provider = new CatalogSchemaViewerProvier();
addColumnSorters(catalogTableViewer, catalogTable.getColumns(), catalogWithSchemaSorters);
createSchemaTableViewer(sectionClient);
schemaTableViewer.addSelectionChangedListener(new DisplayTableAndViewListener());
catalogTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
StructuredSelection selection = (StructuredSelection) event.getSelection();
OverviewIndUIElement firstElement = (OverviewIndUIElement) selection.getFirstElement();
List<OverviewIndUIElement> cataUIEleList = new ArrayList<OverviewIndUIElement>();
if (firstElement != null) {
Indicator overviewIndicator = firstElement.getOverviewIndicator();
CatalogIndicator catalogIndicator = (CatalogIndicator) overviewIndicator;// selection.getFirstElement();
// MOD qiongli bug 13093,2010-7-2,
currentCatalogIndicator = (SchemaIndicator) overviewIndicator; // selection.getFirstElement();
// MOD xqliu 2009-11-30 bug 9114
if (catalogIndicator != null) {
EList<SchemaIndicator> schemaIndicators = catalogIndicator.getSchemaIndicators();
for (SchemaIndicator schemaIndicator : schemaIndicators) {
RepositoryNode schemaNode = RepositoryNodeHelper.recursiveFind(schemaIndicator
.getAnalyzedElement());
OverviewIndUIElement cataUIEle = new OverviewIndUIElement();
cataUIEle.setNode(schemaNode);
cataUIEle.setOverviewIndicator(schemaIndicator);
cataUIEleList.add(cataUIEle);
}
schemaTableViewer.setInput(cataUIEleList);
schemaTableViewer.getTable().setVisible(true);
addColumnSorters(schemaTableViewer, schemaTableViewer.getTable().getColumns(), schemaSorters);
}
}
// ~
}
});
createContextMenuFor(schemaTableViewer);
} else {
if (catalogs.size() > 0) {
createCatalogTableColumns(catalogTable);
provider = new CatalogViewerProvier();
} else {
createSchemaTableColumns(catalogTable);
provider = new SchemaViewerProvier();
}
addColumnSorters(catalogTableViewer, catalogTable.getColumns(), schemaSorters);
catalogTableViewer.addSelectionChangedListener(new DisplayTableAndViewListener());
}
catalogTableViewer.setLabelProvider(provider);
catalogTableViewer.setContentProvider(provider);
doSetInput();
tableAndViewComposite = new Composite(sectionClient, SWT.NONE);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(tableAndViewComposite);
GridLayout layout = new GridLayout(2, false);
layout.marginWidth = 0;
layout.horizontalSpacing = 50;
tableAndViewComposite.setLayout(layout);
tableAndViewComposite.setVisible(false);
sectionClient.layout();
statisticalSection.setClient(sectionClient);
createContextMenuFor(catalogTableViewer);
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.editor.AbstractFormPage#setDirty(boolean)
*/
@Override
public void setDirty(boolean isDirty) {
// no implementation
}
/*
* (non-Javadoc)
*
* @seejava.beans.PropertyChangeListener#propertyChange(java.beans. PropertyChangeEvent)
*/
public void propertyChange(PropertyChangeEvent evt) {
if (PluginConstant.ISDIRTY_PROPERTY.equals(evt.getPropertyName())) {
((AnalysisEditor) this.getEditor()).firePropertyChange(IEditorPart.PROP_DIRTY);
}
}
/*
* (non-Javadoc)
*
* @see
* org.talend.dataprofiler.core.ui.editor.analysis.AbstractAnalysisResultPage#refresh(org.talend.dataprofiler.core
* .ui.editor.analysis.AbstractAnalysisMetadataPage)
*/
@Override
public void refresh(AbstractAnalysisMetadataPage masterPage1) {
this.masterPage = (AbstractFilterMetadataPage) masterPage1;
disposeComposite();
createFormContent(getManagedForm());
}
private void disposeComposite() {
if (summaryComp != null && !summaryComp.isDisposed()) {
summaryComp.dispose();
}
if (resultComp != null && !resultComp.isDisposed()) {
resultComp.dispose();
}
}
private void createSchemaTableViewer(Composite parent) {
schemaTableViewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
Table schemaTable = schemaTableViewer.getTable();
schemaTable.setHeaderVisible(true);
schemaTable.setBackgroundMode(SWT.INHERIT_FORCE);
schemaTable.setLinesVisible(true);
TableUtils.addActionTooltip(schemaTable);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, false).applyTo(schemaTable);
((GridData) schemaTable.getLayoutData()).heightHint = 60;
createSchemaTableColumns(schemaTable);
SchemaViewerProvier svProvider = new SchemaViewerProvier();
schemaTableViewer.setLabelProvider(svProvider);
schemaTableViewer.setContentProvider(svProvider);
schemaTable.setVisible(false);
}
private void createCatalogTableColumns(Table table) {
TableColumn tableColumn = new TableColumn(table, SWT.LEFT | SWT.FILL);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.catalog")); //$NON-NLS-1$
tableColumn.setWidth(COL1_WIDTH);
createNbRowsCol(table, DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.catalog")); //$NON-NLS-1$
createCommonStatisticalColumns(table);
}
private void createSchemaTableColumns(Table table) {
TableColumn tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.schema")); //$NON-NLS-1$
tableColumn.setWidth(COL1_WIDTH);
createNbRowsCol(table, DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.schema")); //$NON-NLS-1$
createCommonStatisticalColumns(table);
}
/**
* DOC scorreia Comment method "createCommonStatisticalColumns".
*
* @param table
*/
private void createCommonStatisticalColumns(Table table) {
TableColumn tableColumn;
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.table")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.numberOfTable")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.rows_table")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.numberOfRowPerTable")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.view")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.numberOfViews")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.rows_view")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.nubmerOfRowsPerView")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.key")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.numberOfPrimaryKeys")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.indexes")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.numberOfIndexes")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
}
private void createCatalogSchemaColumns(Table table) {
TableColumn tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.catalog")); //$NON-NLS-1$
tableColumn.setWidth(COL1_WIDTH);
createNbRowsCol(table, DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.catalog")); //$NON-NLS-1$
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.otherSchemata")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.rows_schema")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.numberofRow")); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
createCommonStatisticalColumns(table);
}
/**
* The provider for display the data of schema table viewer.
*
* FIXME this inner class should be static. Confirm and fix the error.
*/
class SchemaViewerProvier extends AbstractStatisticalViewerProvider {
@Override
protected String getOtherColumnText(int columnIndex, SchemaIndicator schemaIndicator) {
String text = PluginConstant.EMPTY_STRING;
switch (columnIndex) {
case 2:
return text + schemaIndicator.getTableCount();
case 3:
return text + getRowCountPerTable(schemaIndicator);
case 4:
return text + schemaIndicator.getViewCount();
case 5:
return text + getRowCountPerView(schemaIndicator);
case 6:
return text + schemaIndicator.getKeyCount();
case 7:
return text + schemaIndicator.getIndexCount();
default:
break;
}
return text;
}
}
/**
* The provider for display the data of catalog(contain schemas) table viewer.
*
* FIXME this inner class should be static. Confirm and fix the error.
*/
class CatalogSchemaViewerProvier extends AbstractStatisticalViewerProvider {
@Override
protected String getOtherColumnText(int columnIndex, SchemaIndicator schemaIndicator) {
String text = PluginConstant.EMPTY_STRING;
CatalogIndicator catalogIndicator = null;
if (schemaIndicator instanceof CatalogIndicator) {
catalogIndicator = (CatalogIndicator) schemaIndicator;
} else {
return PluginConstant.EMPTY_STRING;
}
switch (columnIndex) {
case 2:
return text + catalogIndicator.getSchemaCount();
case 3:
return text + getRowCountPerSchema(catalogIndicator);
case 4:
return text + catalogIndicator.getTableCount();
case 5:
return text + getRowCountPerTable(catalogIndicator);
case 6:
return text + schemaIndicator.getViewCount();
case 7:
return text + getRowCountPerView(schemaIndicator);
case 8:
return text + catalogIndicator.getKeyCount();
case 9:
return text + catalogIndicator.getIndexCount();
default:
break;
}
return text;
}
}
/**
* DOC scorreia Comment method "createNbRowsCol".
*
* @param table
* @param container
*/
private void createNbRowsCol(Table table, String container) {
TableColumn tableColumn;
tableColumn = new TableColumn(table, SWT.LEFT);
tableColumn.setText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.rows")); //$NON-NLS-1$
tableColumn.setToolTipText(DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.numberOfRows", container)); //$NON-NLS-1$
tableColumn.setWidth(COL_WIDTH);
}
protected static String getRowCountPerTable(SchemaIndicator schemaIndicator) {
Double frac = Double.valueOf(schemaIndicator.getTableRowCount()) / schemaIndicator.getTableCount();
return formatDouble(frac);
}
protected static String getRowCountPerView(SchemaIndicator schemaIndicator) {
Double frac = Double.valueOf(schemaIndicator.getViewRowCount()) / schemaIndicator.getViewCount();
return formatDouble(frac);
}
protected static String getRowCountPerSchema(CatalogIndicator catalogIndicator) {
Double frac = Double.valueOf(catalogIndicator.getTableRowCount()) / catalogIndicator.getSchemaCount();
return formatDouble(frac);
}
private static String formatDouble(Double frac) {
if (frac.isNaN()) {
return String.valueOf(Double.NaN);
}
String formatValue = new DecimalFormat("0.00").format(frac); //$NON-NLS-1$
return formatValue;
}
class DisplayTableAndViewListener implements ISelectionChangedListener {
public void selectionChanged(SelectionChangedEvent event) {
StructuredSelection selection = (StructuredSelection) event.getSelection();
OverviewIndUIElement firstElement = (OverviewIndUIElement) selection.getFirstElement();
if (firstElement != null) {
// TableViewer viewer = (TableViewer) event.getSource();
IRepositoryNode node = firstElement.getNode();
currentSelectionSchemaIndicator = (SchemaIndicator) firstElement.getOverviewIndicator();
if (currentSelectionSchemaIndicator == null) {
return;
}
displayTableAndViewComp(currentSelectionSchemaIndicator, node);
}
}
}
/**
* The provider for display the data of catalog table viewer.
*
* FIXME this inner class should be static. Confirm and fix the error.
*/
class CatalogViewerProvier extends AbstractStatisticalViewerProvider {
@Override
protected String getOtherColumnText(int columnIndex, SchemaIndicator schemaIndicator) {
String text = PluginConstant.EMPTY_STRING;
switch (columnIndex) {
case 1:
return text + schemaIndicator.getTableRowCount();
case 2:
return text + schemaIndicator.getTableCount();
case 3:
return text + getRowCountPerTable(schemaIndicator);
case 4:
return text + schemaIndicator.getViewCount();
case 5:
return text + getRowCountPerView(schemaIndicator);
case 6:
return text + schemaIndicator.getKeyCount();
case 7:
return text + schemaIndicator.getIndexCount();
default:
break;
}
return text;
}
}
/**
*
* DOC klliu Comment method "displayTableAndViewComp".
*
* @param schemaIndicator
* @param parentNode
*/
protected void displayTableAndViewComp(final SchemaIndicator schemaIndicator, final IRepositoryNode parentNode) {
tableAndViewComposite.setVisible(true);
// DOC wapperInput retrun OverViewUIElement
EList<TableIndicator> indicatorTableList = schemaIndicator.getTableIndicators();
List<OverviewIndUIElement> tableElements = wapperInput(indicatorTableList, parentNode);
if (tableOfCatalogOrSchemaViewer == null || tableOfCatalogOrSchemaViewer.getTable().isDisposed()) {
tableOfCatalogOrSchemaViewer = new TableViewer(tableAndViewComposite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER
| SWT.FULL_SELECTION); // SWT.SINGLE);
final Table catalogOrSchemaTable = tableOfCatalogOrSchemaViewer.getTable();
TableUtils.addActionTooltip(catalogOrSchemaTable);
catalogOrSchemaTable.setHeaderVisible(true);
catalogOrSchemaTable.setLinesVisible(true);
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
layoutData.heightHint = 150;
catalogOrSchemaTable.setLayoutData(layoutData);
String[] columnTexts = new String[] {
DefaultMessagesImpl.getString("AbstractFilterMetadataPage.Table"), DefaultMessagesImpl.getString("AbstractFilterMetadataPage.rows"), DefaultMessagesImpl.getString("AbstractFilterMetadataPage.keys"), DefaultMessagesImpl.getString("AbstractFilterMetadataPage.indexes") }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
createSorterColumns(tableOfCatalogOrSchemaViewer, columnTexts, tableSorters, COLUMN_TABLE_WIDTH);
TableOfCatalogOrSchemaProvider tableProvider = new TableOfCatalogOrSchemaProvider();
tableOfCatalogOrSchemaViewer.setLabelProvider(tableProvider);
tableOfCatalogOrSchemaViewer.setContentProvider(tableProvider);
catalogOrSchemaTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
if (e.button == 3) {
TableItem item = catalogOrSchemaTable.getItem(catalogOrSchemaTable.getSelectionIndex());
// TDQ-11430: show the menu only when there have data and have selected one.
if (catalogOrSchemaTable.getItemCount() > 0 && catalogOrSchemaTable.getSelectionIndex() != -1) {
final Menu menu = new Menu(catalogOrSchemaTable.getShell(), SWT.POP_UP);
catalogOrSchemaTable.setMenu(menu);
MenuItem viewKeyMenuItem = new MenuItem(menu, SWT.PUSH);
viewKeyMenuItem.setText(DefaultMessagesImpl.getString("AbstractFilterMetadataPage.ViewKeys")); //$NON-NLS-1$
viewKeyMenuItem.setImage(ImageLib.getImage(ImageLib.PK_DECORATE));
viewKeyMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
runMenu(catalogOrSchemaTable,
DefaultMessagesImpl.getString("DatabaseDetailView.Tab.PrimaryKeys")); //$NON-NLS-1$
}
});
MenuItem viewIndexMenuItem = new MenuItem(menu, SWT.PUSH);
viewIndexMenuItem.setText(DefaultMessagesImpl.getString("AbstractFilterMetadataPage.ViewIndexes")); //$NON-NLS-1$
viewIndexMenuItem.setImage(ImageLib.getImage(ImageLib.INDEX_VIEW));
viewIndexMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
runMenu(catalogOrSchemaTable, DefaultMessagesImpl.getString("DatabaseDetailView.Tab.Indexes")); //$NON-NLS-1$
}
});
TableItem tableItem = catalogOrSchemaTable.getItem(catalogOrSchemaTable.getSelectionIndex());
final OverviewIndUIElement data = (OverviewIndUIElement) tableItem.getData();
MenuItem tableAnalysisMenuItem = new MenuItem(menu, SWT.PUSH);
tableAnalysisMenuItem.setText(DefaultMessagesImpl
.getString("CreateTableAnalysisAction.tableAnalysis")); //$NON-NLS-1$
tableAnalysisMenuItem.setImage(ImageLib.getImage(ImageLib.ACTION_NEW_ANALYSIS));
tableAnalysisMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
runTableAnalysis(data);
}
});
if (data.isVirtualNode()) {
tableAnalysisMenuItem.setEnabled(false);
}
} else {
// TDQ-11430: when there is no views will not show menu
catalogOrSchemaTable.setMenu(null);
}
}
}
});
viewOfCatalogOrSchemaViewer = new TableViewer(tableAndViewComposite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER
| SWT.FULL_SELECTION);
final Table tableCatalogOrSchemaView = viewOfCatalogOrSchemaViewer.getTable();
TableUtils.addActionTooltip(tableCatalogOrSchemaView);
tableCatalogOrSchemaView.setHeaderVisible(true);
tableCatalogOrSchemaView.setLinesVisible(true);
layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
layoutData.heightHint = 150;
tableCatalogOrSchemaView.setLayoutData(layoutData);
columnTexts = new String[] {
DefaultMessagesImpl.getString("AbstractFilterMetadataPage.view"), DefaultMessagesImpl.getString("AbstractFilterMetadataPage.rows") }; //$NON-NLS-1$ //$NON-NLS-2$
createSorterColumns(viewOfCatalogOrSchemaViewer, columnTexts, viewSorters, COLUMN_VIEW_WIDTH);
ViewOfCatalogOrSchemaProvider viewProvider = new ViewOfCatalogOrSchemaProvider();
viewOfCatalogOrSchemaViewer.setLabelProvider(viewProvider);
viewOfCatalogOrSchemaViewer.setContentProvider(viewProvider);
// ADD msjian TDQ-4523 2013-1-22: Add "Table analysis" menu on the views
tableCatalogOrSchemaView.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
if (e.button == 3) {
// TDQ-11430: show the menu only when there have data and have selected one.
TableItem tableItem = tableCatalogOrSchemaView.getItem(tableCatalogOrSchemaView.getSelectionIndex());
final OverviewIndUIElement data = (OverviewIndUIElement) tableItem.getData();
if (tableCatalogOrSchemaView.getItemCount() > 0 && tableCatalogOrSchemaView.getSelectionIndex() != -1) {
final Menu menu = new Menu(tableCatalogOrSchemaView.getShell(), SWT.POP_UP);
tableCatalogOrSchemaView.setMenu(menu);
MenuItem tableAnalysisMenuItem = new MenuItem(menu, SWT.PUSH);
tableAnalysisMenuItem.setText(DefaultMessagesImpl
.getString("CreateTableAnalysisAction.tableAnalysis")); //$NON-NLS-1$
tableAnalysisMenuItem.setImage(ImageLib.getImage(ImageLib.ACTION_NEW_ANALYSIS));
tableAnalysisMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ViewIndicator viewIndicator = (ViewIndicator) data.getOverviewIndicator();
runTableAnalysis(viewIndicator.getTableName());
}
});
if (data.isVirtualNode()) {
tableAnalysisMenuItem.setEnabled(false);
}
} else {
// TDQ-11430: when there is no views will not show menu
tableCatalogOrSchemaView.setMenu(null);
}
}
}
});
// TDQ-4523~
}
tableOfCatalogOrSchemaViewer.getTable().setMenu(null);
tableOfCatalogOrSchemaViewer.setInput(tableElements);
List<ViewIndicator> indicatorViewList = schemaIndicator.getViewIndicators();
List<OverviewIndUIElement> viewElements = wapperInput(indicatorViewList, parentNode);
viewOfCatalogOrSchemaViewer.setInput(viewElements);
viewOfCatalogOrSchemaViewer.getTable().setMenu(null);
// MOD xqliu 2009-11-05 bug 9521
tableAndViewComposite.pack();
statisticalSection.pack();
statisticalSection.layout();
// ~
form.reflow(true);
}
/**
* DOC zshen Comment method "wapperInput".
*
* @param indicatorViewList
* @param parentNode
* @return
*/
private List<OverviewIndUIElement> wapperInput(List<ViewIndicator> indicatorViewList, IRepositoryNode parentNode) {
List<OverviewIndUIElement> cataUIEleList = new ArrayList<OverviewIndUIElement>();
List<IRepositoryNode> children = parentNode.getChildren();
for (IRepositoryNode folderNode : children) {
if (folderNode instanceof DBViewFolderRepNode) {
List<IRepositoryNode> tableNodes = folderNode.getChildren();
// MOD 20120315 klliu&yyin TDQ-2391, avoid getting many times for table nodes.
for (ViewIndicator indicator : indicatorViewList) {
boolean equals = false;
for (IRepositoryNode tableNode : tableNodes) {
MetadataTable table = ((MetadataTableRepositoryObject) tableNode.getObject()).getTable();
String name = table.getName();
String tableName = indicator.getTableName();
// String connUuid = ResourceHelper.getUUID(table);
// String anaUuid = ResourceHelper.getUUID(indicator.getAnalyzedElement());
equals = name.equals(tableName);
if (equals) {
OverviewIndUIElement tableUIEle = new OverviewIndUIElement();
tableUIEle.setNode(tableNode);
tableUIEle.setOverviewIndicator(indicator);
if (DqRepositoryViewService.isComeFromRefrenceProject(getTdDataProvider())
&& ColumnSetHelper.getColumns((ColumnSet) table).isEmpty()) {
tableUIEle.setVirtualNode(true);
}
cataUIEleList.add(tableUIEle);
break;
}
}
if (!equals) {
OverviewIndUIElement tableUIEle = new OverviewIndUIElement();
tableUIEle.setOverviewIndicator(indicator);
tableUIEle.setVirtualNode(true);
cataUIEleList.add(tableUIEle);
}
}
}
}
return cataUIEleList;
}
private void runTableAnalysis(OverviewIndUIElement data) {
new AnalyzeColumnSetAction(data.getNode()).run();
}
/**
* run TableAnalysis with view name.
*
* @param viewName
*/
protected void runTableAnalysis(String viewName) {
Package parentPack = (Package) currentSelectionSchemaIndicator.getAnalyzedElement();
TdView tdView = getView(parentPack, viewName);
if (null == tdView) {
FolderNodeHelper.getTableFolderNode(parentPack).loadChildren();
tdView = getView(parentPack, viewName);
}
DBViewRepNode dbViewRepNode = RepositoryNodeHelper.recursiveFindTdView(tdView);
new AnalyzeColumnSetAction(dbViewRepNode).run();
}
/**
* when select menu, run.
*
* @param cursor
* @param message
*/
private void runMenu(final Table catalogOrSchemaTable, String message) {
TableItem tableItem = catalogOrSchemaTable.getItem(catalogOrSchemaTable.getSelectionIndex());
String tableName = tableItem.getText(0);
Package parentPack = (Package) currentSelectionSchemaIndicator.getAnalyzedElement();
// MOD qiongli bug 13093,2010-7-2
// MOD 20130409 TDQ-6823 yyin pass the schema insteadof catalog when schema has value
if (currentCatalogIndicator != null && parentPack == null) {
parentPack = (Package) currentCatalogIndicator.getAnalyzedElement();
}
SqlExplorerUtils.getDefault().findSqlExplorerTableNode(getTdDataProvider(), parentPack, tableName, message);
}
/**
* DOC klliu Comment method "wapperInput". relations
*
* @param indicatorTableList
* @param parentNode
* @return
*/
private List<OverviewIndUIElement> wapperInput(EList<TableIndicator> indicatorTableList, IRepositoryNode parentNode) {
List<OverviewIndUIElement> cataUIEleList = new ArrayList<OverviewIndUIElement>();
List<IRepositoryNode> children = parentNode.getChildren();
for (IRepositoryNode folderNode : children) {
if (folderNode instanceof DBTableFolderRepNode) {
List<IRepositoryNode> tableNodes = folderNode.getChildren();
// MOD 20120315 klliu&yyin TDQ-2391, avoid getting many times for table nodes.
for (TableIndicator indicator : indicatorTableList) {
boolean equals = false;
for (IRepositoryNode tableNode : tableNodes) {
MetadataTable table = ((MetadataTableRepositoryObject) tableNode.getObject()).getTable();
String name = table.getName();
String tableName = indicator.getTableName();
// String connUuid = ResourceHelper.getUUID(table);
// String anaUuid = ResourceHelper.getUUID(indicator.getAnalyzedElement());
equals = name.equals(tableName);
if (equals) {
OverviewIndUIElement tableUIEle = new OverviewIndUIElement();
tableUIEle.setNode(tableNode);
tableUIEle.setOverviewIndicator(indicator);
if (DqRepositoryViewService.isComeFromRefrenceProject(getTdDataProvider())
&& ColumnSetHelper.getColumns((ColumnSet) table).isEmpty()) {
tableUIEle.setVirtualNode(true);
}
cataUIEleList.add(tableUIEle);
break;
}
}
if (!equals) {
OverviewIndUIElement tableUIEle = new OverviewIndUIElement();
tableUIEle.setOverviewIndicator(indicator);
tableUIEle.setVirtualNode(true);
cataUIEleList.add(tableUIEle);
}
}
}
}
return cataUIEleList;
}
private void createSorterColumns(final TableViewer tableViewer, String[] columnTexts, ViewerSorter[][] sorters,
int columnWidth) {
Table table = tableViewer.getTable();
TableColumn[] columns = new TableColumn[columnTexts.length];
for (int i = 0; i < columns.length; i++) {
columns[i] = new TableColumn(table, SWT.LEFT | SWT.FILL);
columns[i].setText(columnTexts[i]);
columns[i].setWidth(columnWidth);
columns[i].addSelectionListener(new ColumnSortListener(columns, i, tableViewer, sorters));
}
}
/**
* get view from package by its name.
*
* @param pkg
* @param viewName
* @return
*/
private TdView getView(Package pkg, String viewName) {
for (TdView view : ViewHelper.getViews(pkg.getOwnedElement())) {
if (view.getName().equals(viewName)) {
return view;
}
}
return null;
}
protected void createContextMenuFor(final StructuredViewer viewer) {
final MenuManager contextMenu = new MenuManager("#PopUp");//$NON-NLS-1$
contextMenu.add(new Separator("additions"));//$NON-NLS-1$
contextMenu.setRemoveAllWhenShown(true);
contextMenu.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager mgr) {
Object overviewObject = ((StructuredSelection) viewer.getSelection()).getFirstElement();
if (overviewObject instanceof OverviewIndUIElement) {
OverviewIndUIElement overview = (OverviewIndUIElement) overviewObject;
IRepositoryNode node = overview.getNode();
List<IRepositoryNode> nodes = new ArrayList<IRepositoryNode>();
nodes.add(node);
contextMenu.add(new OverviewAnalysisAction(nodes));
}
// if (obj instanceof SchemaIndicator) {
// SchemaIndicator schemaIndicator = (SchemaIndicator) obj;
// contextMenu.add(new OverviewAnalysisAction(new Package[] { (Package)
// schemaIndicator.getAnalyzedElement() }));
// }
}
});
Menu menu = contextMenu.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(menu);
}
/**
* DOC qzhang Comment method "doSetInput".
*/
public void doSetInput() {
List<OverviewIndUIElement> indicatorList = null;
if (masterPage.getCurrentModelElement().getResults().getIndicators().size() > 0) {
indicatorList = getCatalogIndicators();
if (indicatorList.size() == 0) {
catalogTableViewer.setInput(getSchemaIndicators());
} else {
// MOD xqliu 2009-11-30 bug 9114
// List<SchemaIndicator> schemaIndicators = new ArrayList<SchemaIndicator>();
// schemaIndicators.addAll(getSchemaIndicators());
// schemaIndicators.addAll(indicatorList);
// catalogTableViewer.setInput(schemaIndicators);
catalogTableViewer.setInput(indicatorList);
// ~
}
}
}
/**
* DOC xqliu Comment method "addColumnSorters".
*
* @param tableViewer
* @param tableColumns
* @param sorters
*/
protected void addColumnSorters(TableViewer tableViewer, TableColumn[] tableColumns, ViewerSorter[][] sorters) {
for (int i = 0; i < tableColumns.length; ++i) {
tableColumns[i].addSelectionListener(new ColumnSortListener(tableColumns, i, tableViewer, sorters));
}
}
/**
* DOC qzhang Comment method "refreshSumSection".
*
* @param summarySection
*/
private void refreshSumSection() {
fillDataProvider();
if (getTdDataProvider() == null) {
return;
}
if (sumSectionClient != null && !sumSectionClient.isDisposed()) {
Control[] children = sumSectionClient.getChildren();
for (Control control : children) {
control.dispose();
}
}
Composite leftComp = new Composite(sumSectionClient, SWT.NONE);
leftComp.setLayout(new GridLayout(2, false));
GridData subCompData = new GridData(GridData.FILL_HORIZONTAL);
subCompData.verticalAlignment = GridData.BEGINNING;
leftComp.setLayoutData(subCompData);
Composite rightComp = new Composite(sumSectionClient, SWT.NONE);
rightComp.setLayout(new GridLayout(2, false));
rightComp.setLayoutData(subCompData);
String connectionStr = JavaSqlFactory.getURL(getTdDataProvider());
Properties pameterProperties = SupportDBUrlStore.getInstance().getDBPameterProperties(connectionStr);
toolkit.createLabel(leftComp, DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.DBMS")); //$NON-NLS-1$
// MOD TDQ-8539, find the db type from the connection, not from the properties file
toolkit.createLabel(leftComp, getDatabaseType(pameterProperties));
String serverName = JavaSqlFactory.getServerName(getTdDataProvider());
toolkit.createLabel(leftComp, DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.server")); //$NON-NLS-1$
toolkit.createLabel(leftComp, serverName == null ? PluginConstant.EMPTY_STRING : serverName);
String port = JavaSqlFactory.getPort(getTdDataProvider());
toolkit.createLabel(leftComp, DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.port")); //$NON-NLS-1$
toolkit.createLabel(leftComp, port == null ? PluginConstant.EMPTY_STRING : port);
String username = JavaSqlFactory.getUsername(getTdDataProvider());
toolkit.createLabel(leftComp, DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.connectAs")); //$NON-NLS-1$
toolkit.createLabel(leftComp, username == null ? PluginConstant.EMPTY_STRING : username);
List<Catalog> tdCatalogs = getCatalogs();
// TDQ-6735 get the correct numbers of schema.
// MOD TDQ-8539 , get the schemas size
int schemaSize = masterPage.getSchamas(tdCatalogs);
toolkit.createLabel(leftComp,
DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.catalogs", PluginConstant.EMPTY_STRING)); //$NON-NLS-1$
toolkit.createLabel(leftComp, PluginConstant.EMPTY_STRING + tdCatalogs.size());
toolkit.createLabel(leftComp,
DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.schemata", PluginConstant.EMPTY_STRING)); //$NON-NLS-1$
toolkit.createLabel(leftComp, PluginConstant.EMPTY_STRING + schemaSize);
ExecutionInformations resultMetadata = masterPage.getCurrentModelElement().getResults().getResultMetadata();
toolkit.createLabel(rightComp,
DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.createionDate", PluginConstant.EMPTY_STRING)); //$NON-NLS-1$
toolkit.createLabel(rightComp, getFormatDateStr(masterPage.getCurrentModelElement().getCreationDate()));
toolkit.createLabel(rightComp,
DefaultMessagesImpl.getString("AbstractAnalysisResultPage.executionDate", PluginConstant.EMPTY_STRING)); //$NON-NLS-1$
toolkit.createLabel(rightComp, getFormatDateStr(resultMetadata.getExecutionDate()));
toolkit.createLabel(rightComp,
DefaultMessagesImpl.getString("AbstractAnalysisResultPage.executionDuration", PluginConstant.EMPTY_STRING)); //$NON-NLS-1$
toolkit.createLabel(rightComp, PluginConstant.EMPTY_STRING + resultMetadata.getExecutionDuration() / 1000.0d + "s"); //$NON-NLS-1$
String executeStatus = (resultMetadata.isLastRunOk() ? DefaultMessagesImpl
.getString("ConnectionMasterDetailsPage.success") : DefaultMessagesImpl.getString("ConnectionMasterDetailsPage.failure", resultMetadata.getMessage())); //$NON-NLS-1$ //$NON-NLS-2$
Label rightLabel = toolkit.createLabel(rightComp,
DefaultMessagesImpl.getString("AbstractAnalysisResultPage.executionStatus"));//$NON-NLS-1$
int executionNumber = resultMetadata.getExecutionNumber();
if (!resultMetadata.isLastRunOk() && executionNumber != 0) {
rightLabel.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
}
rightLabel = toolkit.createLabel(rightComp, executionNumber == 0 ? PluginConstant.EMPTY_STRING : executeStatus);
toolkit.createLabel(rightComp,
DefaultMessagesImpl.getString("AbstractAnalysisResultPage.numberOfExecution", PluginConstant.EMPTY_STRING)); //$NON-NLS-1$
toolkit.createLabel(rightComp, PluginConstant.EMPTY_STRING + executionNumber);
toolkit.createLabel(rightComp,
DefaultMessagesImpl.getString("AbstractAnalysisResultPage.lastSucessfulExecution", PluginConstant.EMPTY_STRING)); //$NON-NLS-1$
toolkit.createLabel(rightComp, PluginConstant.EMPTY_STRING + resultMetadata.getLastExecutionNumberOk());
// MOD qiongli 2011-5-16
DataManager connection = masterPage.getCurrentModelElement().getContext().getConnection();
if (connection != null) {
RepositoryNode connNode = RepositoryNodeHelper.recursiveFind(connection);
if (connNode != null && connNode.getObject().isDeleted()) {
Label leftLabel = toolkit.createLabel(leftComp,
DefaultMessagesImpl.getString("AbstractPagePart.LogicalDeleteWarn", connNode.getLabel())); //$NON-NLS-1$
leftLabel.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
toolkit.createLabel(rightComp, PluginConstant.EMPTY_STRING);
toolkit.createLabel(rightComp, PluginConstant.EMPTY_STRING);
}
}
sumSectionClient.layout();
}
/**
* DOC msjian Comment method "getTdDataProvider".
*
* @return Connection
*/
protected Connection getTdDataProvider() {
return masterPage.getTdDataProvider();
}
private String getFormatDateStr(Date date) {
if (date == null) {
return PluginConstant.EMPTY_STRING;
}
String format = SimpleDateFormat.getDateTimeInstance().format(date);
return format;
}
/**
* get the connection type from the connection, when the connection is DB. otherwise, just return the labelCOntent
* which get the value from the properties.
*
* @param labelContent
* @return
*/
private String getDatabaseType(Properties pameterProperties) {
DataManager dataManager = masterPage.getCurrentModelElement().getContext().getConnection();
if (dataManager instanceof DatabaseConnection) {
return ((DatabaseConnection) dataManager).getDatabaseType();
} else {
return pameterProperties.getProperty(org.talend.core.model.metadata.builder.database.PluginConstant.DBTYPE_PROPERTY);
}
}
@Override
public void dispose() {
if (provider != null) {
provider.getZeroRowColor().dispose();
}
super.dispose();
}
void fillDataProvider() {
masterPage.fillDataProvider();
}
List<Catalog> getCatalogs() {
return masterPage.getCatalogs();
}
List<OverviewIndUIElement> getCatalogIndicators() {
return masterPage.getCatalogIndicators();
}
List<OverviewIndUIElement> getSchemaIndicators() {
return masterPage.getSchemaIndicators();
}
}