use of com.centurylink.mdw.plugin.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class Discoverer method getFullUrl.
public String getFullUrl(Folder folder) {
String fullUrl = folder.getName();
StringBuilder folderName;
Folder parent;
Folder lFolder = folder;
while ((parent = lFolder.getParent()) != null) {
if (parent.getName().endsWith("/"))
folderName = new StringBuilder(parent.getName()).append(fullUrl);
else
folderName = new StringBuilder(parent.getName()).append("/").append(fullUrl);
lFolder = parent;
fullUrl = folderName.toString();
}
return fullUrl;
}
use of com.centurylink.mdw.plugin.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class Discoverer method removeEmptyFolders.
private void removeEmptyFolders(Folder folder) {
List<Folder> emptyFolders = new ArrayList<>();
for (WorkflowElement child : folder.getChildren()) {
if (child instanceof Folder) {
Folder childFolder = ((Folder) child);
if (childFolder.getChildren() == null)
emptyFolders.add(childFolder);
}
}
for (Folder emptyFolder : emptyFolders) {
if (emptyFolder.getParent() instanceof Folder) {
Folder parent = emptyFolder.getParent();
parent.getChildren().remove(emptyFolder);
}
}
}
use of com.centurylink.mdw.plugin.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class Discoverer method crawlForPackageFiles.
/**
* Crawls to find any package XML or JSON files.
*/
private void crawlForPackageFiles(Folder parent) throws DiscoveryException, IOException, InterruptedException {
if (progressMonitor.isCanceled())
throw new InterruptedException();
String parentUrl = getFullUrl(parent);
if (httpHelper == null)
httpHelper = new HttpHelper(new URL(parentUrl));
httpHelper.setConnectTimeout(MdwPlugin.getSettings().getHttpConnectTimeout());
httpHelper.setReadTimeout(MdwPlugin.getSettings().getHttpReadTimeout());
if (// topLevel
!parent.hasParent())
httpHelper.setFollowHtmlHeadMetaRefresh(true);
String content = httpHelper.get();
if (content.startsWith("{")) {
parseJsonPacakges(parent, content);
} else {
if (content.startsWith("<!"))
content = content.substring(content.indexOf('\n') + 1);
if (content.contains(" "))
content = content.replaceAll(" ", "").replace("<HR size=\"1\" noshade=\"noshade\">", "");
if (!parent.hasParent() && httpHelper.getRedirect() != null)
parent.setName(httpHelper.getRedirect().toString());
try {
List<String> links = parseDirectoryResponse(content);
if (!parent.hasParent())
topLevelFolders = links.size();
if (latestVersionsOnly) {
List<String> latestLinks = new ArrayList<>();
String latestDir = null;
for (String link : links) {
if (// snapshots excluded from
!link.startsWith("6") && !link.endsWith("-SNAPSHOT/")) // "latest only"
{
if (link.matches("[0-9.]*/")) {
if ((latestDir == null || latestDir.compareTo(link) < 0))
latestDir = link;
} else {
latestLinks.add(link);
}
}
}
if (latestDir != null)
latestLinks.add(latestDir);
links = latestLinks;
}
for (String link : links) {
if (!link.startsWith("6") && link.endsWith("/") && (MdwPlugin.getSettings().isIncludePreviewBuilds() || !link.endsWith("-SNAPSHOT/"))) {
// directory
if (!parent.hasParent())
progressMonitor.subTask("Scanning " + link);
Folder child = new Folder(link.substring(0, link.length() - 1));
if (link.matches("[0-9.]*/"))
parent.addChild(0, child);
else
parent.addChild(child);
httpHelper = null;
crawlForPackageFiles(child);
if (// topLevel
!parent.hasParent())
progressMonitor.worked(80 / topLevelFolders);
} else if (link.endsWith(".xml") || link.endsWith(".json")) {
// XML or JSON file
File child = new File(parent, link);
parent.addChild(0, child);
child.setUrl(new URL(getFullUrl(child)));
}
}
} catch (InterruptedException iex) {
throw iex;
} catch (Exception ex) {
throw new DiscoveryException("Error crawling: " + parentUrl, ex);
}
}
}
use of com.centurylink.mdw.plugin.designer.model.Folder 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.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class WorkflowProject method findArchivedPackages.
/**
* Returns all top-level archived (non-latest) packages, populated with
* their descendants which include the appropriate process versions. Uses
* 10% of progressMonitor.
*/
private Folder findArchivedPackages(ProgressMonitor progressMonitor, boolean visiblePkgsOnly) {
CodeTimer timer = new CodeTimer("findAuthorizedArchivedPackages()");
if (progressMonitor != null)
progressMonitor.subTask("Organizing packages");
Folder archivedPkgFolder = new Folder("Archive", this);
archivedPkgFolder.setIcon("archive.gif");
List<WorkflowPackage> topLevelArchivedPackageList = new ArrayList<>();
List<WorkflowPackage> allArchivedPackages = new ArrayList<>();
for (PackageVO packageVO : getDataAccess().getPackages(false)) {
if (isShowDefaultPackage() || !packageVO.isDefaultPackage()) {
WorkflowPackage potentialArchived = new WorkflowPackage(this, packageVO);
if (!getTopLevelPackages().contains(potentialArchived)) {
potentialArchived.setArchived(true);
potentialArchived.setProcesses(findProcesses(potentialArchived));
potentialArchived.setAssets(findWorkflowAssets(potentialArchived));
potentialArchived.setActivityImpls(findActivityImplementors(potentialArchived));
potentialArchived.setExternalEvents(findExternalEvents(potentialArchived));
potentialArchived.setTaskTemplates(findTaskTemplates(potentialArchived));
allArchivedPackages.add(potentialArchived);
}
}
}
// organize the package version hierarchy
Map<String, WorkflowPackage> topLevelArchivedPackages = new HashMap<>();
for (WorkflowPackage archivedPackage : allArchivedPackages) {
WorkflowPackage topLevel = topLevelArchivedPackages.get(archivedPackage.getName());
if ((!visiblePkgsOnly || (visiblePkgsOnly && archivedPackage.isVisible())) && (topLevel == null || archivedPackage.getPackageVO().getVersion() > topLevel.getPackageVO().getVersion()))
topLevelArchivedPackages.put(archivedPackage.getName(), archivedPackage);
}
for (WorkflowPackage topLevelArchivedPackage : topLevelArchivedPackages.values()) {
for (WorkflowPackage archivedPackage : allArchivedPackages) {
if (topLevelArchivedPackage.getName().equals(archivedPackage.getName()) && (!visiblePkgsOnly || (visiblePkgsOnly && archivedPackage.isVisible()))) {
if (topLevelArchivedPackage.equals(archivedPackage)) {
// clone top-level process for first child
WorkflowPackage firstChild = new WorkflowPackage(topLevelArchivedPackage);
firstChild.setArchived(true);
firstChild.setTopLevelVersion(topLevelArchivedPackage);
firstChild.setProcesses(topLevelArchivedPackage.getProcesses());
firstChild.setAssets(topLevelArchivedPackage.getAssets());
firstChild.setActivityImpls(topLevelArchivedPackage.getActivityImpls());
firstChild.setExternalEvents(topLevelArchivedPackage.getExternalEvents());
firstChild.setTaskTemplates(topLevelArchivedPackage.getTaskTemplates());
topLevelArchivedPackage.addDescendantPackageVersion(firstChild);
} else {
archivedPackage.setTopLevelVersion(topLevelArchivedPackage);
topLevelArchivedPackage.addDescendantPackageVersion(archivedPackage);
}
}
}
topLevelArchivedPackageList.add(topLevelArchivedPackage);
topLevelArchivedPackage.setArchivedFolder(archivedPkgFolder);
}
Collections.sort(topLevelArchivedPackageList);
if (isShowDefaultPackage()) {
// add unpackaged (default package)
PackageVO defaultPackageVO = new PackageVO();
defaultPackageVO.setPackageId(Long.valueOf(0));
defaultPackageVO.setPackageName(PackageVO.DEFAULT_PACKAGE_NAME);
archivedDefaultPackage = new WorkflowPackage(this, defaultPackageVO);
archivedDefaultPackage.setProcesses(findUnpackagedProcesses());
archivedDefaultPackage.setChildFolders(findUnpackagedAssetFolders());
archivedDefaultPackage.setArchived(true);
topLevelArchivedPackageList.add(0, archivedDefaultPackage);
}
List<WorkflowElement> children = new ArrayList<>();
children.addAll(topLevelArchivedPackageList);
archivedPkgFolder.setChildren(children);
if (progressMonitor != null)
progressMonitor.progress(10);
timer.stopAndLog();
return archivedPkgFolder;
}
Aggregations