Search in sources :

Example 1 with SynTreeModel

use of org.talend.dataprofiler.core.ui.dialog.AnalyzedElementSynDialog.SynTreeModel 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)

Aggregations

InvocationTargetException (java.lang.reflect.InvocationTargetException)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 IRunnableWithProgress (org.eclipse.jface.operation.IRunnableWithProgress)1 Shell (org.eclipse.swt.widgets.Shell)1 DelimitedFileConnection (org.talend.core.model.metadata.builder.connection.DelimitedFileConnection)1 ReloadCompareException (org.talend.cwm.compare.exception.ReloadCompareException)1 TdColumn (org.talend.cwm.relational.TdColumn)1 AnalyzedColumnSetsSynDialog (org.talend.dataprofiler.core.ui.dialog.AnalyzedColumnSetsSynDialog)1 AnalyzedColumnsSynDialog (org.talend.dataprofiler.core.ui.dialog.AnalyzedColumnsSynDialog)1 SynTreeModel (org.talend.dataprofiler.core.ui.dialog.AnalyzedElementSynDialog.SynTreeModel)1 AnalyzedPackageSynDialog (org.talend.dataprofiler.core.ui.dialog.AnalyzedPackageSynDialog)1 ReturnCode (org.talend.utils.sugars.ReturnCode)1 ModelElement (orgomg.cwm.objectmodel.core.ModelElement)1 Package (orgomg.cwm.objectmodel.core.Package)1 ColumnSet (orgomg.cwm.resource.relational.ColumnSet)1