Search in sources :

Example 6 with ExternalEvent

use of com.centurylink.mdw.plugin.designer.model.ExternalEvent in project mdw-designer by CenturyLinkCloud.

the class ProcessExplorerDropTarget method checkForDuplicates.

/**
 * Returns true if duplicates found.
 */
private boolean checkForDuplicates(WorkflowPackage targetPackage, String[] elements) {
    for (String element : elements) {
        if (element.startsWith("Process~")) {
            String processName = element.substring(8);
            for (WorkflowProcess process : targetPackage.getProcesses()) {
                if (process.getName().equals(processName)) {
                    String msg = PACAKGE + targetPackage.getName() + "' already contains version " + process.getVersionLabel() + " of process '" + process.getName() + "'";
                    MessageDialog.openError(getViewer().getControl().getShell(), "Duplicate Process", msg);
                    return true;
                }
            }
        } else if (element.startsWith("ExternalEvent~")) {
            String externalEventName = element.substring(14);
            for (ExternalEvent externalEvent : targetPackage.getExternalEvents()) {
                if (externalEvent.getName().equals(externalEventName)) {
                    String msg = PACAKGE + targetPackage.getName() + "' already contains " + " an external event named '" + externalEvent.getName() + "'";
                    MessageDialog.openError(getViewer().getControl().getShell(), "Duplicate External Event", msg);
                    return true;
                }
            }
        } else if (element.startsWith("ActivityImpl~")) {
        // TODO: dups okay?
        } else if (element.startsWith("WorkflowAsset~")) {
            String assetName = element.substring(14);
            for (WorkflowAsset asset : targetPackage.getAssets()) {
                if (asset.getName().equals(assetName)) {
                    String msg = PACAKGE + targetPackage.getName() + "' already contains " + " an definition document named '" + asset.getName() + "'";
                    MessageDialog.openError(getViewer().getControl().getShell(), "Duplicate Definition Doc", msg);
                    return true;
                }
            }
        }
    }
    return false;
}
Also used : WorkflowAsset(com.centurylink.mdw.plugin.designer.model.WorkflowAsset) ExternalEvent(com.centurylink.mdw.plugin.designer.model.ExternalEvent) WorkflowProcess(com.centurylink.mdw.plugin.designer.model.WorkflowProcess)

Example 7 with ExternalEvent

use of com.centurylink.mdw.plugin.designer.model.ExternalEvent in project mdw-designer by CenturyLinkCloud.

the class WorkflowProject method findExternalEvents.

/**
 * Returns the external events belonging to a package version.
 */
private List<ExternalEvent> findExternalEvents(WorkflowPackage aPackage) {
    if (aPackage.isDefaultPackage()) {
        List<ExternalEvent> unpackagedExternalEvents = new ArrayList<>();
        for (ExternalEventVO externalEventVO : getDataAccess().getExternalEvents(false)) {
            if (!isPackaged(externalEventVO)) {
                ExternalEvent externalEvent = new ExternalEvent(externalEventVO, aPackage);
                externalEvent.addElementChangeListener(this);
                unpackagedExternalEvents.add(externalEvent);
            }
        }
        Collections.sort(unpackagedExternalEvents);
        return unpackagedExternalEvents;
    } else {
        List<ExternalEvent> packagedExternalEvents = new ArrayList<>();
        for (ExternalEventVO externalEventVO : getDataAccess().getExternalEvents(false)) {
            if (aPackage.getPackageVO().containsExternalEvent(externalEventVO.getId())) {
                ExternalEvent externalEvent = new ExternalEvent(externalEventVO, aPackage);
                if (!packagedExternalEvents.contains(externalEvent)) {
                    externalEvent.addElementChangeListener(this);
                    packagedExternalEvents.add(externalEvent);
                }
            }
        }
        Collections.sort(packagedExternalEvents);
        return packagedExternalEvents;
    }
}
Also used : ExternalEventVO(com.centurylink.mdw.model.value.event.ExternalEventVO) ArrayList(java.util.ArrayList) ExternalEvent(com.centurylink.mdw.plugin.designer.model.ExternalEvent)

Example 8 with ExternalEvent

use of com.centurylink.mdw.plugin.designer.model.ExternalEvent in project mdw-designer by CenturyLinkCloud.

the class WorkflowProject method getAllExternalEvents.

/**
 * Returns all external events regardless of packaging and archive status.
 */
/**
 * Returns all event handlers, regardless of packaging.
 */
public List<ExternalEvent> getAllExternalEvents() {
    List<ExternalEvent> allHandlers = new ArrayList<>();
    for (WorkflowPackage pkg : getTopLevelPackages()) {
        for (ExternalEvent handler : pkg.getExternalEvents()) {
            if (!allHandlers.contains(handler))
                allHandlers.add(handler);
        }
    }
    for (WorkflowElement topLevelArchived : getArchivedPackageFolder().getChildren()) {
        if (topLevelArchived instanceof WorkflowPackage) {
            WorkflowPackage topLevelPkg = (WorkflowPackage) topLevelArchived;
            if (topLevelPkg.hasDescendantPackageVersions()) {
                for (WorkflowPackage pkg : topLevelPkg.getDescendantPackageVersions()) {
                    for (ExternalEvent handler : pkg.getExternalEvents()) {
                        if (!allHandlers.contains(handler))
                            allHandlers.add(handler);
                    }
                }
            }
        }
    }
    Collections.sort(allHandlers);
    return allHandlers;
}
Also used : WorkflowPackage(com.centurylink.mdw.plugin.designer.model.WorkflowPackage) ArrayList(java.util.ArrayList) ExternalEvent(com.centurylink.mdw.plugin.designer.model.ExternalEvent) WorkflowElement(com.centurylink.mdw.plugin.designer.model.WorkflowElement)

Example 9 with ExternalEvent

use of com.centurylink.mdw.plugin.designer.model.ExternalEvent in project mdw-designer by CenturyLinkCloud.

the class ExternalEventLaunchShortcut method launch.

public void launch(ISelection selection, String mode) {
    Object firstElement = ((StructuredSelection) selection).getFirstElement();
    if (firstElement instanceof ExternalEvent) {
        ExternalEvent externalEvent = (ExternalEvent) firstElement;
        try {
            boolean prevEnablement = disableBuildBeforeLaunch();
            performLaunch(externalEvent, mode);
            setBuildBeforeLaunch(prevEnablement);
        } catch (Exception ex) {
            PluginMessages.uiError(ex, "Launch External Event", externalEvent.getProject());
        }
    }
}
Also used : StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) ExternalEvent(com.centurylink.mdw.plugin.designer.model.ExternalEvent) CoreException(org.eclipse.core.runtime.CoreException)

Example 10 with ExternalEvent

use of com.centurylink.mdw.plugin.designer.model.ExternalEvent in project mdw-designer by CenturyLinkCloud.

the class WorkflowElementActionHandler method delete.

public void delete(WorkflowElement[] elements) {
    boolean globalConf = false;
    boolean includeInstances = false;
    if (elements.length > 1) {
        boolean globalConfAllowed = true;
        List<WorkflowElement> lockedElems = new ArrayList<WorkflowElement>();
        for (WorkflowElement element : elements) {
            if ((element instanceof WorkflowProject) || (element instanceof WorkflowPackage)) {
                globalConfAllowed = false;
                break;
            } else if (element instanceof WorkflowProcess) {
                WorkflowProcess pv = (WorkflowProcess) element;
                if (pv.getLockingUser() != null && !pv.isLockedToUser())
                    lockedElems.add(pv);
            } else if (element instanceof WorkflowAsset) {
                WorkflowAsset dd = (WorkflowAsset) element;
                if (dd.getLockingUser() != null && !dd.isLockedToUser())
                    lockedElems.add(dd);
            }
        }
        if (!lockedElems.isEmpty()) {
            PluginMessages.uiList(getShell(), "Error: The following elements are locked to other users.\nPlease exclude them from your selection or have them unlocked before proceeding.", "Delete Elements", lockedElems);
            return;
        }
        if (globalConfAllowed) {
            WorkflowElementDeleteDialog multipleDeleteDialog = new WorkflowElementDeleteDialog(getShell(), Arrays.asList(elements));
            int res = multipleDeleteDialog.open();
            if (res == Dialog.CANCEL)
                return;
            else if (res == Dialog.OK) {
                globalConf = true;
                includeInstances = multipleDeleteDialog.isIncludeInstances();
            }
        }
    }
    for (WorkflowElement element : elements) {
        if (element instanceof WorkflowProject) {
            WorkflowProject workflowProject = (WorkflowProject) element;
            if (!workflowProject.isRemote()) {
                MessageDialog.openWarning(getShell(), "Delete Project", "Please delete the underlying Java Project in Package Explorer view.");
                return;
            }
            boolean confirmed = MessageDialog.openConfirm(getShell(), "Confirm Delete", "Delete workflow project: " + workflowProject.getName() + "?");
            if (confirmed) {
                WorkflowProjectManager.getInstance().deleteProject(workflowProject);
                workflowProject.fireElementChangeEvent(ChangeType.ELEMENT_DELETE, null);
            } else {
                return;
            }
        } else if (element instanceof AutomatedTestCase && ((AutomatedTestCase) element).isLegacy()) {
            // still allow deletion of legacy test stuff
            final AutomatedTestCase testCase = (AutomatedTestCase) element;
            if (globalConf || MessageDialog.openConfirm(getShell(), "Delete Legacy Test Case", "Delete " + testCase.getLabel() + "?")) {
                BusyIndicator.showWhile(Display.getCurrent(), new Runnable() {

                    public void run() {
                        File tcDir = testCase.getTestCaseDirectory();
                        try {
                            PluginUtil.deleteDirectory(tcDir);
                            testCase.getTestSuite().getTestCases().remove(testCase);
                            try {
                                IFolder folder = testCase.getProject().getOldTestCasesFolder();
                                if (folder.exists())
                                    folder.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
                            } catch (CoreException ex) {
                                PluginMessages.uiError(ex, "Delete Legacy Test Case", testCase.getProject());
                            }
                            testCase.fireElementChangeEvent(ChangeType.ELEMENT_DELETE, null);
                            testCase.removeElementChangeListener(testCase.getProject());
                        } catch (IOException ex) {
                            PluginMessages.uiError(ex, "Delete Test Case", testCase.getProject());
                        }
                    }
                });
            }
        } else if (element instanceof LegacyExpectedResults) {
            final LegacyExpectedResults expectedResult = (LegacyExpectedResults) element;
            if (globalConf || MessageDialog.openConfirm(getShell(), "Delete Legacy Expected Result", "Delete " + expectedResult.getLabel() + "?")) {
                BusyIndicator.showWhile(Display.getCurrent(), new Runnable() {

                    public void run() {
                        File file = expectedResult.getExpectedResultFile();
                        if (file.delete()) {
                            expectedResult.getTestCase().getLegacyExpectedResults().remove(expectedResult);
                            try {
                                IFolder folder = expectedResult.getProject().getOldTestCasesFolder();
                                if (folder.exists())
                                    folder.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
                            } catch (CoreException ex) {
                                PluginMessages.uiError(ex, "Delete Legacy Expected Result", expectedResult.getProject());
                            }
                            expectedResult.fireElementChangeEvent(ChangeType.ELEMENT_DELETE, null);
                            expectedResult.removeElementChangeListener(expectedResult.getProject());
                        } else {
                            PluginMessages.uiError("Cannot delete expected result " + expectedResult.getName(), "Delete Result", expectedResult.getProject());
                        }
                    }
                });
            }
        } else if (element instanceof com.centurylink.mdw.plugin.designer.model.File) {
            final com.centurylink.mdw.plugin.designer.model.File file = (com.centurylink.mdw.plugin.designer.model.File) element;
            if (globalConf || MessageDialog.openConfirm(getShell(), "Delete File", "Delete " + file.getLabel() + "?")) {
                BusyIndicator.showWhile(Display.getCurrent(), new Runnable() {

                    public void run() {
                        IFile workspaceFile = file.getWorkspaceFile();
                        try {
                            workspaceFile.delete(true, null);
                            WorkflowElement parent = file.getParent();
                            if (parent instanceof AutomatedTestCase) {
                                AutomatedTestCase testCase = (AutomatedTestCase) parent;
                                testCase.getFiles().remove(file);
                            }
                            file.fireElementChangeEvent(ChangeType.ELEMENT_DELETE, null);
                            file.removeElementChangeListener(file.getProject());
                            refresh(file.getProject().getLegacyTestSuite());
                        } catch (Exception ex) {
                            PluginMessages.uiError("Cannot delete file " + file.getName(), "Delete File", file.getProject());
                        }
                    }
                });
            }
        } else {
            WorkflowProject workflowProject = element.getProject();
            DesignerProxy designerProxy = workflowProject.getDesignerProxy();
            if (element instanceof WorkflowPackage) {
                WorkflowPackage packageToDelete = (WorkflowPackage) element;
                PackageDeleteDialog packageDeleteDialog = new PackageDeleteDialog(getShell(), packageToDelete);
                if (packageDeleteDialog.open() == Dialog.OK) {
                    designerProxy.deletePackage(packageToDelete);
                } else {
                    return;
                }
            } else if (element instanceof WorkflowProcess) {
                WorkflowProcess processVersion = (WorkflowProcess) element;
                if (!processVersion.getProject().isFilePersist() && processVersion.getLockingUser() != null && !processVersion.isLockedToUser()) {
                    MessageDialog.openError(getShell(), "Cannot Delete", "Process '" + processVersion.getLabel() + "' is locked to user '" + processVersion.getLockingUser() + "'.\nPlease have it unlocked before deleting.");
                    return;
                }
                ProcessDeleteDialog deleteDialog = new ProcessDeleteDialog(getShell(), processVersion);
                if (globalConf || deleteDialog.open() == Dialog.OK) {
                    closeOpenEditor(processVersion, false);
                    includeInstances = includeInstances || deleteDialog.isIncludeInstances();
                    designerProxy.deleteProcess(processVersion, includeInstances);
                } else {
                    return;
                }
            } else if (element instanceof TaskTemplate) {
                TaskTemplate taskTemplate = (TaskTemplate) element;
                if (globalConf || MessageDialog.openConfirm(getShell(), "Confirm Delete", "Delete " + taskTemplate.getTitle() + " '" + taskTemplate.getLabel() + "'?")) {
                    designerProxy.deleteTaskTemplate(taskTemplate);
                } else {
                    return;
                }
            } else if (element instanceof WorkflowAsset) {
                WorkflowAsset asset = (WorkflowAsset) element;
                if (!asset.getProject().isFilePersist() && asset.getLockingUser() != null && !asset.isLockedToUser()) {
                    MessageDialog.openError(getShell(), "Cannot Delete", asset.getTitle() + " '" + asset.getLabel() + "' is locked to user '" + asset.getLockingUser() + "'.\nPlease have it unlocked before deleting");
                    return;
                }
                if (globalConf || MessageDialog.openConfirm(getShell(), "Confirm Delete", "Delete " + asset.getTitle() + " '" + asset.getLabel() + "'?")) {
                    if (asset.getFileEditor() != null) {
                        IEditorInput editorInput = asset.getFileEditor().getEditorInput();
                        if (editorInput != null)
                            closeOpenEditor(editorInput, false);
                    }
                    WorkflowAssetFactory.deRegisterAsset(asset);
                    designerProxy.deleteWorkflowAsset(asset);
                } else {
                    return;
                }
            } else if (element instanceof ActivityImpl) {
                ActivityImpl activityImpl = (ActivityImpl) element;
                ActivityImplDeleteDialog deleteDialog = new ActivityImplDeleteDialog(getShell(), activityImpl);
                if (globalConf || deleteDialog.open() == Dialog.OK) {
                    designerProxy.deleteActivityImpl(activityImpl, deleteDialog.isIncludeActivities());
                } else {
                    return;
                }
            } else if (element instanceof ExternalEvent) {
                ExternalEvent externalEvent = (ExternalEvent) element;
                if (globalConf || MessageDialog.openConfirm(getShell(), "Confirm Delete", "Delete Event Handler: " + externalEvent.getLabel() + "?")) {
                    designerProxy.deleteExternalEvent(externalEvent);
                } else {
                    return;
                }
            } else if (element instanceof TaskTemplate) {
                MessageDialog.openWarning(getShell(), "TODO", "Delete task template not yet implemented");
            }
            if (RunnerStatus.SUCCESS.equals(designerProxy.getRunnerStatus())) {
                // notify listeners
                element.fireElementChangeEvent(ChangeType.ELEMENT_DELETE, null);
                element.removeElementChangeListener(workflowProject);
            }
        }
    }
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) WorkflowPackage(com.centurylink.mdw.plugin.designer.model.WorkflowPackage) IFile(org.eclipse.core.resources.IFile) ArrayList(java.util.ArrayList) WorkflowElementDeleteDialog(com.centurylink.mdw.plugin.designer.dialogs.WorkflowElementDeleteDialog) ProcessDeleteDialog(com.centurylink.mdw.plugin.designer.dialogs.ProcessDeleteDialog) WorkflowAsset(com.centurylink.mdw.plugin.designer.model.WorkflowAsset) PackageDeleteDialog(com.centurylink.mdw.plugin.designer.dialogs.PackageDeleteDialog) ExternalEvent(com.centurylink.mdw.plugin.designer.model.ExternalEvent) AutomatedTestCase(com.centurylink.mdw.plugin.designer.model.AutomatedTestCase) WorkflowProcess(com.centurylink.mdw.plugin.designer.model.WorkflowProcess) TaskTemplate(com.centurylink.mdw.plugin.designer.model.TaskTemplate) DesignerProxy(com.centurylink.mdw.plugin.designer.DesignerProxy) WorkflowProject(com.centurylink.mdw.plugin.project.model.WorkflowProject) IOException(java.io.IOException) CoreException(org.eclipse.core.runtime.CoreException) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) PartInitException(org.eclipse.ui.PartInitException) InvocationTargetException(java.lang.reflect.InvocationTargetException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) CoreException(org.eclipse.core.runtime.CoreException) ActivityImpl(com.centurylink.mdw.plugin.designer.model.ActivityImpl) LegacyExpectedResults(com.centurylink.mdw.plugin.designer.model.LegacyExpectedResults) ActivityImplDeleteDialog(com.centurylink.mdw.plugin.designer.dialogs.ActivityImplDeleteDialog) IFile(org.eclipse.core.resources.IFile) File(java.io.File) JarFile(com.centurylink.mdw.plugin.designer.model.JarFile) WorkflowElement(com.centurylink.mdw.plugin.designer.model.WorkflowElement) IEditorInput(org.eclipse.ui.IEditorInput) IFolder(org.eclipse.core.resources.IFolder)

Aggregations

ExternalEvent (com.centurylink.mdw.plugin.designer.model.ExternalEvent)18 WorkflowProcess (com.centurylink.mdw.plugin.designer.model.WorkflowProcess)11 WorkflowAsset (com.centurylink.mdw.plugin.designer.model.WorkflowAsset)8 WorkflowProject (com.centurylink.mdw.plugin.project.model.WorkflowProject)8 WorkflowPackage (com.centurylink.mdw.plugin.designer.model.WorkflowPackage)7 PartInitException (org.eclipse.ui.PartInitException)6 WorkflowElement (com.centurylink.mdw.plugin.designer.model.WorkflowElement)5 ActivityImpl (com.centurylink.mdw.plugin.designer.model.ActivityImpl)4 AutomatedTestCase (com.centurylink.mdw.plugin.designer.model.AutomatedTestCase)4 TaskTemplate (com.centurylink.mdw.plugin.designer.model.TaskTemplate)4 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)4 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)4 ExternalEventVO (com.centurylink.mdw.model.value.event.ExternalEventVO)3 ArrayList (java.util.ArrayList)3 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)3 IEditorPart (org.eclipse.ui.IEditorPart)3 DesignerProxy (com.centurylink.mdw.plugin.designer.DesignerProxy)2 Activity (com.centurylink.mdw.plugin.designer.model.Activity)2 AdapterActivity (com.centurylink.mdw.plugin.designer.model.Activity.AdapterActivity)2 EvaluatorActivity (com.centurylink.mdw.plugin.designer.model.Activity.EvaluatorActivity)2