use of com.centurylink.mdw.plugin.project.model.WorkflowProject in project mdw-designer by CenturyLinkCloud.
the class CucumberTest method findTests.
public static void findTests(IFolder folder, List<CucumberTest> addTo) throws CoreException {
ResourceWrapper folderWrapper = new ResourceWrapper(folder);
WorkflowProject workflowProject = folderWrapper.getOwningWorkflowProject();
// include only non-workflow package folders
if ((workflowProject == null || workflowProject.getPackage(folder) == null) && !"testCases".equals(folder.getProjectRelativePath().toString())) {
for (IResource res : folder.members(false)) {
ResourceWrapper resourceWrapper = new ResourceWrapper(res);
IFile file = resourceWrapper.getFile();
if (file != null) {
if (file.exists() && !file.isDerived() && "feature".equals(file.getFileExtension()))
addTo.add(new CucumberTest(file.getProject(), file));
} else {
IFolder subFolder = resourceWrapper.getFolder();
if (subFolder != null && !subFolder.isDerived())
findTests(subFolder, addTo);
}
}
}
}
use of com.centurylink.mdw.plugin.project.model.WorkflowProject in project mdw-designer by CenturyLinkCloud.
the class ProcessExplorerContentProvider method getChildren.
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof WorkflowProject) {
final WorkflowProject workflowProject = (WorkflowProject) parentElement;
if (!workflowProject.isLoaded()) {
try {
IRunnableWithProgress loader = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
ProgressMonitor progressMonitor = new SwtProgressMonitor(monitor);
progressMonitor.start("Loading " + workflowProject.getLabel());
progressMonitor.progress(5);
try {
workflowProject.initialize(progressMonitor);
if (workflowProject.getDataAccess() != null) {
workflowProject.getTopLevelUserVisiblePackages(progressMonitor);
workflowProject.getArchivedUserVisiblePackagesFolder(progressMonitor);
progressMonitor.done();
}
} catch (Exception ex) {
throw new InvocationTargetException(ex);
}
}
};
ProgressMonitorDialog progMonDlg = new MdwProgressMonitorDialog(MdwPlugin.getShell());
progMonDlg.run(true, false, loader);
} catch (InvocationTargetException itx) {
if (itx.getCause() instanceof DataUnavailableException) {
PluginMessages.log(itx);
MessageDialog.openWarning(MdwPlugin.getShell(), LOAD_WF_PROJECT, itx.getCause().getMessage());
} else if (itx.getCause() instanceof DataAccessOfflineException) {
PluginMessages.log(itx);
MessageDialog.openError(MdwPlugin.getShell(), LOAD_WF_PROJECT, itx.getCause().getMessage());
return new WorkflowPackage[0];
} else {
PluginMessages.uiError(itx, LOAD_WF_PROJECT, workflowProject);
return new WorkflowPackage[0];
}
} catch (Exception ex) {
PluginMessages.uiError(ex, LOAD_WF_PROJECT, workflowProject);
return new WorkflowPackage[0];
}
}
if (workflowProject.getDataAccess() == null)
return new WorkflowPackage[0];
List<WorkflowPackage> topLevelPackages = workflowProject.getTopLevelUserVisiblePackages();
Folder archivedPackageFolder = workflowProject.getArchivedUserVisiblePackagesFolder();
int size = topLevelPackages.size();
boolean showArchived = isShowArchivedItems(workflowProject);
if (showArchived)
size++;
AutomatedTestSuite testSuite = workflowProject.getLegacyTestSuite();
if (testSuite != null && !testSuite.isEmpty())
size++;
Object[] objects = new Object[size];
for (int i = 0; i < topLevelPackages.size(); i++) objects[i] = topLevelPackages.get(i);
int cur = topLevelPackages.size();
if (showArchived) {
objects[cur] = archivedPackageFolder;
cur++;
}
if (testSuite != null && !testSuite.isEmpty())
objects[cur] = testSuite;
return objects;
} else if (parentElement instanceof WorkflowPackage) {
WorkflowPackage packageVersion = (WorkflowPackage) parentElement;
if (packageVersion.isArchived() && packageVersion.hasDescendantPackageVersions()) {
return packageVersion.getDescendantPackageVersions().toArray(new WorkflowPackage[0]);
} else {
List<WorkflowElement> elements = new ArrayList<>();
IPreferenceStore prefsStore = MdwPlugin.getDefault().getPreferenceStore();
if (!prefsStore.getBoolean(PreferenceConstants.PREFS_FILTER_PROCESSES_IN_PEX))
elements.addAll(packageVersion.getProcesses());
if (!prefsStore.getBoolean(PreferenceConstants.PREFS_FILTER_WORKFLOW_ASSETS_IN_PEX))
elements.addAll(packageVersion.getAssets());
if (!prefsStore.getBoolean(PreferenceConstants.PREFS_FILTER_EVENT_HANDLERS_IN_PEX))
elements.addAll(packageVersion.getExternalEvents());
if (prefsStore.getBoolean(PreferenceConstants.PREFS_SHOW_ACTIVITY_IMPLEMENTORS_IN_PEX))
elements.addAll(packageVersion.getActivityImpls());
if (!prefsStore.getBoolean(PreferenceConstants.PREFS_FILTER_TASK_TEMPLATES_IN_PEX))
elements.addAll(packageVersion.getTaskTemplates());
elements.addAll(packageVersion.getChildFolders());
if (isSortPackageContentsAtoZ()) {
Collections.sort(elements, new Comparator<WorkflowElement>() {
public int compare(WorkflowElement e1, WorkflowElement e2) {
return e1.getLabel().compareToIgnoreCase(e2.getLabel());
}
});
}
return elements.toArray(new Object[0]);
}
} else if (parentElement instanceof WorkflowProcess) {
WorkflowProcess processVersion = (WorkflowProcess) parentElement;
if (processVersion.hasDescendantProcessVersions()) {
return processVersion.getDescendantProcessVersions().toArray(new WorkflowProcess[0]);
} else {
return emptyARRAY;
}
} else if (parentElement instanceof Folder) {
Folder folder = (Folder) parentElement;
return folder.getChildren().toArray(new WorkflowElement[0]);
} else if (parentElement instanceof AutomatedTestSuite) {
AutomatedTestSuite testSuite = (AutomatedTestSuite) parentElement;
return testSuite.getTestCases().toArray(new AutomatedTestCase[0]);
} else if (parentElement instanceof AutomatedTestCase) {
AutomatedTestCase testCase = (AutomatedTestCase) parentElement;
if (!testCase.isLegacy())
return emptyARRAY;
List<LegacyExpectedResults> expectedResults = testCase.getLegacyExpectedResults();
List<File> files = testCase.getFiles();
Object[] objects = new Object[expectedResults.size() + files.size()];
for (int i = 0; i < expectedResults.size(); i++) objects[i] = expectedResults.get(i);
for (int i = expectedResults.size(); i < objects.length; i++) objects[i] = files.get(i - expectedResults.size());
return objects;
} else {
return emptyARRAY;
}
}
use of com.centurylink.mdw.plugin.project.model.WorkflowProject in project mdw-designer by CenturyLinkCloud.
the class ProcessExplorerContentProvider method inputChanged.
/**
* Registers this content provider as a listener to changes on the new input
* (for workflow element changes), and deregisters the viewer from the old
* input. In response to these ElementChangeEvents, we update the viewer.
*
* For now we are only listening for changes to top level processes and
* packages as well as definition documents such as scripts, templates and
* pages.
*/
@SuppressWarnings("unchecked")
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.treeViewer = (TreeViewer) viewer;
viewer.setSelection(null);
if (newInput != oldInput) {
if (oldInput != null) {
List<WorkflowProject> oldProjects = (List<WorkflowProject>) oldInput;
for (WorkflowProject oldProject : oldProjects) oldProject.removeElementChangeListener(this);
}
if (newInput != null) {
List<WorkflowProject> newProjects = (List<WorkflowProject>) newInput;
for (WorkflowProject newProject : newProjects) newProject.addElementChangeListener(this);
}
}
}
use of com.centurylink.mdw.plugin.project.model.WorkflowProject in project mdw-designer by CenturyLinkCloud.
the class ProcessExplorerDropTarget method handleDropExternalEvent.
private boolean handleDropExternalEvent(String externalEventInfo, WorkflowPackage targetPackage, int operation) {
Long externalEventId = getExternalEventId(externalEventInfo);
WorkflowProject workflowProject = targetPackage.getProject();
WorkflowPackage sourcePackage = workflowProject.getPackage(getPackageName(externalEventInfo));
DesignerProxy designerProxy = workflowProject.getDesignerProxy();
if (operation == DND.DROP_COPY) {
ExternalEvent existing = workflowProject.getExternalEvent(externalEventId);
CopyDialog copyDialog = new CopyDialog(getViewer().getControl().getShell(), existing, existing.getName(), null, targetPackage);
if (copyDialog.open() == Dialog.OK) {
String newPattern = copyDialog.getNewName();
ExternalEvent newCopy = new ExternalEvent(existing);
newCopy.setName(newPattern);
newCopy.setPackage(targetPackage);
designerProxy.registerExternalEventHandler(newCopy);
newCopy.addElementChangeListener(workflowProject);
newCopy.fireElementChangeEvent(ChangeType.ELEMENT_CREATE, newCopy);
((TreeViewer) getViewer()).refresh(targetPackage, true);
return true;
}
return false;
} else if (operation == DND.DROP_MOVE) {
if (targetPackage.isDefaultPackage()) {
designerProxy.removeExternalEventFromPackage(externalEventId, sourcePackage);
} else {
designerProxy.moveExternalEventToPackage(externalEventId, targetPackage);
}
((TreeViewer) getViewer()).refresh(targetPackage.getProject(), true);
return true;
} else {
return false;
}
}
use of com.centurylink.mdw.plugin.project.model.WorkflowProject in project mdw-designer by CenturyLinkCloud.
the class ProcessExplorerDropTarget method handleDropProcess.
/**
* @param processInfo
* @param targetPackage
* @param operation
* @return
*/
private boolean handleDropProcess(String processInfo, WorkflowPackage targetPackage, int operation) {
String processName = getProcessName(processInfo);
String version = getProcessVersion(processInfo);
WorkflowProject targetProject = targetPackage.getProject();
WorkflowPackage sourcePackage = targetProject.getPackage(getPackageName(processInfo));
DesignerProxy designerProxy = targetProject.getDesignerProxy();
if (operation == DND.DROP_COPY) {
String workflowProjectName = getWorkflowProjectName(processInfo);
WorkflowProcess existing = targetProject.getProcess(processName, version);
if (!targetPackage.getProject().getName().equals(workflowProjectName)) {
// copying from remote project
if (existing != null) {
MessageDialog.openError(getViewer().getControl().getShell(), "Copy Foreign Process", "' " + processName + " v" + version + "' already exists in workflow project '" + targetPackage.getProject().getLabel() + "'.");
return false;
}
WorkflowProject sourceProject = WorkflowProjectManager.getInstance().getWorkflowProject(workflowProjectName);
designerProxy.copyForeignProcess(processName, version, sourceProject, targetPackage);
WorkflowProcess newCopy = targetProject.getProcess(processName, "0.1");
if (newCopy != null) {
newCopy.addElementChangeListener(targetProject);
newCopy.fireElementChangeEvent(ChangeType.ELEMENT_CREATE, newCopy);
}
((TreeViewer) getViewer()).refresh(targetPackage, true);
return true;
} else {
// is there a dirty editor open?
if (existing != null) {
IEditorPart editor = findOpenEditor(existing);
if (editor != null && editor.isDirty()) {
MessageDialog.openWarning(getViewer().getControl().getShell(), "Copy Process", "' " + processName + " v" + version + "' is currently open in an editor.\nPlease save or close before copying.");
return false;
}
}
CopyDialog copyDialog = new CopyDialog(getViewer().getControl().getShell(), existing, processName, version, targetPackage);
if (copyDialog.open() == Dialog.OK) {
String newName = copyDialog.getNewName();
designerProxy.copyProcess(processName, version, newName, targetPackage);
WorkflowProcess newCopy = targetProject.getProcess(newName, "0.1");
if (newCopy != null) {
newCopy.addElementChangeListener(targetProject);
newCopy.fireElementChangeEvent(ChangeType.ELEMENT_CREATE, newCopy);
}
((TreeViewer) getViewer()).refresh(targetPackage, true);
return true;
}
}
return false;
} else if (operation == DND.DROP_MOVE) {
// don't allow multiple versions of the same process in a package
if (!targetPackage.isDefaultPackage() && targetPackage.getProcess(processName) != null) {
MessageDialog.openError(MdwPlugin.getShell(), "Process Exists", "Process '" + processName + "' already exists in package '" + targetPackage.getName() + "'.");
return false;
}
if (targetPackage.isDefaultPackage()) {
designerProxy.removeProcessFromPackage(processName, version, sourcePackage);
} else {
designerProxy.moveProcessToPackage(processName, version, targetPackage);
}
((TreeViewer) getViewer()).refresh(targetPackage.getProject(), true);
if (sourcePackage != null)
((TreeViewer) getViewer()).refresh(sourcePackage.getProject(), true);
return true;
} else {
return false;
}
}
Aggregations