001: package org.contineo.core.security;
002:
003: import java.util.ArrayList;
004: import java.util.Collection;
005: import java.util.Iterator;
006:
007: import org.apache.commons.logging.Log;
008: import org.apache.commons.logging.LogFactory;
009: import org.contineo.core.security.dao.GroupDAO;
010: import org.contineo.core.security.dao.UserDAO;
011:
012: /**
013: * Basic implementation of <code>SecurityManager</code>
014: *
015: * @author Marco Meschieri
016: * @version $Id: SecurityManagerImpl.java,v 1.1 2007/06/29 06:28:30 marco Exp $
017: * @since 3.0
018: */
019: public class SecurityManagerImpl implements SecurityManager {
020:
021: protected static Log log = LogFactory
022: .getLog(SecurityManagerImpl.class);
023:
024: protected UserDAO userDAO;
025:
026: protected GroupDAO groupDAO;
027:
028: private SecurityManagerImpl() {
029: }
030:
031: public void setGroupDAO(GroupDAO groupDAO) {
032: this .groupDAO = groupDAO;
033: }
034:
035: public void setUserDAO(UserDAO userDAO) {
036: this .userDAO = userDAO;
037: }
038:
039: /**
040: * @see org.contineo.core.security.SecurityManager#assignUsersToGroup(java.util.Collection,
041: * org.contineo.core.security.Group)
042: */
043: public void assignUsersToGroup(Collection<User> users, Group group) {
044: for (Iterator iter = users.iterator(); iter.hasNext();) {
045: User user = (User) iter.next();
046:
047: if (!group.getUsers().contains(user)) {
048: group.getUsers().add(user);
049: }
050: if (!user.getGroups().contains(group))
051: user.getGroups().add(group);
052: }
053: groupDAO.store(group);
054:
055: if (log.isDebugEnabled())
056: log.debug("Assigned users " + users + " to group " + group);
057: }
058:
059: /**
060: * @see org.contineo.core.security.SecurityManager#assignUserToGroups(org.contineo.core.security.User,
061: * java.util.Collection)
062: */
063: public void assignUserToGroups(User user, Collection<Group> groups) {
064: for (Group group : groups)
065: assignUserToGroup(user, group);
066: }
067:
068: /**
069: * @see org.contineo.core.security.SecurityManager#assignUserToGroup(org.contineo.core.security.User,
070: * org.contineo.core.security.Group)
071: */
072: public void assignUserToGroup(User user, Group group) {
073: Collection<User> users = new ArrayList<User>();
074: users.add(user);
075: assignUsersToGroup(users, group);
076: }
077:
078: /**
079: * @see org.contineo.core.security.SecurityManager#removeUsersFromGroup(java.util.Collection,
080: * org.contineo.core.security.Group)
081: */
082: public void removeUsersFromGroup(Collection<User> users, Group group) {
083: for (Iterator<User> iter = users.iterator(); iter.hasNext();) {
084: User user = iter.next();
085: if (group.getUsers().contains(user)) {
086: group.getUsers().remove(user);
087: user.getGroups().remove(group);
088: }
089: }
090:
091: groupDAO.store(group);
092:
093: if (log.isDebugEnabled())
094: log
095: .debug("Removed users " + users + " from group "
096: + group);
097: }
098:
099: /**
100: * @see org.contineo.core.security.SecurityManager#removeUserFromGroup(org.contineo.core.security.User,
101: * org.contineo.core.security.Group)
102: */
103: public void removeUserFromGroup(User user, Group group) {
104: Collection<User> users = new ArrayList<User>();
105: users.add(user);
106: removeUsersFromGroup(users, group);
107: }
108:
109: /**
110: * @see org.contineo.core.security.SecurityManager#removeUserFromAllGroups(org.contineo.core.security.User)
111: */
112: public void removeUserFromAllGroups(User user) {
113: Collection<Group> groups = groupDAO.findAll();
114: for (Iterator<Group> iter = groups.iterator(); iter.hasNext();) {
115: Group group = iter.next();
116: if (group.getUsers().contains(user))
117: removeUserFromGroup(user, group);
118: }
119: }
120:
121: /**
122: * @see org.contineo.core.security.SecurityManager#removeAllUsersFromGroup(org.contineo.core.security.Group)
123: */
124: public void removeAllUsersFromGroup(Group group) {
125: removeUsersFromGroup(group.getUsers(), group);
126: }
127:
128: /**
129: * @see org.contineo.core.security.SecurityManager#assignUserToGroups(org.contineo.core.security.User,
130: * java.lang.String[])
131: */
132: public void assignUserToGroups(User user, String[] groupNames) {
133: if (groupNames == null)
134: return;
135: ArrayList<Group> groups = new ArrayList<Group>();
136: for (int i = 0; i < groupNames.length; i++)
137: groups.add(groupDAO.findByPrimaryKey(groupNames[i]));
138: assignUserToGroups(user, groups);
139: }
140: }
|