/** * Fill in the two collections of Entity reference strings - those added in newEntities that were not in oldEntityRefs, and those removed, i.e. in oldEntityRefs not in newEntities. */ public static void computeAddedRemovedEntityRefsFromNewEntitiesOldRefs(Collection<String> addedEntities, Collection<String> removedEntities, Collection<Entity> newEntities, Collection<String> oldEntityRefs) { // added for (Iterator<Entity> i = newEntities.iterator(); i.hasNext();) { Entity entity = i.next(); if (!refCollectionContainsEntity(oldEntityRefs, entity)) { addedEntities.add(entity.getReference()); } } // removed for (Iterator<String> i = oldEntityRefs.iterator(); i.hasNext();) { String entityRef = i.next(); if (!entityCollectionContainsRefString(newEntities, entityRef)) { removedEntities.add(entityRef); } } } }
if ((m_access == AssignmentAccess.GROUPED) && (EntityCollections.isEqualEntityRefsToEntities(m_groups, groups))) return; EntityCollections.computeAddedRemovedEntityRefsFromNewEntitiesOldRefs(addedGroups, removedGroups, groups, m_groups); if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) EntityCollections.setEntityRefsFromEntities(m_groups, groups);
/** * See if the collection of entity reference strings is contained in the collection of entities. * * @param entityRefs * The collection (String) of entity references. * @param entities * The collection (Entity) of entity objects. * @return true if there is containment, false if not. */ public static boolean isContainedEntityRefsToEntities(Collection<String> entityRefs, Collection<Entity> entities) { for (Iterator<String> iRefs = entityRefs.iterator(); iRefs.hasNext();) { String findThisEntityRef = iRefs.next(); if (!entityCollectionContainsRefString(entities, findThisEntityRef)) return false; } return true; }
/** * check permissions for removeMessage(). * * @param m * The message from this channel to remove. * @return true if the user is allowed to removeMessage(...), false if not. */ public boolean allowRemoveMessage(Message m) { // this is true if we can remove it due to any of our group membership boolean allowed = allowEditMessage(m, SECURE_REMOVE_OWN, SECURE_REMOVE_ANY); // but we must also assure, that for grouped messages, we can remove it from ALL of the groups if (allowed && (m.getHeader().getAccess() == MessageHeader.MessageAccess.GROUPED)) { boolean own = (m.getHeader().getFrom() == null) ? true : m.getHeader().getFrom().getId().equals(m_sessionManager.getCurrentSessionUserId()); allowed = EntityCollections.isContainedEntityRefsToEntities(m.getHeader().getGroups(), getGroupsAllowRemoveMessage(own)); } return allowed; } // allowRemoveMessage
if ((m_access == MessageAccess.GROUPED) && (EntityCollections.isEqualEntityRefsToEntities(m_groups, groups))) return; EntityCollections.computeAddedRemovedEntityRefsFromNewEntitiesOldRefs(addedGroups, removedGroups, groups, m_groups); if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) EntityCollections.setEntityRefsFromEntities(m_groups, groups);
if (!entityCollectionContainsRefString(entities, entityRef)) { return false;
/** * check permissions for removeMessage(). * * @param m * The message from this channel to remove. * @return true if the user is allowed to removeMessage(...), false if not. */ public boolean allowRemoveMessage(Message m) { // this is true if we can remove it due to any of our group membership boolean allowed = allowEditMessage(m, SECURE_REMOVE_OWN, SECURE_REMOVE_ANY); // but we must also assure, that for grouped messages, we can remove it from ALL of the groups if (allowed && (m.getHeader().getAccess() == MessageHeader.MessageAccess.GROUPED)) { boolean own = (m.getHeader().getFrom() == null) ? true : m.getHeader().getFrom().getId().equals(m_sessionManager.getCurrentSessionUserId()); allowed = EntityCollections.isContainedEntityRefsToEntities(m.getHeader().getGroups(), getGroupsAllowRemoveMessage(own)); } return allowed; } // allowRemoveMessage
if ((m_access == MessageAccess.GROUPED) && (EntityCollections.isEqualEntityRefsToEntities(m_groups, groups))) return; EntityCollections.computeAddedRemovedEntityRefsFromNewEntitiesOldRefs(addedGroups, removedGroups, groups, m_groups); if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) EntityCollections.setEntityRefsFromEntities(m_groups, groups);
/** * check permissions for removeMessage(). * * @param m * The message from this channel to remove. * @return true if the user is allowed to removeMessage(...), false if not. */ public boolean allowRemoveMessage(Message m) { // this is true if we can remove it due to any of our group membership boolean allowed = allowEditMessage(m, SECURE_REMOVE_OWN, SECURE_REMOVE_ANY); // but we must also assure, that for grouped messages, we can remove it from ALL of the groups if (allowed && (m.getHeader().getAccess() == MessageHeader.MessageAccess.GROUPED)) { boolean own = (m.getHeader().getFrom() == null) ? true : m.getHeader().getFrom().getId().equals(m_sessionManager.getCurrentSessionUserId()); allowed = EntityCollections.isContainedEntityRefsToEntities(m.getHeader().getGroups(), getGroupsAllowRemoveMessage(own)); } return allowed; } // allowRemoveMessage
if ((m_access == MessageAccess.GROUPED) && (EntityCollections.isEqualEntityRefsToEntities(m_groups, groups))) return; EntityCollections.computeAddedRemovedEntityRefsFromNewEntitiesOldRefs(addedGroups, removedGroups, groups, m_groups); if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) if (!EntityCollections.entityCollectionContainsRefString(allowedGroups, ref)) EntityCollections.setEntityRefsFromEntities(m_groups, groups);