/* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#performFinish() */ @Override public boolean performFinish() { final TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(container); Data workingCopy = page.getWorkingCopy(); setDatasourceId(workingCopy, dataContainmentFeature); if (editMode) { AbstractProcess process = ModelHelper.getParentProcess(container); CompoundCommand cc = new CompoundCommand(); final RefactorDataOperation op = new RefactorDataOperation(BonitaGroovyRefactoringAction.REFACTOR_OPERATION); op.setCompoundCommand(cc); op.setEditingDomain(editingDomain); op.setContainer(process); op.setNewData(workingCopy); op.setOldData(originalData); op.updateReferencesInScripts(); final boolean switchingDataeClass = !originalData.eClass().equals(workingCopy.eClass()); op.setUpdateDataReferences(switchingDataeClass); if (op.isCanExecute()) { try { getContainer().run(true, false, op); } catch (InvocationTargetException e) { BonitaStudioLog.error(e); } catch (InterruptedException e) { BonitaStudioLog.error(e); } if (switchingDataeClass) { List<?> dataList = (List<?>) container.eGet(dataContainmentFeature); int index = dataList.indexOf(originalData); cc.append( RemoveCommand.create(editingDomain, container, dataContainmentFeature, originalData)); cc.append( AddCommand.create( editingDomain, container, dataContainmentFeature, workingCopy, index)); } else { for (EStructuralFeature feature : originalData.eClass().getEAllStructuralFeatures()) { cc.append( SetCommand.create(editingDomain, originalData, feature, workingCopy.eGet(feature))); } } editingDomain.getCommandStack().execute(cc); } else { cc.dispose(); } } else { editingDomain .getCommandStack() .execute( AddCommand.create(editingDomain, container, dataContainmentFeature, workingCopy)); } try { RepositoryManager.getInstance() .getCurrentRepository() .getProject() .build( IncrementalProjectBuilder.FULL_BUILD, XtextProjectHelper.BUILDER_ID, Collections.EMPTY_MAP, null); } catch (CoreException e) { BonitaStudioLog.error(e, DataPlugin.PLUGIN_ID); } return true; }