diff --git a/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java b/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java index 255338bb1..d5daf22b1 100644 --- a/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java +++ b/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java @@ -47,6 +47,8 @@ public abstract class ContributedLibrary extends DownloadableContribution { public abstract String getCategory(); + public abstract void setCategory(String category); + public abstract String getLicense(); public abstract String getParagraph(); @@ -79,7 +81,7 @@ public abstract class ContributedLibrary extends DownloadableContribution { /** * Returns true if the library declares to support the specified * architecture (through the "architectures" property field). - * + * * @param reqArch * @return */ @@ -91,7 +93,7 @@ public abstract class ContributedLibrary extends DownloadableContribution { /** * Returns true if the library declares to support at least one of the * specified architectures. - * + * * @param reqArchs * A List of architectures to check * @return diff --git a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java index 10fd5bbe9..349d6088d 100644 --- a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java +++ b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java @@ -28,9 +28,7 @@ */ package cc.arduino.libraries.contributions; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; public abstract class LibrariesIndex { @@ -46,24 +44,22 @@ public abstract class LibrariesIndex { @Override public String toString() { - String res = ""; - for (ContributedLibrary l : getLibraries()) - res += l.toString(); - return res; + StringBuilder sb = new StringBuilder(); + for (ContributedLibrary library : getLibraries()) { + sb.append(library.toString()); + } + return sb.toString(); } - private List categories = new ArrayList(); - public List getCategories() { - return categories; - } - - public void fillCategories() { - categories.clear(); + List categories = new LinkedList(); for (ContributedLibrary lib : getLibraries()) { - if (!categories.contains(lib.getCategory())) + if (lib.getCategory() != null && !categories.contains(lib.getCategory())) { categories.add(lib.getCategory()); + } } Collections.sort(categories); + + return categories; } } diff --git a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java index 96cc38c15..109bd332d 100644 --- a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java +++ b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java @@ -64,15 +64,12 @@ public class LibrariesIndexer { "libraries"); } - public void parseIndex() throws JsonParseException, IOException { + public void parseIndex() throws IOException { parseIndex(indexFile); - - index.fillCategories(); // TODO: resolve libraries inner references } - private void parseIndex(File indexFile) throws JsonParseException, - IOException { + private void parseIndex(File indexFile) throws IOException { InputStream indexIn = new FileInputStream(indexFile); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new MrBeanModule()); @@ -80,6 +77,12 @@ public class LibrariesIndexer { mapper.configure(DeserializationFeature.EAGER_DESERIALIZER_FETCH, true); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); index = mapper.readValue(indexIn, LibrariesIndex.class); + + for (ContributedLibrary library : index.getLibraries()) { + if (library.getCategory() == null || "".equals(library.getCategory())) { + library.setCategory("Uncategorized"); + } + } } public void setLibrariesFolders(List _librariesFolders) @@ -172,7 +175,7 @@ public class LibrariesIndexer { * Set the sketchbook library folder.
* New libraries will be installed here.
* Libraries not found on this folder will be marked as read-only. - * + * * @param folder */ public void setSketchbookLibrariesFolder(File folder) { diff --git a/arduino-core/src/processing/app/packages/LegacyUserLibrary.java b/arduino-core/src/processing/app/packages/LegacyUserLibrary.java index 34f09ef9c..0bed82589 100644 --- a/arduino-core/src/processing/app/packages/LegacyUserLibrary.java +++ b/arduino-core/src/processing/app/packages/LegacyUserLibrary.java @@ -80,7 +80,7 @@ public class LegacyUserLibrary extends UserLibrary { @Override public String getCategory() { - return null; + return "Uncategorized"; } @Override diff --git a/arduino-core/src/processing/app/packages/UserLibrary.java b/arduino-core/src/processing/app/packages/UserLibrary.java index f92cd0087..10bffe047 100644 --- a/arduino-core/src/processing/app/packages/UserLibrary.java +++ b/arduino-core/src/processing/app/packages/UserLibrary.java @@ -199,6 +199,11 @@ public class UserLibrary extends ContributedLibrary { return CATEGORIES; } + @Override + public void setCategory(String category) { + this.category = category; + } + @Override public String getVersion() { return version;