diff --git a/dspace-api/src/main/java/org/dspace/content/Collection.java b/dspace-api/src/main/java/org/dspace/content/Collection.java index d94f48c9ad..1d4c9bbefe 100644 --- a/dspace-api/src/main/java/org/dspace/content/Collection.java +++ b/dspace-api/src/main/java/org/dspace/content/Collection.java @@ -88,8 +88,7 @@ public class Collection extends DSpaceObject implements DSpaceObjectLegacySuppor joinColumns = {@JoinColumn(name = "collection_id") }, inverseJoinColumns = {@JoinColumn(name = "community_id") } ) - @Sort(type = SortType.COMPARATOR, comparator = NameAscendingComparator.class) - private Set communities = new TreeSet<>(new NameAscendingComparator()); + private Set communities = new HashSet<>(); @Transient private transient CollectionService collectionService; @@ -270,7 +269,10 @@ public class Collection extends DSpaceObject implements DSpaceObjectLegacySuppor public List getCommunities() throws SQLException { // We return a copy because we do not want people to add elements to this collection directly. - return Arrays.asList(communities.toArray(new Community[]{})); + // We return a list to maintain backwards compatibility + Community[] output = communities.toArray(new Community[]{}); + Arrays.sort(output, new NameAscendingComparator()); + return Arrays.asList(output); } void addCommunity(Community community) { @@ -278,7 +280,7 @@ public class Collection extends DSpaceObject implements DSpaceObjectLegacySuppor setModified(); } - void removeCommunity(Community community){ + void removeCommunity(Community community) { this.communities.remove(community); setModified(); } diff --git a/dspace-api/src/main/java/org/dspace/content/Community.java b/dspace-api/src/main/java/org/dspace/content/Community.java index 496df5fb4a..e18356af41 100644 --- a/dspace-api/src/main/java/org/dspace/content/Community.java +++ b/dspace-api/src/main/java/org/dspace/content/Community.java @@ -50,16 +50,13 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport joinColumns = {@JoinColumn(name = "parent_comm_id") }, inverseJoinColumns = {@JoinColumn(name = "child_comm_id") } ) - @Sort(type = SortType.COMPARATOR, comparator = NameAscendingComparator.class) - private Set subCommunities = new TreeSet(new NameAscendingComparator()); + private Set subCommunities = new HashSet<>(); @ManyToMany(fetch = FetchType.LAZY, mappedBy = "subCommunities") - @Sort(type = SortType.COMPARATOR, comparator = NameAscendingComparator.class) - private Set parentCommunities = new TreeSet(new NameAscendingComparator());; + private Set parentCommunities = new HashSet<>(); @ManyToMany(fetch = FetchType.LAZY, mappedBy = "communities", cascade = {CascadeType.PERSIST}) - @Sort(type = SortType.COMPARATOR, comparator = NameAscendingComparator.class) - private Set collections =new TreeSet(new NameAscendingComparator());; + private Set collections = new HashSet<>(); @OneToOne @JoinColumn(name = "admin") @@ -150,7 +147,10 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport public List getCollections() { // We return a copy because we do not want people to add elements to this collection directly. - return Arrays.asList(collections.toArray(new Collection[]{})); + // We return a list to maintain backwards compatibility + Collection[] output = collections.toArray(new Collection[]{}); + Arrays.sort(output, new NameAscendingComparator()); + return Arrays.asList(output); } void addCollection(Collection collection) @@ -173,7 +173,10 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport public List getSubcommunities() { // We return a copy because we do not want people to add elements to this collection directly. - return Arrays.asList(subCommunities.toArray(new Community[]{})); + // We return a list to maintain backwards compatibility + Community[] output = subCommunities.toArray(new Community[]{}); + Arrays.sort(output, new NameAscendingComparator()); + return Arrays.asList(output); } /** @@ -185,7 +188,10 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport public List getParentCommunities() { // We return a copy because we do not want people to add elements to this collection directly. - return Arrays.asList(parentCommunities.toArray(new Community[]{})); + // We return a list to maintain backwards compatibility + Community[] output = parentCommunities.toArray(new Community[]{}); + Arrays.sort(output, new NameAscendingComparator()); + return Arrays.asList(output); } void addParentCommunity(Community parentCommunity) { @@ -193,13 +199,13 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport } void clearParentCommunities(){ - this.parentCommunities.clear(); - this.parentCommunities = null; + parentCommunities.clear(); } public void removeParentCommunity(Community parentCommunity) { - this.parentCommunities.remove(parentCommunity); + parentCommunities.remove(parentCommunity); + setModified(); } /** diff --git a/dspace-api/src/main/java/org/dspace/content/Item.java b/dspace-api/src/main/java/org/dspace/content/Item.java index aca2738d54..49ab4b8caa 100644 --- a/dspace-api/src/main/java/org/dspace/content/Item.java +++ b/dspace-api/src/main/java/org/dspace/content/Item.java @@ -79,8 +79,7 @@ public class Item extends DSpaceObject implements DSpaceObjectLegacySupport joinColumns = {@JoinColumn(name = "item_id") }, inverseJoinColumns = {@JoinColumn(name = "collection_id") } ) - @Sort(type = SortType.COMPARATOR, comparator = NameAscendingComparator.class) - private final Set collections = new TreeSet<>(new NameAscendingComparator()); + private final Set collections = new HashSet<>(); @ManyToMany(fetch = FetchType.LAZY, mappedBy = "items") private final List bundles = new ArrayList<>(); @@ -233,7 +232,10 @@ public class Item extends DSpaceObject implements DSpaceObjectLegacySupport public List getCollections() { // We return a copy because we do not want people to add elements to this collection directly. - return Arrays.asList(collections.toArray(new Collection[]{})); + // We return a list to maintain backwards compatibility + Collection[] output = collections.toArray(new Collection[]{}); + Arrays.sort(output, new NameAscendingComparator()); + return Arrays.asList(output); } void addCollection(Collection collection)