@@ -63,15 +63,17 @@ public Object getParent() {
6363
6464 public class Library implements Comparable <Library >, Node {
6565 private String name ;
66+ private String indexName ;
6667 private Category category ;
6768 protected TreeSet <VersionNumber > versions = new TreeSet <>();
6869 protected String version ;
6970 private String tooltip ;
7071
71- public Library (Category category , String name , String tooltip ) {
72+ public Library (Category category , String name , String indexName , String tooltip ) {
7273 this .category = category ;
7374 this .name = name ;
7475 this .tooltip = tooltip ;
76+ this .indexName = indexName ;
7577 }
7678
7779 public Collection <VersionNumber > getVersions () {
@@ -95,6 +97,10 @@ public String getVersion() {
9597 return this .version ;
9698 }
9799
100+ public String getIndexName () {
101+ return this .indexName ;
102+ }
103+
98104 public void setVersion (String version ) {
99105 this .version = version ;
100106 }
@@ -121,26 +127,28 @@ public Object getParent() {
121127 }
122128
123129 public LibraryTree () {
124- LibraryIndex libraryIndex = Manager .getLibraryIndex ();
125-
126- for (String categoryName : libraryIndex .getCategories ()) {
127- Category category = new Category (categoryName );
128- for (io .sloeber .core .managers .Library library : libraryIndex .getLibraries (categoryName )) {
129- Library lib = category .libraries .get (library .getName ());
130- if (lib == null ) {
131- StringBuilder builder = new StringBuilder ("Architectures:" ) //$NON-NLS-1$
132- .append (library .getArchitectures ().toString ()).append ("\n \n " ) //$NON-NLS-1$
133- .append (library .getSentence ());
134- lib = new Library (category , library .getName (), builder .toString ());
135- category .libraries .put (lib .getName (), lib );
136- }
137- lib .versions .add (new VersionNumber (library .getVersion ()));
138- if (library .isInstalled ()) {
139- lib .version = library .getVersion ();
140- }
141- }
142-
143- this .categories .put (category .getName (), category );
130+ for (LibraryIndex libraryIndex : Manager .getLibraryIndices ()) {
131+ for (String categoryName : libraryIndex .getCategories ()) {
132+ Category category = this .categories .get (categoryName );
133+ if (category == null ) {
134+ category = new Category (categoryName );
135+ this .categories .put (category .getName (), category );
136+ }
137+ for (io .sloeber .core .managers .Library library : libraryIndex .getLibraries (categoryName )) {
138+ Library lib = category .libraries .get (library .getName () + " (" + libraryIndex .getName () + ")" );
139+ if (lib == null ) {
140+ StringBuilder builder = new StringBuilder ("Architectures:" ) //$NON-NLS-1$
141+ .append (library .getArchitectures ().toString ()).append ("\n \n " ) //$NON-NLS-1$
142+ .append (library .getSentence ());
143+ lib = new Library (category , library .getName (), libraryIndex .getName (), builder .toString ());
144+ category .libraries .put (library .getName () + " (" + libraryIndex .getName () + ")" , lib );
145+ }
146+ lib .versions .add (new VersionNumber (library .getVersion ()));
147+ if (library .isInstalled ()) {
148+ lib .version = library .getVersion ();
149+ }
150+ }
151+ }
144152 }
145153 }
146154
@@ -156,32 +164,54 @@ public Collection<Library> getAllLibraries() {
156164 return all ;
157165 }
158166
167+ private static LibraryIndex findLibraryIndex (String name ) {
168+ for (LibraryIndex libraryIndex : Manager .getLibraryIndices ()) {
169+ if (libraryIndex .getName ().equals (name ))
170+ return libraryIndex ;
171+ }
172+ return null ;
173+ }
174+
159175 public void reset () {
160- LibraryIndex libraryIndex = Manager .getLibraryIndex ();
161176 for (Library library : this .getAllLibraries ()) {
162- io .sloeber .core .managers .Library installed = libraryIndex .getInstalledLibrary (library .getName ());
163- library .setVersion (installed != null ? installed .getVersion () : null );
177+ LibraryIndex libraryIndex = findLibraryIndex (library .getIndexName ());
178+
179+ if (libraryIndex != null ) {
180+ io .sloeber .core .managers .Library installed = libraryIndex .getInstalledLibrary (library .getName ());
181+ library .setVersion (installed != null ? installed .getVersion () : null );
182+ }
164183 }
165184 }
166185
167186 }
168187
169188 public static IStatus setLibraryTree (LibraryTree libs , IProgressMonitor monitor , MultiStatus status ) {
170- for (LibraryTree .Library lib : libs .getAllLibraries ()) {
171- io .sloeber .core .managers .Library toRemove = Manager .getLibraryIndex ().getInstalledLibrary (lib .getName ());
172- if (toRemove != null && !toRemove .getVersion ().equals (lib .getVersion ())) {
173- status .add (toRemove .remove (monitor ));
174- }
175- io .sloeber .core .managers .Library toInstall = Manager .getLibraryIndex ().getLibrary (lib .getName (),
176- lib .getVersion ());
177- if (toInstall != null && !toInstall .isInstalled ()) {
178- status .add (toInstall .install (monitor ));
179- }
180- }
181- return status ;
189+ for (LibraryTree .Library lib : libs .getAllLibraries ()) {
190+ LibraryIndex libraryIndex = findLibraryIndex (lib .getIndexName ());
191+
192+ if (libraryIndex != null ) {
193+ io .sloeber .core .managers .Library toRemove = libraryIndex .getInstalledLibrary (lib .getName ());
194+ if (toRemove != null && !toRemove .getVersion ().equals (lib .getVersion ())) {
195+ status .add (toRemove .remove (monitor ));
196+ }
197+ io .sloeber .core .managers .Library toInstall = libraryIndex .getLibrary (lib .getName (), lib .getVersion ());
198+ if (toInstall != null && !toInstall .isInstalled ()) {
199+ status .add (toInstall .install (monitor ));
200+ }
201+ }
202+ }
203+ return status ;
182204 }
183205
184- public static String getPrivateLibraryPathsString () {
206+ private static LibraryIndex findLibraryIndex (String indexName ) {
207+ for (LibraryIndex libraryIndex : Manager .getLibraryIndices ()) {
208+ if (libraryIndex .getName ().equals (indexName ))
209+ return libraryIndex ;
210+ }
211+ return null ;
212+ }
213+
214+ public static String getPrivateLibraryPathsString () {
185215 return InstancePreferences .getPrivateLibraryPathsString ();
186216 }
187217
0 commit comments