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);
}
Aggregations