From: David ‘Bombe’ Roden Date: Wed, 27 Apr 2011 19:46:54 +0000 (+0200) Subject: Add method to check a post’s visibility. X-Git-Tag: 0.6.3^2~7 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=871af6a15ec10c5df170955f5d65285a3f6982fb;p=Sone.git Add method to check a post’s visibility. --- diff --git a/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java b/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java index f2bff09..7491e70 100644 --- a/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java +++ b/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java @@ -24,7 +24,10 @@ import java.util.List; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.Reply; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.freenet.wot.OwnIdentity; +import net.pterodactylus.sone.freenet.wot.Trust; import net.pterodactylus.util.notify.Notification; +import net.pterodactylus.util.validation.Validation; /** * Filter for {@link ListNotification}s. @@ -166,4 +169,50 @@ public class ListNotificationFilters { return null; } + /** + * Checks whether a post is visible to the given Sone. A post is not + * considered visible if one of the following statements is true: + * + * If none of these statements is true the post is considered visible. + * + * @param sone + * The Sone that checks for a post’s visibility + * @param post + * The post to check for visibility + * @return {@code true} if the post is considered visible, {@code false} + * otherwise + */ + public static boolean isPostVisible(Sone sone, Post post) { + Validation.begin().isNotNull("Sone", sone).isNotNull("Post", post).check().isNotNull("Sone’s Identity", sone.getIdentity()).check().isInstanceOf("Sone’s Identity", sone.getIdentity(), OwnIdentity.class).check(); + Sone postSone = post.getSone(); + if (postSone == null) { + return false; + } + Trust trust = postSone.getIdentity().getTrust((OwnIdentity) sone.getIdentity()); + if (trust != null) { + if ((trust.getExplicit() != null) && (trust.getExplicit() < 0)) { + return false; + } + if ((trust.getExplicit() == null) && (trust.getImplicit() != null) && (trust.getImplicit() < 0)) { + return false; + } + } else { + return false; + } + if ((!postSone.equals(sone)) && !sone.hasFriend(postSone.getId()) && !sone.equals(post.getRecipient())) { + return false; + } + return true; + } + }