X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FSone.java;h=b38f8be5339677ef4534f8063ae72335d039d6fa;hb=046f9eb545bb5b18fd7229c0325832be11148ecc;hp=3e808a80da71513d09a628e35a6ad7a5a3c937c5;hpb=7c85033af8457c99cb87feb930f228de0abf70fe;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/Sone.java b/src/main/java/net/pterodactylus/sone/data/Sone.java index 3e808a8..b38f8be 100644 --- a/src/main/java/net/pterodactylus/sone/data/Sone.java +++ b/src/main/java/net/pterodactylus/sone/data/Sone.java @@ -28,6 +28,7 @@ import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; +import net.pterodactylus.sone.template.SoneAccessor; import net.pterodactylus.util.logging.Logging; import freenet.keys.FreenetURI; @@ -214,8 +215,20 @@ public class Sone { * * @return The friend Sones of this Sone */ - public Set getFriends() { - return Collections.unmodifiableSet(friendSones); + public List getFriends() { + List friends = new ArrayList(friendSones); + Collections.sort(friends, new Comparator() { + + @Override + public int compare(Sone leftSone, Sone rightSone) { + int diff = SoneAccessor.getNiceName(leftSone).compareTo(SoneAccessor.getNiceName(rightSone)); + if (diff != 0) { + return diff; + } + return (int) Math.max(Integer.MIN_VALUE, Math.min(Integer.MAX_VALUE, rightSone.getTime() - leftSone.getTime())); + } + }); + return friends; } /** @@ -225,10 +238,9 @@ public class Sone { * The new (and only) friends of this Sone * @return This Sone (for method chaining) */ - public synchronized Sone setFriends(Collection friends) { + public Sone setFriends(Collection friends) { friendSones.clear(); friendSones.addAll(friends); - modificationCounter++; return this; } @@ -251,9 +263,9 @@ public class Sone { * The friend Sone to add * @return This Sone (for method chaining) */ - public synchronized Sone addFriend(Sone friendSone) { - if (!friendSone.equals(this) && friendSones.add(friendSone)) { - modificationCounter++; + public Sone addFriend(Sone friendSone) { + if (!friendSone.equals(this)) { + friendSones.add(friendSone); } return this; } @@ -265,10 +277,8 @@ public class Sone { * The friend Sone to remove * @return This Sone (for method chaining) */ - public synchronized Sone removeFriend(Sone friendSone) { - if (friendSones.remove(friendSone)) { - modificationCounter++; - } + public Sone removeFriend(Sone friendSone) { + friendSones.remove(friendSone); return this; }