X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FSone.java;h=74ab276a293e4b7d123e92e91b07a0529bd31fd9;hp=9d7ca826421ee9afcc64090e2d6b1e1a32734b33;hb=751728b64cd28bf149d921582a570f8c034fa146;hpb=63df577f7ced52acfa93e4a7f329292069d8ba9d diff --git a/src/main/java/net/pterodactylus/sone/data/Sone.java b/src/main/java/net/pterodactylus/sone/data/Sone.java index 9d7ca82..74ab276 100644 --- a/src/main/java/net/pterodactylus/sone/data/Sone.java +++ b/src/main/java/net/pterodactylus/sone/data/Sone.java @@ -21,9 +21,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; -import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.CopyOnWriteArraySet; import java.util.logging.Level; import java.util.logging.Logger; @@ -47,6 +48,30 @@ import freenet.keys.FreenetURI; */ public class Sone implements Fingerprintable, Comparable { + /** + * The possible values for the “show custom avatars” option. + * + * @author David ‘Bombe’ Roden + */ + public static enum ShowCustomAvatars { + + /** Never show custom avatars. */ + NEVER, + + /** Only show custom avatars of followed Sones. */ + FOLLOWED, + + /** Only show custom avatars of Sones you manually trust. */ + MANUALLY_TRUSTED, + + /** Only show custom avatars of automatically trusted Sones. */ + TRUSTED, + + /** Always show custom avatars. */ + ALWAYS, + + } + /** comparator that sorts Sones by their nice name. */ public static final Comparator NICE_NAME_COMPARATOR = new Comparator() { @@ -153,22 +178,22 @@ public class Sone implements Fingerprintable, Comparable { private volatile Client client; /** All friend Sones. */ - private final Set friendSones = Collections.synchronizedSet(new HashSet()); + private final Set friendSones = new CopyOnWriteArraySet(); /** All posts. */ - private final Set posts = Collections.synchronizedSet(new HashSet()); + private final Set posts = new CopyOnWriteArraySet(); /** All replies. */ - private final Set replies = Collections.synchronizedSet(new HashSet()); + private final Set replies = new CopyOnWriteArraySet(); /** The IDs of all liked posts. */ - private final Set likedPostIds = Collections.synchronizedSet(new HashSet()); + private final Set likedPostIds = new CopyOnWriteArraySet(); /** The IDs of all liked replies. */ - private final Set likedReplyIds = Collections.synchronizedSet(new HashSet()); + private final Set likedReplyIds = new CopyOnWriteArraySet(); /** The albums of this Sone. */ - private final List albums = Collections.synchronizedList(new ArrayList()); + private final List albums = new CopyOnWriteArrayList(); /** Sone-specific options. */ private final Options options = new Options(); @@ -341,7 +366,7 @@ public class Sone implements Fingerprintable, Comparable { * * @return A copy of the profile */ - public synchronized Profile getProfile() { + public Profile getProfile() { return new Profile(profile); } @@ -353,7 +378,7 @@ public class Sone implements Fingerprintable, Comparable { * @param profile * The profile to set */ - public synchronized void setProfile(Profile profile) { + public void setProfile(Profile profile) { this.profile = new Profile(profile); } @@ -447,7 +472,7 @@ public class Sone implements Fingerprintable, Comparable { * The new (and only) posts of this Sone * @return This Sone (for method chaining) */ - public synchronized Sone setPosts(Collection posts) { + public Sone setPosts(Collection posts) { synchronized (this) { this.posts.clear(); this.posts.addAll(posts); @@ -462,7 +487,7 @@ public class Sone implements Fingerprintable, Comparable { * @param post * The post to add */ - public synchronized void addPost(Post post) { + public void addPost(Post post) { if (post.getSone().equals(this) && posts.add(post)) { logger.log(Level.FINEST, "Adding %s to “%s”.", new Object[] { post, getName() }); } @@ -474,7 +499,7 @@ public class Sone implements Fingerprintable, Comparable { * @param post * The post to remove */ - public synchronized void removePost(Post post) { + public void removePost(Post post) { if (post.getSone().equals(this)) { posts.remove(post); } @@ -485,7 +510,7 @@ public class Sone implements Fingerprintable, Comparable { * * @return All replies this Sone made */ - public synchronized Set getReplies() { + public Set getReplies() { return Collections.unmodifiableSet(replies); } @@ -496,7 +521,7 @@ public class Sone implements Fingerprintable, Comparable { * The new (and only) replies of this Sone * @return This Sone (for method chaining) */ - public synchronized Sone setReplies(Collection replies) { + public Sone setReplies(Collection replies) { this.replies.clear(); this.replies.addAll(replies); return this; @@ -509,7 +534,7 @@ public class Sone implements Fingerprintable, Comparable { * @param reply * The reply to add */ - public synchronized void addReply(PostReply reply) { + public void addReply(PostReply reply) { if (reply.getSone().equals(this)) { replies.add(reply); } @@ -521,7 +546,7 @@ public class Sone implements Fingerprintable, Comparable { * @param reply * The reply to remove */ - public synchronized void removeReply(PostReply reply) { + public void removeReply(PostReply reply) { if (reply.getSone().equals(this)) { replies.remove(reply); } @@ -543,7 +568,7 @@ public class Sone implements Fingerprintable, Comparable { * All liked posts’ IDs * @return This Sone (for method chaining) */ - public synchronized Sone setLikePostIds(Set likedPostIds) { + public Sone setLikePostIds(Set likedPostIds) { this.likedPostIds.clear(); this.likedPostIds.addAll(likedPostIds); return this; @@ -568,7 +593,7 @@ public class Sone implements Fingerprintable, Comparable { * The ID of the post * @return This Sone (for method chaining) */ - public synchronized Sone addLikedPostId(String postId) { + public Sone addLikedPostId(String postId) { likedPostIds.add(postId); return this; } @@ -580,7 +605,7 @@ public class Sone implements Fingerprintable, Comparable { * The ID of the post * @return This Sone (for method chaining) */ - public synchronized Sone removeLikedPostId(String postId) { + public Sone removeLikedPostId(String postId) { likedPostIds.remove(postId); return this; } @@ -601,7 +626,7 @@ public class Sone implements Fingerprintable, Comparable { * All liked replies’ IDs * @return This Sone (for method chaining) */ - public synchronized Sone setLikeReplyIds(Set likedReplyIds) { + public Sone setLikeReplyIds(Set likedReplyIds) { this.likedReplyIds.clear(); this.likedReplyIds.addAll(likedReplyIds); return this; @@ -626,7 +651,7 @@ public class Sone implements Fingerprintable, Comparable { * The ID of the reply * @return This Sone (for method chaining) */ - public synchronized Sone addLikedReplyId(String replyId) { + public Sone addLikedReplyId(String replyId) { likedReplyIds.add(replyId); return this; } @@ -638,7 +663,7 @@ public class Sone implements Fingerprintable, Comparable { * The ID of the reply * @return This Sone (for method chaining) */ - public synchronized Sone removeLikedReplyId(String replyId) { + public Sone removeLikedReplyId(String replyId) { likedReplyIds.remove(replyId); return this; } @@ -693,7 +718,7 @@ public class Sone implements Fingerprintable, Comparable { * @param album * The album to add */ - public synchronized void addAlbum(Album album) { + public void addAlbum(Album album) { Validation.begin().isNotNull("Album", album).check().isEqual("Album Owner", album.getSone(), this).check(); albums.add(album); } @@ -704,7 +729,7 @@ public class Sone implements Fingerprintable, Comparable { * @param albums * The albums of this Sone */ - public synchronized void setAlbums(Collection albums) { + public void setAlbums(Collection albums) { Validation.begin().isNotNull("Albums", albums).check(); this.albums.clear(); for (Album album : albums) { @@ -718,7 +743,7 @@ public class Sone implements Fingerprintable, Comparable { * @param album * The album to remove */ - public synchronized void removeAlbum(Album album) { + public void removeAlbum(Album album) { Validation.begin().isNotNull("Album", album).check().isEqual("Album Owner", album.getSone(), this).check(); albums.remove(album); }