if (packagesShouldBePostponed.contains(packageName)) {
myWaitingToUpgrade.add((InstalledPackage)packageObj);
}
- else if (PackageVersionComparator.VERSION_COMPARATOR.compare(currentVersion, availableVersion) < 0) {
+ else if (isUpdateAvailable(currentVersion, availableVersion)) {
upgradePackage(pkg, availableVersion);
upgradedPackages.add(packageName);
}
myPackageManagementService.fetchPackageVersions(pkg.getName(), new CatchingConsumer<List<String>, Exception>() {
@Override
public void consume(List<String> releases) {
- if (!releases.isEmpty() &&
- PackageVersionComparator.VERSION_COMPARATOR.compare(pkg.getVersion(), releases.get(0)) >= 0) {
+ if (!releases.isEmpty() && !isUpdateAvailable(pkg.getVersion(), releases.get(0))) {
return;
}
final String pyPackageName = pkg.getName();
final String availableVersion = (String)myPackagesTable.getValueAt(index, 2);
if (!upgradeAvailable) {
- upgradeAvailable = PackageVersionComparator.VERSION_COMPARATOR.compare(pkg.getVersion(), availableVersion) < 0 &&
+ upgradeAvailable = isUpdateAvailable(pkg.getVersion(), availableVersion) &&
!myCurrentlyInstalling.contains(pyPackageName);
}
if (!canUninstall && !canUpgrade) break;
return false;
}
+ private boolean isUpdateAvailable(@NotNull String currentVersion, @NotNull String availableVersion) {
+ PackageManagementService service = myPackageManagementService;
+ if (service != null) {
+ return service.compareVersions(currentVersion, availableVersion) < 0;
+ }
+ return PackageVersionComparator.VERSION_COMPARATOR.compare(currentVersion, availableVersion) < 0;
+ }
+
private void refreshLatestVersions(@NotNull final PackageManagementService packageManagementService) {
final Application application = ApplicationManager.getApplication();
application.executeOnPooledThread(new Runnable() {
return packageMap;
}
- private static class MyTableCellRenderer extends DefaultTableCellRenderer {
+ private class MyTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected,
final boolean hasFocus, final int row, final int column) {
final String availableVersion = (String)table.getValueAt(row, 2);
boolean update = column == 2 &&
StringUtil.isNotEmpty(availableVersion) &&
- PackageVersionComparator.VERSION_COMPARATOR.compare(version, availableVersion) < 0;
+ isUpdateAvailable(version, availableVersion);
cell.setIcon(update ? AllIcons.Vcs.Arrow_right : null);
final Object pyPackage = table.getValueAt(row, 0);
if (pyPackage instanceof InstalledPackage) {
public void removeRepository(String repositoryUrl) {
}
+ /**
+ * @return a negative integer, if the first version is older than the second,
+ * zero, if the versions are equals,
+ * a positive integer, if the first version is newer than the second.
+ */
+ public int compareVersions(@NotNull String version1, @NotNull String version2) {
+ return PackageVersionComparator.VERSION_COMPARATOR.compare(version1, version2);
+ }
+
/**
* Returns the list of all packages in all configured repositories. Called in a background thread
* and may initiate network connections. May return cached data.