From d285b7fdc97cca0809bd8f9d88b8bb3576be1e74 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 14 Dec 2017 13:45:56 +0100 Subject: [PATCH] Improved VersionComparator API --- .../contributions/BuiltInCoreIsNewerCheck.java | 2 +- .../filters/UpdatableLibraryPredicate.java | 8 +------- .../ui/ContributedLibraryTableCellEditor.java | 4 +--- .../filters/UpdatablePlatformPredicate.java | 8 +------- .../ui/ContributedPlatformTableCellEditor.java | 3 +-- .../arduino/contributions/VersionComparator.java | 16 +++++++++++++++- arduino-core/src/processing/app/BaseNoGui.java | 3 +-- 7 files changed, 21 insertions(+), 23 deletions(-) diff --git a/app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java b/app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java index 3dcda9272..bb6034b83 100644 --- a/app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java +++ b/app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java @@ -84,7 +84,7 @@ public class BuiltInCoreIsNewerCheck implements Runnable { Thread.sleep(100); } - if (VersionHelper.valueOf(installedBuiltIn.getParsedVersion()).greaterThan(VersionHelper.valueOf(installedNotBuiltIn.getParsedVersion()))) { + if (VersionComparator.greaterThan(installedBuiltIn.getParsedVersion(), installedNotBuiltIn.getParsedVersion())) { SwingUtilities.invokeLater(() -> { PreferencesData.setInteger("builtin_platform_is_newer", BaseNoGui.REVISION); assert base.hasActiveEditor(); diff --git a/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java b/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java index 32165643b..bc8aa06fc 100644 --- a/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java +++ b/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java @@ -39,12 +39,6 @@ import java.util.function.Predicate; public class UpdatableLibraryPredicate implements Predicate { - private final VersionComparator versionComparator; - - public UpdatableLibraryPredicate() { - this.versionComparator = new VersionComparator(); - } - @Override public boolean test(ContributedLibrary contributedLibrary) { String libraryName = contributedLibrary.getName(); @@ -54,7 +48,7 @@ public class UpdatableLibraryPredicate implements Predicate } List libraries = BaseNoGui.librariesIndexer.getIndex().find(libraryName); return libraries.stream() - .filter(library -> versionComparator.greaterThan(library.getParsedVersion(), installed.getParsedVersion())) + .filter(library -> VersionComparator.greaterThan(library.getParsedVersion(), installed.getParsedVersion())) .count() > 0; } } diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java index 3486aded2..22cc695db 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java @@ -110,11 +110,9 @@ public class ContributedLibraryTableCellEditor extends InstallerTableCell { final List uninstalledPreviousReleases = new LinkedList<>(); final List uninstalledNewerReleases = new LinkedList<>(); - final VersionComparator versionComparator = new VersionComparator(); uninstalledReleases.stream().forEach(input -> { if (installed == null - || versionComparator.greaterThan(installed.getParsedVersion(), - input.getParsedVersion())) { + || VersionComparator.greaterThan(installed, input)) { uninstalledPreviousReleases.add(input); } else { uninstalledNewerReleases.add(input); diff --git a/app/src/cc/arduino/contributions/packages/filters/UpdatablePlatformPredicate.java b/app/src/cc/arduino/contributions/packages/filters/UpdatablePlatformPredicate.java index 34a62ad75..019b5118e 100644 --- a/app/src/cc/arduino/contributions/packages/filters/UpdatablePlatformPredicate.java +++ b/app/src/cc/arduino/contributions/packages/filters/UpdatablePlatformPredicate.java @@ -38,12 +38,6 @@ import java.util.function.Predicate; public class UpdatablePlatformPredicate implements Predicate { - private final VersionComparator versionComparator; - - public UpdatablePlatformPredicate() { - this.versionComparator = new VersionComparator(); - } - @Override public boolean test(ContributedPlatform contributedPlatform) { String packageName = contributedPlatform.getParentPackage().getName(); @@ -56,7 +50,7 @@ public class UpdatablePlatformPredicate implements Predicate platforms = BaseNoGui.indexer.getIndex().findPlatforms(packageName, architecture); return platforms.stream() - .filter(platform -> versionComparator.greaterThan(platform.getParsedVersion(), installed.getParsedVersion())) + .filter(platform -> VersionComparator.greaterThan(platform.getParsedVersion(), installed.getParsedVersion())) .count() > 0; } } diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java index 43cbec6fa..c5abc64b2 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java @@ -106,10 +106,9 @@ public class ContributedPlatformTableCellEditor extends InstallerTableCell { final List uninstalledPreviousReleases = new LinkedList<>(); final List uninstalledNewerReleases = new LinkedList<>(); - final VersionComparator versionComparator = new VersionComparator(); uninstalledReleases.stream().forEach(input -> { if (installed == null - || versionComparator.greaterThan(installed.getParsedVersion(), + || VersionComparator.greaterThan(installed.getParsedVersion(), input.getParsedVersion())) { uninstalledPreviousReleases.add(input); } else { diff --git a/arduino-core/src/cc/arduino/contributions/VersionComparator.java b/arduino-core/src/cc/arduino/contributions/VersionComparator.java index 817f9bb5b..ccdca9940 100644 --- a/arduino-core/src/cc/arduino/contributions/VersionComparator.java +++ b/arduino-core/src/cc/arduino/contributions/VersionComparator.java @@ -31,6 +31,8 @@ package cc.arduino.contributions; import com.github.zafarkhaja.semver.Version; +import cc.arduino.contributions.libraries.ContributedLibrary; + import java.util.Comparator; public class VersionComparator implements Comparator { @@ -51,7 +53,7 @@ public class VersionComparator implements Comparator { return versionA.compareTo(versionB); } - public boolean greaterThan(String a, String b) { + public static boolean greaterThan(String a, String b) { // null is always less than any other value if (a == null && b == null) { return false; @@ -69,4 +71,16 @@ public class VersionComparator implements Comparator { return versionA.greaterThan(versionB); } + public static String max(String a, String b) { + return greaterThan(a, b) ? a : b; + } + + public static ContributedLibrary max(ContributedLibrary a, ContributedLibrary b) { + return greaterThan(a, b) ? a : b; + } + + public static boolean greaterThan(ContributedLibrary a, + ContributedLibrary b) { + return greaterThan(a.getParsedVersion(), b.getParsedVersion()); + } } diff --git a/arduino-core/src/processing/app/BaseNoGui.java b/arduino-core/src/processing/app/BaseNoGui.java index 328d57750..f27f1bd32 100644 --- a/arduino-core/src/processing/app/BaseNoGui.java +++ b/arduino-core/src/processing/app/BaseNoGui.java @@ -699,7 +699,6 @@ public class BaseNoGui { } Map latestVersions = new HashMap<>(); - VersionComparator comparator = new VersionComparator(); for (ContributedTool tool : installedTools) { File installedFolder = tool.getDownloadableContribution(getPlatform()).getInstalledFolder(); String toolPath; @@ -714,7 +713,7 @@ public class BaseNoGui { PreferencesData.set(prefix + tool.getPackager() + "-" + toolName + "-" + toolVersion + ".path", toolPath); // In the generic tool property put the path of the latest version if more are available try { - if (!latestVersions.containsKey(toolName) || comparator.greaterThan(toolVersion, latestVersions.get(toolName))) { + if (!latestVersions.containsKey(toolName) || VersionComparator.greaterThan(toolVersion, latestVersions.get(toolName))) { latestVersions.put(toolName, toolVersion); PreferencesData.set(prefix + toolName + ".path", toolPath); }