@Override public boolean isInstalled(String pkgId) { DownloadablePackage pkg = getLocalPackage(pkgId); return (pkg != null && pkg.getPackageState().isInstalled()); }
@Override public List<DownloadablePackage> listPackages(PackageType type, String currentTargetPlatform) { List<DownloadablePackage> all = listPackages(); return all.stream().filter(pkg -> { // the TP filter only applies on remote packages return (pkg.getPackageState() != PackageState.REMOTE || StringUtils.isBlank(currentTargetPlatform) || TargetPlatformFilterHelper.isCompatibleWithTargetPlatform(pkg, currentTargetPlatform)) && (type == null || type.equals(pkg.getType())); }).collect(Collectors.toList()); }
@Override public List<DownloadablePackage> listInstalledPackages() { List<DownloadablePackage> res = new ArrayList<>(); for (PackageSource source : localSources) { for (DownloadablePackage pkg : source.listPackages()) { if (pkg.getPackageState().isInstalled()) { res.add(pkg); } } } Collections.sort(res, new PackageComparator()); return res; }
@Override public List<Version> findLocalPackageInstalledVersions(String packageName) { List<Version> versions = new ArrayList<>(); for (PackageSource source : localSources) { for (DownloadablePackage pkg : source.listPackages()) { if (pkg.getName().equals(packageName) && pkg.getPackageState().isInstalled()) { versions.add(pkg.getVersion()); } } } return versions; }
/** * @param pkg * @since 1.4.11 */ public void setPkg(DownloadablePackage pkg) { this.pkg = pkg; cudfName = pkg.getName(); setInstalled(pkg.getPackageState().isInstalled()); }
@Override public List<Version> getPreferedVersions(String pkgName) { List<Version> versions = new ArrayList<>(); List<Version> installedVersions = new ArrayList<>(); List<Version> localVersions = new ArrayList<>(); List<Version> remoteVersions = new ArrayList<>(); for (PackageSource source : localSources) { for (DownloadablePackage pkg : source.listPackagesByName(pkgName)) { if (pkg.getPackageState().isInstalled()) { installedVersions.add(pkg.getVersion()); } else { localVersions.add(pkg.getVersion()); } } } for (PackageSource source : remoteSources) { for (DownloadablePackage pkg : source.listPackagesByName(pkgName, currentTargetPlatform)) { remoteVersions.add(pkg.getVersion()); } } Collections.sort(localVersions); Collections.sort(remoteVersions); versions.addAll(installedVersions); versions.addAll(localVersions); versions.addAll(remoteVersions); return versions; }
public synchronized void sort(PackageManager pm) { localPackagesToUpgrade.clear(); newPackagesToDownload.clear(); localPackagesToInstall.clear(); localUnchangedPackages.clear(); allPackagesToDownload.clear(); for (String pkgName : allPackages.keySet()) { String id = pkgName + "-" + allPackages.get(pkgName).toString(); DownloadablePackage pkg = pm.findPackageById(id); List<Version> installedVersions = pm.findLocalPackageInstalledVersions(pkg.getName()); if (pkg.getPackageState().isInstalled() && !orderedRemovablePackages.contains(id)) { // Already installed in the wanted version and not to be removed, nothing to do localUnchangedPackages.put(pkg.getName(), pkg.getVersion()); } else { if (installedVersions.size() > 0 && !installedVersions.contains(pkg.getVersion())) { // Upgrade case: already installed in other version(s) localPackagesToUpgrade.put(pkg.getName(), installedVersions.get(installedVersions.size() - 1)); } if (pkg.getPackageState() == PackageState.REMOTE) { // Needs to be download newPackagesToDownload.put(pkg.getName(), pkg.getVersion()); allPackagesToDownload.add(id); } else { // Already in local cache localPackagesToInstall.put(pkg.getName(), pkg.getVersion()); } } } sorted = true; }
public NuxeoCUDFPackage(DownloadablePackage pkg) { this.pkg = pkg; cudfName = pkg.getName(); // NXP-9268: Workaround for nuxeo-content-browser if ("nuxeo-content-browser".equals(cudfName) && "cmf".equalsIgnoreCase(pkg.getVersion().classifier())) { cudfName += "*" + pkg.getVersion().classifier(); } setInstalled(pkg.getPackageState().isInstalled()); }
@GET @Produces("text/html") @Path(value = "progressPage/{pkgId}") public Object getDownloadProgressPage(@PathParam("pkgId") String pkgId, @QueryParam("source") String source, @QueryParam("install") Boolean install, @QueryParam("depCheck") Boolean depCheck, @QueryParam("type") String pkgType, @QueryParam("onlyRemote") Boolean onlyRemote, @QueryParam("filterOnPlatform") Boolean filterOnPlatform) { DownloadablePackage pkg = getDownloadingPackage(pkgId); boolean downloadOver = false; // flag to start install after download if (install == null) { install = false; } if (depCheck == null) { depCheck = true; } if (pkg == null) { PackageManager pm = Framework.getService(PackageManager.class); pkg = pm.getPackage(pkgId); if (pkg.getPackageState() != PackageState.DOWNLOADING) { downloadOver = true; } } return getView("downloadStarted").arg("pkg", pkg).arg("source", source).arg("over", downloadOver).arg( "install", install).arg("depCheck", depCheck).arg("filterOnPlatform", filterOnPlatform.toString()).arg( "type", pkgType.toString()).arg("onlyRemote", onlyRemote.toString()); }
@GET @Produces("text/html") @Path(value = "progressPage/{pkgId}") public Object getDownloadProgressPage(@PathParam("pkgId") String pkgId, @QueryParam("source") String source, @QueryParam("install") Boolean install, @QueryParam("depCheck") Boolean depCheck, @QueryParam("type") String pkgType, @QueryParam("onlyRemote") Boolean onlyRemote, @QueryParam("filterOnPlatform") Boolean filterOnPlatform) { DownloadablePackage pkg = getDownloadingPackage(pkgId); boolean downloadOver = false; // flag to start install after download if (install == null) { install = false; } if (depCheck == null) { depCheck = true; } if (pkg == null) { PackageManager pm = Framework.getLocalService(PackageManager.class); pkg = pm.getPackage(pkgId); if (pkg.getPackageState() != PackageState.DOWNLOADING) { downloadOver = true; } } return getView("downloadStarted").arg("pkg", pkg).arg("source", source).arg("over", downloadOver).arg( "install", install).arg("depCheck", depCheck).arg("filterOnPlatform", filterOnPlatform.toString()).arg( "type", pkgType.toString()).arg("onlyRemote", onlyRemote.toString()); }
if (keep && pkg.getPackageState().isInstalled()) { involvedPackages.add(pkg.getName()); if (!pkg.getPackageState().isInstalled() && !TargetPlatformFilterHelper.isCompatibleWithTargetPlatform(pkg, targetPlatform)) { log.debug("Ignore " + pkg + " (incompatible target platform)");