diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java index 5c01cc9d2..2ea96303c 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java @@ -29,16 +29,15 @@ package cc.arduino.contributions.libraries.ui; import cc.arduino.contributions.VersionComparator; -import cc.arduino.contributions.VersionHelper; +import cc.arduino.contributions.filters.BuiltInPredicate; import cc.arduino.contributions.filters.InstalledPredicate; import cc.arduino.contributions.libraries.ContributedLibrary; -import cc.arduino.contributions.libraries.ContributedLibraryComparator; -import cc.arduino.contributions.filters.BuiltInPredicate; import cc.arduino.contributions.libraries.filters.OnlyUpstreamReleasePredicate; +import cc.arduino.contributions.packages.DownloadableContribution; +import cc.arduino.contributions.DownloadableContributionVersionComparator; import cc.arduino.contributions.ui.InstallerTableCell; import cc.arduino.contributions.ui.listeners.DelegatingKeyListener; import cc.arduino.utils.ReverseComparator; -import com.github.zafarkhaja.semver.Version; import com.google.common.base.Function; import com.google.common.base.Predicates; import com.google.common.collect.Collections2; @@ -257,7 +256,7 @@ public class ContributedLibraryTableCell extends InstallerTableCell { uninstalledReleases.addAll(installedBuiltIn); } - Collections.sort(uninstalledReleases, new ReverseComparator(new ContributedLibraryComparator())); + Collections.sort(uninstalledReleases, new ReverseComparator(new DownloadableContributionVersionComparator())); downgradeChooser.removeAllItems(); downgradeChooser.addItem(_("Select version")); @@ -265,10 +264,11 @@ public class ContributedLibraryTableCell extends InstallerTableCell { final List uninstalledPreviousReleases = Lists.newLinkedList(); final List uninstalledNewerReleases = Lists.newLinkedList(); + final VersionComparator versionComparator = new VersionComparator(); Lists.newLinkedList(Lists.transform(uninstalledReleases, new Function() { @Override public ContributedLibrary apply(ContributedLibrary input) { - if (installed == null || VersionComparator.VERSION_COMPARATOR.greaterThan(installed.getParsedVersion(), input.getParsedVersion())) { + if (installed == null || versionComparator.greaterThan(installed.getParsedVersion(), input.getParsedVersion())) { uninstalledPreviousReleases.add(input); } else { uninstalledNewerReleases.add(input); @@ -319,7 +319,7 @@ public class ContributedLibraryTableCell extends InstallerTableCell { } else { installable = false; removable = !installed.isReadOnly() && !hasBuiltInRelease; - upgradable = new ContributedLibraryComparator().compare(selected, installed) > 0; + upgradable = new DownloadableContributionVersionComparator().compare(selected, installed) > 0; } if (installable) { installButton.setText(_("Install")); diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java index 8cddf1e0f..0aeb1f571 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java @@ -29,12 +29,12 @@ package cc.arduino.contributions.packages.ui; import cc.arduino.contributions.VersionComparator; -import cc.arduino.contributions.VersionHelper; import cc.arduino.contributions.filters.InstalledPredicate; import cc.arduino.contributions.filters.BuiltInPredicate; import cc.arduino.contributions.packages.ContributedBoard; import cc.arduino.contributions.packages.ContributedPlatform; -import cc.arduino.contributions.packages.ContributedPlatformComparator; +import cc.arduino.contributions.packages.DownloadableContribution; +import cc.arduino.contributions.DownloadableContributionVersionComparator; import cc.arduino.contributions.ui.InstallerTableCell; import cc.arduino.contributions.ui.listeners.DelegatingKeyListener; import cc.arduino.utils.ReverseComparator; @@ -271,7 +271,7 @@ public class ContributedPlatformTableCell extends InstallerTableCell { uninstalledReleases.addAll(installedBuiltIn); } - Collections.sort(uninstalledReleases, new ReverseComparator(new ContributedPlatformComparator())); + Collections.sort(uninstalledReleases, new ReverseComparator(new DownloadableContributionVersionComparator())); downgradeChooser.removeAllItems(); downgradeChooser.addItem(_("Select version")); @@ -279,10 +279,11 @@ public class ContributedPlatformTableCell extends InstallerTableCell { final java.util.List uninstalledPreviousReleases = Lists.newLinkedList(); final java.util.List uninstalledNewerReleases = Lists.newLinkedList(); + final VersionComparator versionComparator = new VersionComparator(); Lists.newLinkedList(Lists.transform(uninstalledReleases, new Function() { @Override public ContributedPlatform apply(ContributedPlatform input) { - if (installed == null || VersionComparator.VERSION_COMPARATOR.greaterThan(installed.getParsedVersion(), input.getParsedVersion())) { + if (installed == null || versionComparator.greaterThan(installed.getParsedVersion(), input.getParsedVersion())) { uninstalledPreviousReleases.add(input); } else { uninstalledNewerReleases.add(input); @@ -333,7 +334,7 @@ public class ContributedPlatformTableCell extends InstallerTableCell { } else { installable = false; removable = !installed.isReadOnly() && !hasBuiltInRelease; - upgradable = new ContributedPlatformComparator().compare(selected, installed) > 0; + upgradable = new DownloadableContributionVersionComparator().compare(selected, installed) > 0; } if (installable) { installButton.setText(_("Install")); diff --git a/app/src/cc/arduino/contributions/ui/FilteredAbstractTableModel.java b/app/src/cc/arduino/contributions/ui/FilteredAbstractTableModel.java index 7391acedc..2d72b306a 100644 --- a/app/src/cc/arduino/contributions/ui/FilteredAbstractTableModel.java +++ b/app/src/cc/arduino/contributions/ui/FilteredAbstractTableModel.java @@ -44,10 +44,11 @@ public abstract class FilteredAbstractTableModel extends AbstractTableModel { protected static T getLatestOf(List contribs) { contribs = new LinkedList(contribs); + final VersionComparator versionComparator = new VersionComparator(); Collections.sort(contribs, new Comparator() { @Override public int compare(T contrib1, T contrib2) { - return VersionComparator.VERSION_COMPARATOR.compare(contrib1.getParsedVersion(), contrib2.getParsedVersion()); + return versionComparator.compare(contrib1.getParsedVersion(), contrib2.getParsedVersion()); } }); diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index eb20a88d0..e269f37a4 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -30,6 +30,7 @@ import cc.arduino.contributions.libraries.ui.LibraryManagerUI; import cc.arduino.contributions.packages.ContributedPlatform; import cc.arduino.contributions.packages.ContributionInstaller; import cc.arduino.contributions.packages.ContributionsIndexer; +import cc.arduino.contributions.DownloadableContributionVersionComparator; import cc.arduino.contributions.packages.ui.ContributionManagerUI; import cc.arduino.packages.DiscoveryManager; import cc.arduino.utils.Progress; @@ -322,7 +323,16 @@ public class Base { String[] boardToInstallParts = parser.getBoardToInstall().split(":"); - ContributedPlatform selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], VersionHelper.valueOf(boardToInstallParts[2]).toString()); + ContributedPlatform selected = null; + if (boardToInstallParts.length == 3) { + selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], VersionHelper.valueOf(boardToInstallParts[2]).toString()); + } else if (boardToInstallParts.length == 2) { + List platformsByName = indexer.getIndex().findPlatforms(boardToInstallParts[0], boardToInstallParts[1]); + Collections.sort(platformsByName, new DownloadableContributionVersionComparator()); + if (!platformsByName.isEmpty()) { + selected = platformsByName.get(platformsByName.size() - 1); + } + } if (selected == null) { System.out.println(_("Selected board is not available")); System.exit(1); diff --git a/arduino-core/src/cc/arduino/contributions/DownloadableContributionVersionComparator.java b/arduino-core/src/cc/arduino/contributions/DownloadableContributionVersionComparator.java new file mode 100644 index 000000000..be81dac87 --- /dev/null +++ b/arduino-core/src/cc/arduino/contributions/DownloadableContributionVersionComparator.java @@ -0,0 +1,21 @@ +package cc.arduino.contributions; + +import cc.arduino.contributions.packages.DownloadableContribution; + +import java.util.Comparator; + +public class DownloadableContributionVersionComparator implements Comparator { + + private final VersionComparator versionComparator; + + public DownloadableContributionVersionComparator() { + versionComparator = new VersionComparator(); + } + + @Override + public int compare(DownloadableContribution lib1, DownloadableContribution lib2) { + return versionComparator.compare(lib1.getParsedVersion(), lib2.getParsedVersion()); + } + + +} diff --git a/arduino-core/src/cc/arduino/contributions/VersionComparator.java b/arduino-core/src/cc/arduino/contributions/VersionComparator.java index a1f0961b5..d4bd52a85 100644 --- a/arduino-core/src/cc/arduino/contributions/VersionComparator.java +++ b/arduino-core/src/cc/arduino/contributions/VersionComparator.java @@ -34,9 +34,6 @@ import java.util.Comparator; public class VersionComparator implements Comparator { - // An handy pre-instatiated object - public static final VersionComparator VERSION_COMPARATOR = new VersionComparator(); - @Override public int compare(String a, String b) { // null is always less than any other value diff --git a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryComparator.java b/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryComparator.java deleted file mode 100644 index fb35f4b35..000000000 --- a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package cc.arduino.contributions.libraries; - -import cc.arduino.contributions.VersionComparator; - -import java.util.Comparator; - -public class ContributedLibraryComparator implements Comparator { - - @Override - public int compare(ContributedLibrary lib1, ContributedLibrary lib2) { - return VersionComparator.VERSION_COMPARATOR.compare(lib1.getParsedVersion(), lib2.getParsedVersion()); - } - - -} diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatformComparator.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatformComparator.java deleted file mode 100644 index 83a31bdfa..000000000 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatformComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package cc.arduino.contributions.packages; - -import cc.arduino.contributions.VersionComparator; - -import java.util.Comparator; - -public class ContributedPlatformComparator implements Comparator { - - @Override - public int compare(ContributedPlatform lib1, ContributedPlatform lib2) { - return VersionComparator.VERSION_COMPARATOR.compare(lib1.getParsedVersion(), lib2.getParsedVersion()); - } - - -}