public synchronized String getActivePackageId(String name) throws PackageException { for (Entry<String, PackageState> entry : states.entrySet()) { String pkgId = entry.getKey(); if (pkgId.startsWith(name) && entry.getValue().isInstalled() && getPackage(pkgId).getName().equals(name)) { return pkgId; } } return null; }
@Override public String toString() { return getLabel(); }
protected Map<String, PackageState> loadStates() throws IOException { Map<String, PackageState> result = new HashMap<>(); File file = new File(root, ".packages"); if (file.isFile()) { List<String> lines = FileUtils.readLines(file, UTF_8); for (String line : lines) { line = line.trim(); if (line.length() == 0 || line.startsWith("#")) { continue; } int i = line.indexOf('='); String pkgId = line.substring(0, i).trim(); String value = line.substring(i + 1).trim(); PackageState state = PackageState.getByLabel(value); if (state == PackageState.UNKNOWN) { try { // Kept for backward compliance with int instead of enum state = PackageState.getByValue(value); } catch (NumberFormatException e) { // Set as REMOTE if undefined/unreadable state = PackageState.REMOTE; } } result.put(pkgId, state); } } return result; }
/** * @deprecated Since 5.8. Use {@link #LocalPackageImpl(ClassLoader, File, PackageState, PackageUpdateService)} * instead. */ @Deprecated public LocalPackageImpl(ClassLoader parent, File file, int state, PackageUpdateService pus) throws PackageException { this(parent, file, PackageState.getByValue(state), pus); }
@Deprecated @Override public int getState() { return PackageState.UNKNOWN.getValue(); }
/** * @since 1.4.17 */ @JSONImportMethod(name = "packageState") public void setPackageStateAsJSON(String state) { setPackageState(PackageState.getByLabel(state)); }
/** * @deprecated Since 1.4.17. Use {@link #setPackageState(PackageState)} instead. */ @Deprecated public void setState(int state) { packageState = PackageState.getByValue(state); }
@Deprecated @Override public int getState() { return packageState.getValue(); }
@Override public boolean isInstalled(String pkgId) { DownloadablePackage pkg = getLocalPackage(pkgId); return (pkg != null && pkg.getPackageState().isInstalled()); }
public String getStateLabel(Package pkg) { PackageState state = pkg.getPackageState(); switch (state) { case REMOTE: case DOWNLOADED: case INSTALLED: return state.getLabel(); case DOWNLOADING: DownloadingPackage dpkg = (DownloadingPackage) pkg; return state.getLabel() + " (" + dpkg.getDownloadProgress() + "%)"; case INSTALLING: return "installation in progress"; case STARTED: return "running"; case UNKNOWN: default: return "!?!"; } }
/** * @param value A String representing an enum value (int), not a label. */ public static PackageState getByValue(String value) throws NumberFormatException { return getByValue(Integer.valueOf(value)); }
@Deprecated @Override public int getState() { return packageState.getValue(); }
@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; }
public String getStateLabel(Package pkg) { PackageState state = pkg.getPackageState(); switch (state) { case REMOTE: case DOWNLOADED: case INSTALLED: return state.getLabel(); case DOWNLOADING: DownloadingPackage dpkg = (DownloadingPackage) pkg; return state.getLabel() + " (" + dpkg.getDownloadProgress() + "%)"; case INSTALLING: return "installation in progress"; case STARTED: return "running"; case UNKNOWN: default: return "!?!"; } }
@Deprecated @Override public void setState(int state) { this.state = PackageState.getByValue(state); }
@Deprecated @Override public int getState() { return state.getValue(); }
protected String getInstalledPackageIdFromName(String pkgName) { List<LocalPackage> localPackages = getPkgList(); List<LocalPackage> installedPackages = new ArrayList<>(); for (LocalPackage pkg : localPackages) { if (pkg.getPackageState().isInstalled()) { installedPackages.add(pkg); } } return getBestIdForNameInList(pkgName, installedPackages); }
public void pkgList(List<? extends Package> packagesList) { CommandInfo cmdInfo = cset.newCommandInfo(CommandInfo.CMD_LIST); try { if (packagesList.isEmpty()) { log.info("None"); } else { getPackageManager().sort(packagesList); StringBuilder sb = new StringBuilder(); for (Package pkg : packagesList) { newPackageInfo(cmdInfo, pkg); PackageState packageState = pkg.getPackageState(); String packageDescription = packageState.getLabel(); packageDescription = String.format("%6s %11s\t", pkg.getType(), packageDescription); if (packageState == PackageState.REMOTE && pkg.getType() != PackageType.STUDIO && pkg.getVisibility() != PackageVisibility.PUBLIC && !LogicalInstanceIdentifier.isRegistered()) { packageDescription += "Registration required for "; } packageDescription += String.format("%s (id: %s)\n", pkg.getName(), pkg.getId()); sb.append(packageDescription); } log.info(sb.toString()); } } catch (Exception e) { log.error(e); cmdInfo.exitCode = 1; } }
/** * @since 1.4.17 */ @JSONImportMethod(name = "state") public void setPackageState(int state) { packageState = PackageState.getByValue(state); }
@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; }