Search in sources :

Example 86 with TdColumn

use of org.talend.cwm.relational.TdColumn in project tdq-studio-se by Talend.

the class ChangeConnectionAction method changedDatabaseConnection.

private ReturnCode changedDatabaseConnection() throws ReloadCompareException {
    Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
    final EList<ModelElement> analyzedElements = analysisItem.getAnalysis().getContext() == null ? null : analysisItem.getAnalysis().getContext().getAnalysedElements();
    if (analyzedElements == null || analyzedElements.size() == 0) {
        analysisItem.getAnalysis().getContext().setConnection(newDataProvider);
        return new ReturnCode(Boolean.TRUE);
    }
    // MOD qiongli 2011-1-10,feature 16796.
    if (oldDataProvider instanceof DelimitedFileConnection) {
        // "Can't change this connection!");
        if (!// $NON-NLS-1$
        MessageDialog.openConfirm(// $NON-NLS-1$
        shell, // $NON-NLS-1$
        DefaultMessagesImpl.getString("ChangeConnectionAction.ChangeConnection"), DefaultMessagesImpl.getString("ChangeConnectionAction.ChangeConnectionTips"))) {
            // $NON-NLS-1$
            return new ReturnCode(Boolean.FALSE);
        }
    }
    // Open synchronized dialog.
    boolean retCode = MessageDialog.openQuestion(shell, // $NON-NLS-1$
    DefaultMessagesImpl.getString("ChangeConnectionAction.ChangeConnection"), // $NON-NLS-1$
    DefaultMessagesImpl.getString("ChangeConnectionAction.MayCauseAsynProblem"));
    if (retCode) {
        if (analyzedElements.get(0) instanceof TdColumn) {
            anaEleSynDialog = new AnalyzedColumnsSynDialog(shell, analysisItem.getAnalysis(), newDataProvider, analyzedElements);
        } else if (analyzedElements.get(0) instanceof ColumnSet) {
            anaEleSynDialog = new AnalyzedColumnSetsSynDialog(shell, analysisItem.getAnalysis(), newDataProvider, analyzedElements);
        } else if (analyzedElements.get(0) instanceof Package) {
            anaEleSynDialog = new AnalyzedPackageSynDialog(shell, analysisItem.getAnalysis(), newDataProvider, analyzedElements);
        }
        final List<SynTreeModel> treeModelLs = anaEleSynDialog == null ? null : anaEleSynDialog.getSynInputModel();
        if (treeModelLs != null && treeModelLs.size() > 0) {
            // Make attempt to reload from db before showing asyned
            // message.
            boolean isReload = MessageDialog.openQuestion(shell, // $NON-NLS-1$
            DefaultMessagesImpl.getString("ChangeConnectionAction.ReloadFromDatabase"), // $NON-NLS-1$
            DefaultMessagesImpl.getString("ChangeConnectionAction.ExistElementAsynchronuos"));
            if (isReload) {
                ModelElement newDataProviderModel = treeModelLs.get(0).getNewDataProvElement();
                if (newDataProviderModel != null && (newDataProviderModel instanceof ColumnSet || newDataProviderModel instanceof Package)) {
                    if (newDataProviderModel instanceof Package) {
                        IRunnableWithProgress op = new IRunnableWithProgress() {

                            public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                                try {
                                    reloadByColumnSetFolderLevel(treeModelLs, anaEleSynDialog, newDataProvider);
                                    if (analyzedElements.get(0) instanceof TdColumn) {
                                        // Reload column folder
                                        reloadByColumnFolderLevel(treeModelLs, anaEleSynDialog, newDataProvider);
                                    }
                                } catch (ReloadCompareException e) {
                                    log.error(e, e);
                                }
                            }
                        };
                        try {
                            ProgressUI.popProgressDialog(op);
                        } catch (InvocationTargetException e) {
                            log.error(e, e);
                        } catch (InterruptedException e) {
                            log.error(e, e);
                        }
                    } else if (newDataProviderModel instanceof ColumnSet) {
                        IRunnableWithProgress op = new IRunnableWithProgress() {

                            public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                                try {
                                    reloadByColumnFolderLevel(treeModelLs, anaEleSynDialog, newDataProvider);
                                } catch (ReloadCompareException e) {
                                    log.error(e, e);
                                }
                            }
                        };
                        try {
                            ProgressUI.popProgressDialog(op);
                        } catch (InvocationTargetException e) {
                            log.error(e, e);
                        } catch (InterruptedException e) {
                            log.error(e, e);
                        }
                    }
                }
            }
        }
        // Open asyned dialog.
        if (treeModelLs != null && treeModelLs.size() > 0) {
            // Open confirmation dialog to see whether user want to
            // continue or not.
            int returnCode = anaEleSynDialog.open();
            if (returnCode != Window.OK) {
                return new ReturnCode(Boolean.FALSE);
            }
        }
        // Synchronize analyzed elements.
        boolean isExistSynedElement = synAnalyzedElements(anaEleSynDialog, analysisItem.getAnalysis(), oldDataProvider, newDataProvider);
        // Add new dependencies.
        if (isExistSynedElement) {
            DependenciesHandler.getInstance().setDependencyOn(analysisItem.getAnalysis(), newDataProvider);
            ElementWriterFactory.getInstance().createDataProviderWriter().save(newDataProvider);
        }
        // Refresh analysis editor viewer.
        ElementWriterFactory.getInstance().createAnalysisWrite().save(analysisItem, false);
        // Refresh the repository tree view to adapt for the new analysis
        CorePlugin.getDefault().refreshDQView(RepositoryNodeHelper.getDataProfilingFolderNode(EResourceConstant.ANALYSIS));
    } else {
        return new ReturnCode(Boolean.FALSE);
    }
    return new ReturnCode(Boolean.TRUE);
}
Also used : ReturnCode(org.talend.utils.sugars.ReturnCode) ReloadCompareException(org.talend.cwm.compare.exception.ReloadCompareException) DelimitedFileConnection(org.talend.core.model.metadata.builder.connection.DelimitedFileConnection) ColumnSet(orgomg.cwm.resource.relational.ColumnSet) InvocationTargetException(java.lang.reflect.InvocationTargetException) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) ModelElement(orgomg.cwm.objectmodel.core.ModelElement) Shell(org.eclipse.swt.widgets.Shell) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) TdColumn(org.talend.cwm.relational.TdColumn) AnalyzedColumnSetsSynDialog(org.talend.dataprofiler.core.ui.dialog.AnalyzedColumnSetsSynDialog) AnalyzedPackageSynDialog(org.talend.dataprofiler.core.ui.dialog.AnalyzedPackageSynDialog) SynTreeModel(org.talend.dataprofiler.core.ui.dialog.AnalyzedElementSynDialog.SynTreeModel) Package(orgomg.cwm.objectmodel.core.Package) AnalyzedColumnsSynDialog(org.talend.dataprofiler.core.ui.dialog.AnalyzedColumnsSynDialog)

Example 87 with TdColumn

use of org.talend.cwm.relational.TdColumn in project tdq-studio-se by Talend.

the class PreviewColumnAction method run.

@Override
public void run() {
    if (modelElements[0] instanceof TdColumn) {
        TdColumn[] columns = new TdColumn[modelElements.length];
        int i = 0;
        for (ModelElement me : modelElements) {
            columns[i] = (TdColumn) me;
            ++i;
        }
        if (ColumnHelper.isFromSameTable(Arrays.asList(columns))) {
            TdColumn oneColumn = columns[0];
            Connection dataprovider = ConnectionHelper.getTdDataProvider(oneColumn);
            ColumnSet columnSetOwner = ColumnHelper.getColumnOwnerAsColumnSet(oneColumn);
            DbmsLanguage language = DbmsLanguageFactory.createDbmsLanguage(dataprovider);
            String columnsWithPrefix = language.getQueryColumnsWithPrefix(columns);
            String columnSetName = language.getQueryColumnSetWithPrefix(columnSetOwner);
            // $NON-NLS-1$ //$NON-NLS-2$
            String query = "select " + columnsWithPrefix + " from " + columnSetName;
            SqlExplorerUtils.getDefault().runInDQViewer(dataprovider, query, columnSetName);
        } else {
            MessageDialogWithToggle.openWarning(null, DefaultMessagesImpl.getString("PreviewColumnAction.Warning"), // $NON-NLS-1$ //$NON-NLS-2$
            DefaultMessagesImpl.getString("PreviewColumnAction.previewColumns"));
        }
    }
}
Also used : DbmsLanguage(org.talend.dq.dbms.DbmsLanguage) ModelElement(orgomg.cwm.objectmodel.core.ModelElement) TdColumn(org.talend.cwm.relational.TdColumn) Connection(org.talend.core.model.metadata.builder.connection.Connection) ColumnSet(orgomg.cwm.resource.relational.ColumnSet)

Example 88 with TdColumn

use of org.talend.cwm.relational.TdColumn in project tdq-studio-se by Talend.

the class PreviewColumnProvider method fillContextMenu.

@Override
public void fillContextMenu(IMenuManager menu) {
    // MOD mzhao user readonly role on svn repository mode.
    if (!isShowMenu()) {
        return;
    }
    TreeSelection treeSelection = ((TreeSelection) this.getContext().getSelection());
    List<TdColumn> list = new ArrayList<TdColumn>();
    Object[] selectedObjs = treeSelection.toArray();
    for (Object obj : selectedObjs) {
        // MOD msjian 2011-12-7 TDQ-4091: the tdColumn info is not correct
        if (obj instanceof DBColumnRepNode) {
            list.add(((DBColumnRepNode) obj).getTdColumn());
        }
    // TDQ-4091 ~
    }
    if (!list.isEmpty()) {
        PreviewColumnAction action = new PreviewColumnAction(list.toArray(new TdColumn[list.size()]));
        menu.add(action);
    }
}
Also used : TdColumn(org.talend.cwm.relational.TdColumn) TreeSelection(org.eclipse.jface.viewers.TreeSelection) ArrayList(java.util.ArrayList) DBColumnRepNode(org.talend.dq.nodes.DBColumnRepNode) PreviewColumnAction(org.talend.dataprofiler.core.ui.action.actions.predefined.PreviewColumnAction)

Example 89 with TdColumn

use of org.talend.cwm.relational.TdColumn in project tdq-studio-se by Talend.

the class ColumnDependencyIndicatorImpl method setColumnB.

/**
 * <!-- begin-user-doc --> <!-- end-user-doc -->
 * @generated
 */
@Override
public void setColumnB(TdColumn newColumnB) {
    TdColumn oldColumnB = columnB;
    columnB = newColumnB;
    if (eNotificationRequired())
        eNotify(new ENotificationImpl(this, Notification.SET, ColumnsetPackage.COLUMN_DEPENDENCY_INDICATOR__COLUMN_B, oldColumnB, columnB));
}
Also used : TdColumn(org.talend.cwm.relational.TdColumn) ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl)

Example 90 with TdColumn

use of org.talend.cwm.relational.TdColumn in project tdq-studio-se by Talend.

the class ColumnSetMultiValueIndicatorImpl method isSameMiningType.

private Boolean isSameMiningType(ModelElement column, DataminingType type) {
    // MOD yyi 2011-02-25 16660: edit connection, save it will get error
    final MetadataColumn mdColumn = SwitchHelpers.METADATA_COLUMN_SWITCH.doSwitch(column);
    final TdColumn tdColumn = SwitchHelpers.COLUMN_SWITCH.doSwitch(column);
    if (tdColumn == null && mdColumn == null) {
        if (column == null) {
            log.error("The list of analyzed column contains a null column");
        } else {
            log.error("Analyzed element should be a TdColumn instead of a Column. Analyzed element is " + column.getName());
        }
        // Column which is null is not a nominal type.
        return false;
    }
    // MOD qiongli 2011-3-8.fetature 19192,add mdColumn for MetadataColumn(delimited file)
    DataminingType dataminingType = MetadataHelper.getDataminingType(column);
    if (dataminingType != null && type == dataminingType) {
        return Boolean.TRUE;
    }
    return Boolean.FALSE;
}
Also used : DataminingType(org.talend.dataquality.indicators.DataminingType) MetadataColumn(org.talend.core.model.metadata.builder.connection.MetadataColumn) TdColumn(org.talend.cwm.relational.TdColumn)

Aggregations

TdColumn (org.talend.cwm.relational.TdColumn)182 ArrayList (java.util.ArrayList)49 TdTable (org.talend.cwm.relational.TdTable)49 ModelElement (orgomg.cwm.objectmodel.core.ModelElement)40 Test (org.junit.Test)37 ColumnSet (orgomg.cwm.resource.relational.ColumnSet)35 MetadataColumn (org.talend.core.model.metadata.builder.connection.MetadataColumn)28 RepositoryNode (org.talend.repository.model.RepositoryNode)26 IRepositoryNode (org.talend.repository.model.IRepositoryNode)23 Indicator (org.talend.dataquality.indicators.Indicator)20 Catalog (orgomg.cwm.resource.relational.Catalog)19 Connection (org.talend.core.model.metadata.builder.connection.Connection)17 DatabaseConnection (org.talend.core.model.metadata.builder.connection.DatabaseConnection)16 TdSqlDataType (org.talend.cwm.relational.TdSqlDataType)16 Analysis (org.talend.dataquality.analysis.Analysis)16 IRepositoryViewObject (org.talend.core.model.repository.IRepositoryViewObject)15 IndicatorParameters (org.talend.dataquality.indicators.IndicatorParameters)14 DBColumnRepNode (org.talend.dq.nodes.DBColumnRepNode)14 Package (orgomg.cwm.objectmodel.core.Package)14 MetadataColumnRepositoryObject (org.talend.core.repository.model.repositoryObject.MetadataColumnRepositoryObject)13