use of com.centurylink.mdw.plugin.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class Discoverer method getAssetTopFolder.
public Folder getAssetTopFolder(boolean latestVersionsOnly, IProgressMonitor progressMonitor) throws DiscoveryException, IOException, InterruptedException {
this.latestVersionsOnly = latestVersionsOnly;
this.progressMonitor = progressMonitor;
progressMonitor.worked(10);
CodeTimer timer = new CodeTimer("crawl for assets");
Folder topFolder = new Folder(MdwPlugin.getSettings().getMdwReleasesUrl());
if (groupId != null) {
Discover discover = new Discover(groupId, latestVersionsOnly);
parseJsonPacakges(topFolder, discover.run(new SwtProgressMonitor(progressMonitor)).getPackages().toString());
} else if (url != null) {
topFolder = new Folder(url.toString());
crawlForPackageFiles(topFolder);
removeEmptyFolders(topFolder);
}
timer.stopAndLog();
return topFolder;
}
use of com.centurylink.mdw.plugin.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class WorkflowProject method findUnpackagedAssetFolders.
/**
* Returns the folders for unpackaged archived workflow assets. Side-effect:
* If an unpackaged version is later than any package, add to default
* package.
*/
private List<Folder> findUnpackagedAssetFolders() {
CodeTimer timer = new CodeTimer("findUnpackagedAssetFolders()");
Map<String, Folder> upAssetFolders = new HashMap<>();
Map<String, List<RuleSetVO>> nonLatestUnpackaged = new HashMap<>();
for (RuleSetVO ruleSetVO : getDataAccess().getRuleSets(false)) {
if (!isPackaged(ruleSetVO)) {
// if version is later than that in any non-archived package,
// it belongs in the top-level default package
boolean laterThanPackaged = true;
for (WorkflowPackage pkg : getTopLevelPackages()) {
WorkflowAsset packaged = pkg.getAsset(ruleSetVO.getName());
if (packaged != null && packaged.getVersion() >= ruleSetVO.getVersion()) {
laterThanPackaged = false;
break;
}
}
boolean latestUnpackaged = true;
if (laterThanPackaged) {
WorkflowAsset defPkgAsset = getDefaultPackage().getAsset(ruleSetVO.getName());
if (defPkgAsset != null) {
if (defPkgAsset.getVersion() > ruleSetVO.getVersion()) {
latestUnpackaged = false;
} else if (defPkgAsset.getVersion() < ruleSetVO.getVersion()) {
defPkgAsset.removeElementChangeListener(this);
getDefaultPackage().removeAsset(defPkgAsset);
WorkflowAssetFactory.deRegisterAsset(defPkgAsset);
List<RuleSetVO> list = nonLatestUnpackaged.get(ruleSetVO.getName());
if (list == null) {
list = new ArrayList<>();
nonLatestUnpackaged.put(ruleSetVO.getName(), list);
}
list.add(defPkgAsset.getRuleSetVO());
}
}
}
if (laterThanPackaged && latestUnpackaged) {
WorkflowAsset asset = WorkflowAssetFactory.createAsset(ruleSetVO, getDefaultPackage());
if (asset != null) {
asset.addElementChangeListener(this);
getDefaultPackage().addAsset(asset);
WorkflowAssetFactory.registerAsset(asset);
}
} else {
List<RuleSetVO> list = nonLatestUnpackaged.get(ruleSetVO.getName());
if (list == null) {
list = new ArrayList<>();
nonLatestUnpackaged.put(ruleSetVO.getName(), list);
}
list.add(ruleSetVO);
}
}
}
for (String rsName : nonLatestUnpackaged.keySet()) {
List<RuleSetVO> list = nonLatestUnpackaged.get(rsName);
Collections.sort(list, new Comparator<RuleSetVO>() {
public int compare(RuleSetVO rs1, RuleSetVO rs2) {
return rs2.getVersion() - rs1.getVersion();
}
});
for (RuleSetVO rs : list) {
WorkflowAsset asset = WorkflowAssetFactory.createAsset(rs, archivedDefaultPackage);
if (asset != null) {
Folder folder = upAssetFolders.get(asset.getName());
if (folder == null) {
folder = WorkflowAssetFactory.createAssetFolder(asset);
upAssetFolders.put(asset.getName(), folder);
} else {
folder.getChildren().add(asset);
}
}
}
}
List<Folder> folders = new ArrayList<>();
folders.addAll(upAssetFolders.values());
Collections.sort(folders);
timer.stopAndLog();
return folders;
}
use of com.centurylink.mdw.plugin.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class ImportPackagePage method removeGitVersionedPackages.
/**
* Not foolproof since it relies on asset XML naming convention. returns
* emptyFolders to be pruned.
*/
private List<Folder> removeGitVersionedPackages(Folder folder) {
List<Folder> emptyFolders = new ArrayList<>();
Map<File, Folder> toRemove = new HashMap<>();
for (WorkflowElement child : folder.getChildren()) {
if (child instanceof Folder) {
for (Folder emptyFolder : removeGitVersionedPackages((Folder) child)) {
if (!emptyFolders.contains(emptyFolder))
emptyFolders.add(emptyFolder);
}
} else if (child instanceof File) {
File file = (File) child;
String pkgName = file.getName();
if (file.getParent() instanceof Folder && pkgName.endsWith(".xml")) {
pkgName = pkgName.substring(0, pkgName.length() - 3);
int lastDash = pkgName.lastIndexOf('-');
if (lastDash > 0) {
pkgName = pkgName.substring(0, lastDash);
for (WorkflowPackage gitPackage : getProject().getTopLevelPackages()) {
if (pkgName.equals(gitPackage.getName())) {
PluginMessages.log("Import excludes VCS package: " + pkgName);
toRemove.put(file, (Folder) file.getParent());
}
}
}
}
}
}
if (!toRemove.isEmpty()) {
getImportPackageWizard().getImportPackageSelectPage().setInfo("Some packages are not displayed since they exist in version control.");
for (Map.Entry<File, Folder> file : toRemove.entrySet()) {
Folder removeFrom = file.getValue();
removeFrom.getChildren().remove(file.getKey());
if (removeFrom.getChildren().isEmpty())
emptyFolders.add(removeFrom);
}
}
return emptyFolders;
}
use of com.centurylink.mdw.plugin.designer.model.Folder in project mdw-designer by CenturyLinkCloud.
the class ImportPackageWizard method init.
public void init(IWorkbench workbench, IStructuredSelection selection) {
setDefaultPageImageDescriptor(MdwPlugin.getImageDescriptor("icons/mdw_wiz.png"));
setNeedsProgressMonitor(true);
setWindowTitle("MDW Import");
importPackagePage = new ImportPackagePage();
importPackageSelectPage = new ImportPackageSelectPage();
topFolder = new Folder("assets");
if (selection != null && selection.getFirstElement() instanceof WorkflowProject) {
WorkflowProject workflowProject = (WorkflowProject) selection.getFirstElement();
topFolder.setProject(workflowProject);
} else if (selection != null && selection.getFirstElement() instanceof WorkflowPackage) {
WorkflowPackage packageVersion = (WorkflowPackage) selection.getFirstElement();
topFolder.setProject(packageVersion.getProject());
} else {
WorkflowProject workflowProject = WorkflowProjectManager.getInstance().findWorkflowProject(selection);
if (workflowProject != null)
topFolder.setProject(workflowProject);
}
}
Aggregations