- return filteredNotification;
- }
-
- /**
- * Finds the notification with the given ID in the list of notifications and
- * returns it.
- *
- * @param <T>
- * The type of the item in the notification
- * @param notifications
- * The notification to search
- * @param notificationId
- * The ID of the requested notification
- * @param notificationElementClass
- * The class of the notification item
- * @return The requested notification, or {@code null} if no notification
- * with the given ID could be found
- */
- @SuppressWarnings("unchecked")
- private static <T> ListNotification<T> getNotification(Collection<? extends Notification> notifications, String notificationId, Class<T> notificationElementClass) {
- for (Notification notification : notifications) {
- if (!notificationId.equals(notification.getId())) {
- continue;
- }
- return (ListNotification<T>) notification;
- }
- 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:
- * <ul>
- * <li>The post does not have a Sone.</li>
- * <li>The Sone of the post is not the given Sone, the given Sone does not
- * follow the post’s Sone, and the given Sone is not the recipient of the
- * post.</li>
- * <li>The trust relationship between the two Sones can not be retrieved.</li>
- * <li>The given Sone has explicitely assigned negative trust to the post’s
- * Sone.</li>
- * <li>The given Sone has not explicitely assigned negative trust to the
- * post’s Sone but the implicit trust is negative.</li>
- * <li>The post’s {@link Post#getTime() time} is in the future.</li>
- * </ul>
- * 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;