X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FSone.java;h=661a13c8ddd0b4cdcd03cf1e1f2c94b94fd0992e;hb=dca29fe497ecbaefad9af7795309d2ec45ea15c8;hp=b38f8be5339677ef4534f8063ae72335d039d6fa;hpb=046f9eb545bb5b18fd7229c0325832be11148ecc;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 b38f8be..661a13c 100644 --- a/src/main/java/net/pterodactylus/sone/data/Sone.java +++ b/src/main/java/net/pterodactylus/sone/data/Sone.java @@ -76,6 +76,12 @@ public class Sone { /** The IDs of all blocked Sones. */ private final Set blockedSoneIds = new HashSet(); + /** The IDs of all liked posts. */ + private final Set likedPostIds = new HashSet(); + + /** The IDs of all liked replies. */ + private final Set likedReplyIds = new HashSet(); + /** Modification count. */ private volatile long modificationCounter = 0; @@ -436,6 +442,132 @@ public class Sone { } /** + * Returns the IDs of all liked posts. + * + * @return All liked posts’ IDs + */ + public Set getLikedPostIds() { + return Collections.unmodifiableSet(likedPostIds); + } + + /** + * Sets the IDs of all liked posts. + * + * @param likedPostIds + * All liked posts’ IDs + * @return This Sone (for method chaining) + */ + public synchronized Sone setLikePostIds(Set likedPostIds) { + this.likedPostIds.clear(); + this.likedPostIds.addAll(likedPostIds); + modificationCounter++; + return this; + } + + /** + * Checks whether the given post ID is liked by this Sone. + * + * @param postId + * The ID of the post + * @return {@code true} if this Sone likes the given post, {@code false} + * otherwise + */ + public boolean isLikedPostId(String postId) { + return likedPostIds.contains(postId); + } + + /** + * Adds the given post ID to the list of posts this Sone likes. + * + * @param postId + * The ID of the post + * @return This Sone (for method chaining) + */ + public synchronized Sone addLikedPostId(String postId) { + if (likedPostIds.add(postId)) { + modificationCounter++; + } + return this; + } + + /** + * Removes the given post ID from the list of posts this Sone likes. + * + * @param postId + * The ID of the post + * @return This Sone (for method chaining) + */ + public synchronized Sone removeLikedPostId(String postId) { + if (likedPostIds.remove(postId)) { + modificationCounter++; + } + return this; + } + + /** + * Returns the IDs of all liked replies. + * + * @return All liked replies’ IDs + */ + public Set getLikedReplyIds() { + return Collections.unmodifiableSet(likedReplyIds); + } + + /** + * Sets the IDs of all liked replies. + * + * @param likedReplyIds + * All liked replies’ IDs + * @return This Sone (for method chaining) + */ + public synchronized Sone setLikeReplyIds(Set likedReplyIds) { + this.likedReplyIds.clear(); + this.likedReplyIds.addAll(likedReplyIds); + modificationCounter++; + return this; + } + + /** + * Checks whether the given reply ID is liked by this Sone. + * + * @param replyId + * The ID of the reply + * @return {@code true} if this Sone likes the given reply, {@code false} + * otherwise + */ + public boolean isLikedReplyId(String replyId) { + return likedReplyIds.contains(replyId); + } + + /** + * Adds the given reply ID to the list of replies this Sone likes. + * + * @param replyId + * The ID of the reply + * @return This Sone (for method chaining) + */ + public synchronized Sone addLikedReplyId(String replyId) { + if (likedReplyIds.add(replyId)) { + modificationCounter++; + } + return this; + } + + /** + * Removes the given post ID from the list of replies this Sone likes. + * + * @param replyId + * The ID of the reply + * @return This Sone (for method chaining) + */ + public synchronized Sone removeLikedReplyId(String replyId) { + if (likedReplyIds.remove(replyId)) { + modificationCounter++; + } + return this; + } + + /** * Returns the modification counter. * * @return The modification counter