From e896595214d2696b9c20613c2b1fcc8605c88fa7 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sun, 17 Dec 2017 20:02:58 +0100 Subject: [PATCH] UserLibrary doesn't extend ContributedLibrary anymore ContributedLibrary is used to decode library_index.json and it's intended to keep data coming only from the index. Now, when the library_index is synced with the filesystem, the metadata about installed libraries are kept in a separate list to not mess up with the main index. --- .../libraries/LibraryByTypeComparator.java | 6 +- .../LibraryOfSameTypeComparator.java | 6 +- .../filters/InstalledLibraryPredicate.java | 5 +- .../filters/OnlyUpstreamReleasePredicate.java | 5 +- .../filters/UpdatableLibraryPredicate.java | 13 +++-- .../ui/ContributedLibraryReleases.java | 7 +-- .../ui/ContributedLibraryTableCellEditor.java | 5 +- .../libraries/ui/LibraryManagerUI.java | 4 +- app/src/processing/app/Base.java | 8 +-- .../processing/app/syntax/PdeKeywords.java | 4 +- .../DownloadableContribution.java | 1 + .../libraries/ContributedLibrary.java | 20 +++++++ .../libraries/LibrariesIndex.java | 3 +- .../libraries/LibrariesIndexer.java | 12 ++-- .../libraries/LibraryInstaller.java | 4 +- .../filters/LibraryInstalledInsideCore.java | 6 +- .../libraries/filters/TypePredicate.java | 6 +- .../app/packages/LegacyUserLibrary.java | 3 +- .../processing/app/packages/LibraryList.java | 3 +- .../processing/app/packages/UserLibrary.java | 56 ++++++------------- 20 files changed, 83 insertions(+), 94 deletions(-) diff --git a/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java b/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java index dd11773c8..e74937025 100644 --- a/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java +++ b/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java @@ -31,7 +31,9 @@ package cc.arduino.contributions.libraries; import java.util.Comparator; -public class LibraryByTypeComparator implements Comparator { +import processing.app.packages.UserLibrary; + +public class LibraryByTypeComparator implements Comparator { private final LibraryTypeComparator libraryTypeComparator; @@ -44,7 +46,7 @@ public class LibraryByTypeComparator implements Comparator { } @Override - public int compare(ContributedLibrary o1, ContributedLibrary o2) { + public int compare(UserLibrary o1, UserLibrary o2) { if (o1.getTypes() == null) { return 1; } diff --git a/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java b/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java index 4a87e8bd0..bf52efa6c 100644 --- a/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java +++ b/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java @@ -31,10 +31,12 @@ package cc.arduino.contributions.libraries; import java.util.Comparator; -public class LibraryOfSameTypeComparator implements Comparator { +import processing.app.packages.UserLibrary; + +public class LibraryOfSameTypeComparator implements Comparator { @Override - public int compare(ContributedLibrary o1, ContributedLibrary o2) { + public int compare(UserLibrary o1, UserLibrary o2) { if (o1.getTypes() == null) { return 1; } diff --git a/app/src/cc/arduino/contributions/libraries/filters/InstalledLibraryPredicate.java b/app/src/cc/arduino/contributions/libraries/filters/InstalledLibraryPredicate.java index 3d1d412dd..d368e2d0f 100644 --- a/app/src/cc/arduino/contributions/libraries/filters/InstalledLibraryPredicate.java +++ b/app/src/cc/arduino/contributions/libraries/filters/InstalledLibraryPredicate.java @@ -29,7 +29,6 @@ package cc.arduino.contributions.libraries.filters; -import cc.arduino.contributions.filters.InstalledPredicate; import cc.arduino.contributions.libraries.ContributedLibrary; import processing.app.BaseNoGui; @@ -40,14 +39,14 @@ public class InstalledLibraryPredicate implements Predicate @Override public boolean test(ContributedLibrary input) { - if (input.isInstalled()) { + if (input.isLibraryInstalled()) { return true; } List libraries = BaseNoGui.librariesIndexer.getIndex().find(input.getName()); return libraries.stream() - .filter(new InstalledPredicate()) + .filter(l -> l.isLibraryInstalled()) .count() > 0; } diff --git a/app/src/cc/arduino/contributions/libraries/filters/OnlyUpstreamReleasePredicate.java b/app/src/cc/arduino/contributions/libraries/filters/OnlyUpstreamReleasePredicate.java index 77106528c..667bc395c 100644 --- a/app/src/cc/arduino/contributions/libraries/filters/OnlyUpstreamReleasePredicate.java +++ b/app/src/cc/arduino/contributions/libraries/filters/OnlyUpstreamReleasePredicate.java @@ -29,15 +29,14 @@ package cc.arduino.contributions.libraries.filters; -import cc.arduino.contributions.libraries.ContributedLibrary; import processing.app.packages.UserLibrary; import java.util.function.Predicate; -public class OnlyUpstreamReleasePredicate implements Predicate { +public class OnlyUpstreamReleasePredicate implements Predicate { @Override - public boolean test(ContributedLibrary input) { + public boolean test(Object input) { return !(input instanceof UserLibrary); } diff --git a/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java b/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java index bc8aa06fc..eaf328d54 100644 --- a/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java +++ b/app/src/cc/arduino/contributions/libraries/filters/UpdatableLibraryPredicate.java @@ -35,20 +35,21 @@ import processing.app.BaseNoGui; import processing.app.packages.UserLibrary; import java.util.List; +import java.util.Optional; import java.util.function.Predicate; public class UpdatableLibraryPredicate implements Predicate { @Override - public boolean test(ContributedLibrary contributedLibrary) { - String libraryName = contributedLibrary.getName(); - UserLibrary installed = BaseNoGui.librariesIndexer.getInstalledLibraries().getByName(libraryName); - if (installed == null) { + public boolean test(ContributedLibrary lib) { + Optional installed = lib.getInstalledLibrary(); + if (!installed.isPresent()) { return false; } + String installedVersion = installed.get().getVersion(); + String libraryName = lib.getName(); List libraries = BaseNoGui.librariesIndexer.getIndex().find(libraryName); return libraries.stream() - .filter(library -> VersionComparator.greaterThan(library.getParsedVersion(), installed.getParsedVersion())) - .count() > 0; + .anyMatch(library -> VersionComparator.greaterThan(library.getParsedVersion(), installedVersion)); } } diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleases.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleases.java index b5e6e8e34..ae7d80ec6 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleases.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleases.java @@ -30,7 +30,6 @@ package cc.arduino.contributions.libraries.ui; import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator; -import cc.arduino.contributions.filters.InstalledPredicate; import cc.arduino.contributions.libraries.ContributedLibrary; import cc.arduino.contributions.ui.FilteredAbstractTableModel; @@ -78,13 +77,11 @@ public class ContributedLibraryReleases { } public Optional getInstalled() { - List installedReleases = releases.stream().filter(new InstalledPredicate()).collect(Collectors.toList()); - Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator()); - + List installedReleases = releases.stream().filter(l -> l.isLibraryInstalled()).collect(Collectors.toList()); if (installedReleases.isEmpty()) { return Optional.empty(); } - + Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator()); return Optional.of(installedReleases.get(0)); } diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java index 5b0aa2fe4..6318da84b 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java @@ -45,7 +45,6 @@ import javax.swing.JTable; import cc.arduino.contributions.DownloadableContributionVersionComparator; import cc.arduino.contributions.VersionComparator; import cc.arduino.contributions.filters.BuiltInPredicate; -import cc.arduino.contributions.filters.InstalledPredicate; import cc.arduino.contributions.libraries.ContributedLibrary; import cc.arduino.contributions.libraries.filters.OnlyUpstreamReleasePredicate; import cc.arduino.contributions.ui.InstallerTableCell; @@ -92,10 +91,10 @@ public class ContributedLibraryTableCellEditor extends InstallerTableCell { .filter(new OnlyUpstreamReleasePredicate()) .collect(Collectors.toList()); List uninstalledReleases = releases.stream() - .filter(new InstalledPredicate().negate()).collect(Collectors.toList()); + .filter(l -> !l.isLibraryInstalled()).collect(Collectors.toList()); List installedBuiltIn = releases.stream() - .filter(new InstalledPredicate()).filter(new BuiltInPredicate()) + .filter(l -> !l.isLibraryInstalled()).filter(new BuiltInPredicate()) .collect(Collectors.toList()); if (mayInstalled.isPresent() && !installedBuiltIn.contains(mayInstalled.get())) { diff --git a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java index 7ee097e35..245c23461 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java +++ b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java @@ -38,6 +38,7 @@ import java.awt.event.ActionListener; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; +import java.util.List; import java.util.Optional; import java.util.function.Predicate; @@ -134,7 +135,6 @@ public class LibraryManagerUI extends InstallerJDialog true; categoryChooser.removeAllItems(); @@ -158,7 +158,7 @@ public class LibraryManagerUI extends InstallerJDialog types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes()); + List types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes()); Collections.sort(types, new LibraryTypeComparator()); for (String type : types) { typeChooser.addItem(new DropdownLibraryOfTypeItem(type)); diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index a8678e6e0..d2ff00efd 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -1059,8 +1059,8 @@ public class Base { } } - private List getSortedLibraries() { - List installedLibraries = new LinkedList<>(BaseNoGui.librariesIndexer.getInstalledLibraries()); + private LibraryList getSortedLibraries() { + LibraryList installedLibraries = BaseNoGui.librariesIndexer.getInstalledLibraries(); Collections.sort(installedLibraries, new LibraryByTypeComparator()); Collections.sort(installedLibraries, new LibraryOfSameTypeComparator()); return installedLibraries; @@ -1097,9 +1097,9 @@ public class Base { TargetPlatform targetPlatform = BaseNoGui.getTargetPlatform(); if (targetPlatform != null) { - List libs = getSortedLibraries(); + LibraryList libs = getSortedLibraries(); String lastLibType = null; - for (ContributedLibrary lib : libs) { + for (UserLibrary lib : libs) { String libType = lib.getTypes().get(0); if (!libType.equals(lastLibType)) { if (lastLibType != null) { diff --git a/app/src/processing/app/syntax/PdeKeywords.java b/app/src/processing/app/syntax/PdeKeywords.java index 62d719f97..838800b3d 100644 --- a/app/src/processing/app/syntax/PdeKeywords.java +++ b/app/src/processing/app/syntax/PdeKeywords.java @@ -24,12 +24,12 @@ package processing.app.syntax; -import cc.arduino.contributions.libraries.ContributedLibrary; import org.apache.commons.compress.utils.IOUtils; import org.fife.ui.rsyntaxtextarea.TokenMap; import org.fife.ui.rsyntaxtextarea.TokenTypes; import processing.app.Base; import processing.app.BaseNoGui; +import processing.app.packages.UserLibrary; import processing.app.debug.TargetPlatform; import java.io.BufferedReader; @@ -89,7 +89,7 @@ public class PdeKeywords { File platformKeywords = new File(tp.getFolder(), "keywords.txt"); if (platformKeywords.exists()) parseKeywordsTxt(platformKeywords); } - for (ContributedLibrary lib : BaseNoGui.librariesIndexer.getInstalledLibraries()) { + for (UserLibrary lib : BaseNoGui.librariesIndexer.getInstalledLibraries()) { File keywords = new File(lib.getInstalledFolder(), "keywords.txt"); if (keywords.exists()) { parseKeywordsTxt(keywords); diff --git a/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java b/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java index a51b5f0eb..2ac9d6bbe 100644 --- a/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java +++ b/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java @@ -35,6 +35,7 @@ import java.io.File; public abstract class DownloadableContribution { + // XXX: maybe installed fields should not be here but in UserLibrary and ContributedPlatform? private boolean installed; private File installedFolder; diff --git a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java b/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java index cb0d34c91..0f6d70e9f 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java @@ -31,9 +31,11 @@ package cc.arduino.contributions.libraries; import cc.arduino.contributions.DownloadableContribution; import processing.app.I18n; +import processing.app.packages.UserLibrary; import java.util.Comparator; import java.util.List; +import java.util.Optional; import static processing.app.I18n.tr; @@ -65,6 +67,24 @@ public abstract class ContributedLibrary extends DownloadableContribution { public static final Comparator CASE_INSENSITIVE_ORDER = (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()); + private Optional installedLib = Optional.empty(); + + public Optional getInstalledLibrary() { + return installedLib; + } + + public boolean isLibraryInstalled() { + return installedLib.isPresent(); + } + + public void setInstalledUserLibrary(UserLibrary installed) { + this.installedLib = Optional.of(installed); + } + + public void unsetInstalledUserLibrary() { + installedLib = Optional.empty(); + } + /** * Returns true if the library declares to support the specified * architecture (through the "architectures" property field). diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java index 4e6d4da38..ca94f0f68 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java @@ -30,7 +30,6 @@ package cc.arduino.contributions.libraries; import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator; -import cc.arduino.contributions.filters.InstalledPredicate; import cc.arduino.contributions.libraries.filters.LibraryWithNamePredicate; import java.util.*; @@ -92,7 +91,7 @@ public abstract class LibrariesIndex { } public Optional getInstalled(String name) { - List installedReleases = find(name).stream().filter(new InstalledPredicate()).collect(Collectors.toList()); + List installedReleases = find(name).stream().filter(l -> l.isLibraryInstalled()).collect(Collectors.toList()); Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator()); if (installedReleases.isEmpty()) { diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java index d61505f1d..cda20e814 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java @@ -122,7 +122,7 @@ public class LibrariesIndexer { } for (ContributedLibrary lib : index.getLibraries()) { - lib.setInstalled(false); + lib.unsetInstalledUserLibrary(); } // Rescan libraries @@ -176,7 +176,6 @@ public class LibrariesIndexer { if (!check.exists() || !check.isFile()) { // Create a legacy library and exit LegacyUserLibrary lib = LegacyUserLibrary.create(folder); - lib.setReadOnly(readOnly); String[] headers = BaseNoGui.headerListFromIncludePath(lib.getSrcFolder()); if (headers.length == 0) { throw new IOException(lib.getSrcFolder().getAbsolutePath()); @@ -187,7 +186,6 @@ public class LibrariesIndexer { // Create a regular library UserLibrary lib = UserLibrary.create(folder); - lib.setReadOnly(readOnly); String[] headers = BaseNoGui.headerListFromIncludePath(lib.getSrcFolder()); if (headers.length == 0) { throw new IOException(lib.getSrcFolder().getAbsolutePath()); @@ -196,15 +194,13 @@ public class LibrariesIndexer { // Check if we can find the same library in the index // and mark it as installed - ContributedLibrary foundLib = index.find(lib.getName(), lib.getParsedVersion()); + ContributedLibrary foundLib = index.find(lib.getName(), lib.getVersion()); if (foundLib != null) { - foundLib.setInstalled(true); - foundLib.setInstalledFolder(folder); - foundLib.setReadOnly(readOnly); + foundLib.setInstalledUserLibrary(lib); lib.setTypes(foundLib.getTypes()); } - if (lib.isReadOnly() && lib.getTypes() == null && !lib.getDeclaredTypes().isEmpty()) { + if (readOnly && lib.getTypes() == null && !lib.getDeclaredTypes().isEmpty()) { lib.setTypes(lib.getDeclaredTypes()); } diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java b/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java index 3fa1f6de3..22c01ae22 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java @@ -84,7 +84,7 @@ public class LibraryInstaller { } public synchronized void install(ContributedLibrary lib, Optional mayReplacedLib, ProgressListener progressListener) throws Exception { - if (lib.isInstalled()) { + if (lib.isLibraryInstalled()) { System.out.println(I18n.format(tr("Library is already installed: {0} version {1}"), lib.getName(), lib.getParsedVersion())); return; } @@ -141,7 +141,7 @@ public class LibraryInstaller { // Step 1: Remove library progress.setStatus(I18n.format(tr("Removing library: {0}"), lib.getName())); progressListener.onProgress(progress); - FileUtils.recursiveDelete(lib.getInstalledFolder()); + FileUtils.recursiveDelete(lib.getInstalledLibrary().get().getInstalledFolder()); progress.stepDone(); // Step 2: Rescan index diff --git a/arduino-core/src/cc/arduino/contributions/libraries/filters/LibraryInstalledInsideCore.java b/arduino-core/src/cc/arduino/contributions/libraries/filters/LibraryInstalledInsideCore.java index f731a272d..a19b3d2d1 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/filters/LibraryInstalledInsideCore.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/filters/LibraryInstalledInsideCore.java @@ -29,15 +29,15 @@ package cc.arduino.contributions.libraries.filters; -import cc.arduino.contributions.libraries.ContributedLibrary; import processing.app.BaseNoGui; +import processing.app.packages.UserLibrary; import java.util.function.Predicate; -public class LibraryInstalledInsideCore implements Predicate { +public class LibraryInstalledInsideCore implements Predicate { @Override - public boolean test(ContributedLibrary contributedLibrary) { + public boolean test(UserLibrary contributedLibrary) { return BaseNoGui.indexer.isFolderInsidePlatform(contributedLibrary.getInstalledFolder()); } diff --git a/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java b/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java index 8261c7416..36b19a21a 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java @@ -29,11 +29,11 @@ package cc.arduino.contributions.libraries.filters; -import cc.arduino.contributions.libraries.ContributedLibrary; +import processing.app.packages.UserLibrary; import java.util.function.Predicate; -public class TypePredicate implements Predicate { +public class TypePredicate implements Predicate { private final String type; @@ -42,7 +42,7 @@ public class TypePredicate implements Predicate { } @Override - public boolean test(ContributedLibrary input) { + public boolean test(UserLibrary input) { return input.getTypes() != null && input.getTypes().contains(type); } diff --git a/arduino-core/src/processing/app/packages/LegacyUserLibrary.java b/arduino-core/src/processing/app/packages/LegacyUserLibrary.java index 56a86ccb9..be8b641c1 100644 --- a/arduino-core/src/processing/app/packages/LegacyUserLibrary.java +++ b/arduino-core/src/processing/app/packages/LegacyUserLibrary.java @@ -39,8 +39,7 @@ public class LegacyUserLibrary extends UserLibrary { public static LegacyUserLibrary create(File libFolder) { // construct an old style library LegacyUserLibrary res = new LegacyUserLibrary(); - res.setInstalledFolder(libFolder); - res.setInstalled(true); + res.installedFolder = libFolder; res.layout = LibraryLayout.FLAT; res.name = libFolder.getName(); res.setTypes(Arrays.asList("Contributed")); diff --git a/arduino-core/src/processing/app/packages/LibraryList.java b/arduino-core/src/processing/app/packages/LibraryList.java index bfd114f95..5cf7a5c8c 100644 --- a/arduino-core/src/processing/app/packages/LibraryList.java +++ b/arduino-core/src/processing/app/packages/LibraryList.java @@ -33,7 +33,6 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; -import cc.arduino.contributions.libraries.ContributedLibrary; import processing.app.helpers.FileUtils; @SuppressWarnings("serial") @@ -80,7 +79,7 @@ public class LibraryList extends LinkedList { } public synchronized void sort() { - Collections.sort(this, ContributedLibrary.CASE_INSENSITIVE_ORDER); + Collections.sort(this, (x, y) -> x.getName().compareToIgnoreCase(y.getName())); } public synchronized LibraryList filterLibrariesInSubfolder(File subFolder) { diff --git a/arduino-core/src/processing/app/packages/UserLibrary.java b/arduino-core/src/processing/app/packages/UserLibrary.java index 7c15640a0..a49837f40 100644 --- a/arduino-core/src/processing/app/packages/UserLibrary.java +++ b/arduino-core/src/processing/app/packages/UserLibrary.java @@ -29,7 +29,7 @@ package processing.app.packages; import cc.arduino.Constants; -import cc.arduino.contributions.libraries.ContributedLibrary; +import cc.arduino.contributions.VersionHelper; import cc.arduino.contributions.libraries.ContributedLibraryReference; import processing.app.helpers.PreferencesMap; @@ -41,7 +41,9 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -public class UserLibrary extends ContributedLibrary { +import com.github.zafarkhaja.semver.Version; + +public class UserLibrary { private String name; private String version; @@ -57,6 +59,7 @@ public class UserLibrary extends ContributedLibrary { private List declaredTypes; private boolean onGoingDevelopment; private List includes; + protected File installedFolder; public static UserLibrary create(File libFolder) throws IOException { // Parse metadata @@ -139,11 +142,13 @@ public class UserLibrary extends ContributedLibrary { includes.add(i.trim()); } + String declaredVersion = properties.get("version").trim(); + Version version = VersionHelper.valueOf(declaredVersion); + UserLibrary res = new UserLibrary(); - res.setInstalledFolder(libFolder); - res.setInstalled(true); + res.installedFolder = libFolder; res.name = properties.get("name").trim(); - res.version = properties.get("version").trim(); + res.version = version.toString(); res.author = properties.get("author").trim(); res.maintainer = properties.get("maintainer").trim(); res.sentence = properties.get("sentence").trim(); @@ -159,42 +164,34 @@ public class UserLibrary extends ContributedLibrary { return res; } - @Override public String getName() { return name; } - @Override public List getArchitectures() { return architectures; } - @Override public String getAuthor() { return author; } - @Override public String getParagraph() { return paragraph; } - @Override public String getSentence() { return sentence; } - @Override public String getWebsite() { return website; } - @Override public String getCategory() { return category; } - @Override public List getTypes() { return types; } @@ -203,47 +200,22 @@ public class UserLibrary extends ContributedLibrary { this.types = types; } - @Override public String getLicense() { return license; } - @Override public void setCategory(String category) { this.category = category; } - @Override public String getVersion() { return version; } - @Override public String getMaintainer() { return maintainer; } - @Override - public String getChecksum() { - return null; - } - - @Override - public long getSize() { - return 0; - } - - @Override - public String getUrl() { - return null; - } - - @Override - public String getArchiveFileName() { - return null; - } - - @Override public List getRequires() { return null; } @@ -269,9 +241,9 @@ public class UserLibrary extends ContributedLibrary { public File getSrcFolder() { switch (layout) { case FLAT: - return getInstalledFolder(); + return installedFolder; case RECURSIVE: - return new File(getInstalledFolder(), "src"); + return new File(installedFolder, "src"); default: return null; // Keep compiler happy :-( } @@ -286,4 +258,8 @@ public class UserLibrary extends ContributedLibrary { return name + ":" + version + " " + architectures + " " + installedFolder.getAbsolutePath(); } + public File getInstalledFolder() { + return installedFolder; + } + }