9
9
import java .util .LinkedList ;
10
10
import java .util .List ;
11
11
import java .util .Map ;
12
- import java .util .Map .Entry ;
13
12
import java .util .Set ;
14
13
import static io .sloeber .core .api .Common .*;
15
14
import static io .sloeber .core .api .Const .*;
@@ -57,7 +56,7 @@ public class SloeberConfiguration extends AutoBuildConfigurationExtensionDescrip
57
56
private OtherDescription myOtherDesc ;
58
57
private CompileDescription myCompileDescription ;
59
58
// a map of foldername library
60
- private Map <String , IArduinoLibraryVersion > myLibraries = new HashMap <>();
59
+ private Map <IPath , IArduinoLibraryVersion > myLibraries = new HashMap <>();
61
60
62
61
// operational data
63
62
private boolean myMemoryIsDirty = true ;
@@ -518,8 +517,8 @@ public Set<IFolder> getIncludeFolders() {
518
517
* @return
519
518
* @throws CoreException
520
519
*/
521
- private Map <String , IArduinoLibraryVersion > getLibrariesFromLinks () {
522
- Map <String , IArduinoLibraryVersion > ret = new HashMap <>();
520
+ private Map <IPath , IArduinoLibraryVersion > getLibrariesFromLinks () {
521
+ Map <IPath , IArduinoLibraryVersion > ret = new HashMap <>();
523
522
IFolder libFolder = getArduinoLibraryFolder ();
524
523
if (!libFolder .exists ()) {
525
524
return ret ;
@@ -528,16 +527,22 @@ private Map<String, IArduinoLibraryVersion> getLibrariesFromLinks() {
528
527
for (IResource curResource : libFolder .members ()) {
529
528
if (curResource instanceof IFolder ) {
530
529
IFolder curFolder = (IFolder ) curResource ;
531
- IArduinoLibraryVersion curLib = myLibraries .get (curFolder .getName ());
530
+ IArduinoLibraryVersion curLib =null ;
531
+ for (IArduinoLibraryVersion curknowLib : myLibraries .values ()) {
532
+ if (curknowLib .getName ().equals (curFolder .getName ())){
533
+ curLib =curknowLib ;
534
+ continue ;
535
+ }
536
+ }
532
537
if (curLib != null ) {
533
- // We knbow the lib so it is ok
534
- ret .put (curLib .getName (), curLib );
538
+ // We know the lib so it is ok
539
+ ret .put (curLib .getFQN (), curLib );
535
540
continue ;
536
541
}
537
542
538
543
curLib = LibraryManager .getLibraryVersionFromLocation (curFolder , getBoardDescription ());
539
544
if (curLib != null ) {
540
- ret .put (curLib .getName (), curLib );
545
+ ret .put (curLib .getFQN (), curLib );
541
546
}
542
547
}
543
548
}
@@ -555,8 +560,8 @@ private Map<String, IArduinoLibraryVersion> getLibrariesFromLinks() {
555
560
private void removeLibraryLinks () {
556
561
IProgressMonitor monitor = new NullProgressMonitor ();
557
562
IFolder libFolder = getArduinoLibraryFolder ();
558
- for (String curLib : myLibraries .keySet ()) {
559
- IFolder curLibFolder = libFolder .getFolder (curLib );
563
+ for (IArduinoLibraryVersion curLib : myLibraries .values ()) {
564
+ IFolder curLibFolder = libFolder .getFolder (curLib . getName () );
560
565
if (curLibFolder .exists ()) {
561
566
try {
562
567
curLibFolder .delete (true , monitor );
@@ -592,7 +597,7 @@ private void upDateHardwareLibraries() {
592
597
if (referencingLibPath == null ) {
593
598
referencingLibPath = referenceLibPath ;
594
599
}
595
- Set <String > hardwareLibsFQN = new HashSet <>();
600
+ Set <IPath > hardwareLibsFQN = new HashSet <>();
596
601
for (IArduinoLibraryVersion curLib : myLibraries .values ()) {
597
602
if (curLib .isHardwareLib ()) {
598
603
IPath libPath = curLib .getInstallPath ();
@@ -602,19 +607,19 @@ private void upDateHardwareLibraries() {
602
607
}
603
608
// The hardware lib is for a different hardware.
604
609
// add it to the lists to reattach
605
- hardwareLibsFQN .add (curLib .getFQN (). toPortableString () );
610
+ hardwareLibsFQN .add (curLib .getFQN ());
606
611
}
607
612
}
608
613
if (!hardwareLibsFQN .isEmpty ()) {
609
614
Map <String , IArduinoLibraryVersion > boardLibs = LibraryManager .getLibrariesHarware (boardDesc );
610
- for (String curReplaceLibFQN : hardwareLibsFQN ) {
611
- IArduinoLibraryVersion newLib = boardLibs .get (curReplaceLibFQN );
615
+ for (IPath curReplaceLibFQN : hardwareLibsFQN ) {
616
+ IArduinoLibraryVersion newLib = boardLibs .get (curReplaceLibFQN . toPortableString () );
612
617
if (newLib != null ) {
613
618
// a library with the same name was found so use this one
614
- myLibraries .put (newLib .getName (), newLib );
619
+ myLibraries .put (newLib .getFQN (), newLib );
615
620
} else {
616
621
// no new library was found remove the old lib
617
- myLibraries .remove (Path . fromPortableString ( curReplaceLibFQN ). lastSegment () );
622
+ myLibraries .remove (curReplaceLibFQN );
618
623
}
619
624
}
620
625
}
@@ -635,7 +640,14 @@ public void reAttachLibraries() {
635
640
for (IResource curResource : libFolder .members ()) {
636
641
if (curResource instanceof IFolder ) {
637
642
IFolder curFolder = (IFolder ) curResource ;
638
- IArduinoLibraryVersion curLib = myLibraries .get (curFolder .getName ());
643
+
644
+ IArduinoLibraryVersion curLib =null ;
645
+ for (IArduinoLibraryVersion curknowLib : myLibraries .values ()) {
646
+ if (curknowLib .getName ().equals (curFolder .getName ())){
647
+ curLib =curknowLib ;
648
+ }
649
+ }
650
+
639
651
if ((curLib == null ) || (!curLib .getInstallPath ().equals (curFolder .getLocation ()))) {
640
652
try {
641
653
curFolder .delete (true , monitor );
@@ -659,7 +671,7 @@ public void reAttachLibraries() {
659
671
}
660
672
661
673
@ Override
662
- public Map <String , IArduinoLibraryVersion > getUsedLibraries () {
674
+ public Map <IPath , IArduinoLibraryVersion > getUsedLibraries () {
663
675
myLibraries = getLibrariesFromLinks ();
664
676
return new HashMap <>(myLibraries );
665
677
}
@@ -679,7 +691,7 @@ public boolean addLibraries(Collection<IArduinoLibraryVersion> librartiesToAdd)
679
691
}
680
692
IFolder newLibFolder = libFolder .getFolder (curLib .getName ());
681
693
Helpers .LinkFolderToFolder (curLib .getInstallPath (), newLibFolder );
682
- myLibraries .put (curLib .getName (), curLib );
694
+ myLibraries .put (curLib .getFQN (), curLib );
683
695
684
696
// exclude bad folders
685
697
File [] subFolders ;
@@ -722,9 +734,9 @@ public boolean removeLibraries(Collection<IArduinoLibraryVersion> librariesToRem
722
734
IProgressMonitor monitor = new NullProgressMonitor ();
723
735
IFolder libFolder = getArduinoLibraryFolder ();
724
736
for (IArduinoLibraryVersion curLib : librariesToRemove ) {
725
- if (myLibraries .containsKey (curLib .getName ())) {
737
+ if (myLibraries .containsKey (curLib .getFQN ())) {
726
738
ret = true ;
727
- myLibraries .remove (curLib .getName ());
739
+ myLibraries .remove (curLib .getFQN ());
728
740
try {
729
741
libFolder .getFolder (curLib .getName ()).delete (true , monitor );
730
742
} catch (CoreException e ) {
@@ -759,10 +771,8 @@ public boolean equals(AutoBuildConfigurationExtensionDescription base) {
759
771
myOtherDesc .equals (other .myOtherDesc ) &&
760
772
myCompileDescription .equals (other .myCompileDescription ) &&
761
773
myLibraries .size ()==other .myLibraries .size ()) {
762
- for (Entry <String , IArduinoLibraryVersion > curLib : myLibraries .entrySet ()) {
763
- String key = curLib .getKey ();
764
- IArduinoLibraryVersion localValue = curLib .getValue ();
765
- IArduinoLibraryVersion otherValue = other .myLibraries .get (key );
774
+ for ( IArduinoLibraryVersion localValue : myLibraries .values ()) {
775
+ IArduinoLibraryVersion otherValue = other .myLibraries .get (localValue .getFQN ());
766
776
if (!localValue .equals (otherValue )) {
767
777
return false ;
768
778
}
0 commit comments