epugh 2003/08/25 15:49:14
Modified: security/src/java/org/apache/fulcrum/security/spi/hibernate/simple
HibernateGroupManagerImpl.java
BaseHibernateManager.java
HibernateRoleManagerImpl.java
HibernateUserManagerImpl.java
HibernatePermissionManagerImpl.java
security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity
HibernateSimpleUser.java HibernateSimpleRole.java
HibernateSimpleGroup.java
Added:
security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity
UserSet.java
Log:
Allow hibernate SPI to particpate in a Session. Allows lazy loading of collections.
also
some bug fixes.
Revision Changes Path
1.5 +33 -19
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernateGroupManagerImpl.java
Index: HibernateGroupManagerImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernateGroupManagerImpl.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HibernateGroupManagerImpl.java 25 Aug 2003 15:31:40 -0000 1.4
+++ HibernateGroupManagerImpl.java 25 Aug 2003 22:49:14 -0000 1.5
@@ -53,9 +53,9 @@
* <http://www.apache.org/>.
*/
import java.util.List;
-
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.HibernateException;
+import net.sf.hibernate.Session;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -146,10 +146,22 @@
*/
public Group getGroupByName(String name) throws DataBackendException,
UnknownEntityException
{
- Group group = getAllGroups().getGroupByName(name);
- if (group == null)
+ Group group = null;
+ try
{
- throw new UnknownEntityException("The specified group does not exist");
+
+ List groups =
+ retrieveSession().find("from HibernateSimpleGroup g where
g.name=?", name.toLowerCase(), Hibernate.STRING);
+ if (groups.size() == 0)
+ {
+ throw new UnknownEntityException("Could not find group" + name);
+ }
+ group = (Group) groups.get(0);
+ //session.close();
+ }
+ catch (HibernateException e)
+ {
+ throw new DataBackendException("Error retriving group information", e);
}
return group;
}
@@ -186,10 +198,9 @@
GroupSet groupSet = new GroupSet();
try
{
- session = hibernateService.openSession();
- List groups = session.find("from HibernateSimpleGroup");
+
+ List groups = retrieveSession().find("from HibernateSimpleGroup");
groupSet.add(groups);
- session.close();
}
catch (HibernateException e)
{
@@ -247,9 +258,8 @@
List groups;
try
{
- session = hibernateService.openSession();
- groups = session.find("from HibernateSimpleGroup sg where sg.name=?",
group.getName(), Hibernate.STRING);
- session.close();
+
+ groups = retrieveSession().find("from HibernateSimpleGroup sg where
sg.name=?", group.getName(), Hibernate.STRING);
}
catch (HibernateException e)
{
@@ -307,10 +317,14 @@
roleExists = checkExists(role);
if (groupExists && roleExists)
{
- ((HibernateSimpleGroup) group).addRole(role);
- ((HibernateSimpleRole) role).addGroup(group);
- updateEntity(group);
- //updateEntity(role);
+ ((HibernateSimpleGroup) group).addRole(role);
+ ((HibernateSimpleRole) role).addGroup(group);
+ Session session = hibernateService.openSession();
//retrieveSession();
+ transaction = session.beginTransaction();
+ session.update(role);
+ session.update(group);
+ transaction.commit();
+ session.close();
return;
}
}
@@ -346,10 +360,10 @@
roleExists = checkExists(role);
if (groupExists && roleExists)
{
- ((SimpleGroup) group).removeRole(role);
- ((SimpleRole) role).removeGroup(group);
- updateEntity(group);
- //updateEntity(role);
+ ((SimpleGroup) group).removeRole(role);
+ ((SimpleRole) role).removeGroup(group);
+ updateEntity(group);
+ //updateEntity(role);
return;
}
}
1.4 +47 -11
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/BaseHibernateManager.java
Index: BaseHibernateManager.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/BaseHibernateManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BaseHibernateManager.java 25 Aug 2003 15:31:40 -0000 1.3
+++ BaseHibernateManager.java 25 Aug 2003 22:49:14 -0000 1.4
@@ -82,13 +82,27 @@
/** Logging */
private static Log log = LogFactory.getLog(BaseHibernateManager.class);
protected HibernateService hibernateService;
- protected Session session;
+ private Session session;
protected Transaction transaction;
protected ComponentManager manager = null;
protected PermissionManager permissionManager;
protected RoleManager roleManager;
protected GroupManager groupManager;
/**
+ * @return
+ */
+ public Session getHibernateSession()
+ {
+ return session;
+ }
+ /**
+ * @param session
+ */
+ public void setHibernateSession(Session session)
+ {
+ this.session = session;
+ }
+ /**
* @return
*/
ComponentManager getComponentManager()
@@ -105,6 +119,11 @@
try
{
permissionManager = (PermissionManager)
manager.lookup(PermissionManager.ROLE);
+ ((BaseHibernateManager)
permissionManager).setHibernateSession(retrieveSession());
+ }
+ catch (HibernateException he)
+ {
+ throw new DataBackendException(he.getMessage(), he);
}
catch (ComponentException ce)
{
@@ -123,6 +142,11 @@
try
{
roleManager = (RoleManager) manager.lookup(RoleManager.ROLE);
+ ((BaseHibernateManager)
roleManager).setHibernateSession(retrieveSession());
+ }
+ catch (HibernateException he)
+ {
+ throw new DataBackendException(he.getMessage(), he);
}
catch (ComponentException ce)
{
@@ -141,6 +165,11 @@
try
{
groupManager = (GroupManager) manager.lookup(GroupManager.ROLE);
+ ((BaseHibernateManager)
groupManager).setHibernateSession(retrieveSession());
+ }
+ catch (HibernateException he)
+ {
+ throw new DataBackendException(he.getMessage(), he);
}
catch (ComponentException ce)
{
@@ -153,11 +182,10 @@
{
try
{
- session = hibernateService.openSession();
+ session = retrieveSession();
transaction = session.beginTransaction();
session.delete(entity);
transaction.commit();
- session.close();
}
catch (HibernateException he)
{
@@ -183,11 +211,11 @@
{
try
{
- session = hibernateService.openSession();
+ session = retrieveSession();
transaction = session.beginTransaction();
session.update(entity);
transaction.commit();
- session.close();
+
}
catch (HibernateException he)
{
@@ -198,7 +226,7 @@
catch (HibernateException hex)
{
}
- throw new DataBackendException("updateEntity(" + entity+")", he);
+ throw new DataBackendException("updateEntity(" + entity + ")", he);
}
return;
}
@@ -214,11 +242,11 @@
{
try
{
- session = hibernateService.openSession();
+ session = retrieveSession();
transaction = session.beginTransaction();
session.save(entity);
transaction.commit();
- session.close();
+ //session.close();
}
catch (HibernateException he)
{
@@ -245,11 +273,11 @@
{
try
{
- session = hibernateService.openSession();
+ //session = hibernateService.openSession();
transaction = session.beginTransaction();
session.delete(entity);
transaction.commit();
- session.close();
+ session = retrieveSession();
}
catch (HibernateException he)
{
@@ -263,6 +291,14 @@
throw new DataBackendException("delete()", he);
}
return;
+ }
+ protected Session retrieveSession() throws HibernateException
+ {
+ if (session==null || (!session.isConnected() && !session.isOpen()))
+ {
+ session = hibernateService.openSession();
+ }
+ return session;
}
/**
* Avalon component lifecycle method
1.5 +5 -7
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernateRoleManagerImpl.java
Index: HibernateRoleManagerImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernateRoleManagerImpl.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HibernateRoleManagerImpl.java 25 Aug 2003 15:31:40 -0000 1.4
+++ HibernateRoleManagerImpl.java 25 Aug 2003 22:49:14 -0000 1.5
@@ -309,9 +309,9 @@
List roles;
try
{
- session = hibernateService.openSession();
- roles = session.find("from HibernateSimpleRole sr where sr.name=?",
role.getName(), Hibernate.STRING);
- session.close();
+
+ roles = retrieveSession().find("from HibernateSimpleRole sr where
sr.name=?", role.getName(), Hibernate.STRING);
+
}
catch (HibernateException e)
{
@@ -335,10 +335,8 @@
RoleSet roleSet = new RoleSet();
try
{
- session = hibernateService.openSession();
- List roles = session.find("from HibernateSimpleRole");
+ List roles = retrieveSession().find("from HibernateSimpleRole");
roleSet.add(roles);
- session.close();
}
catch (HibernateException e)
{
1.6 +38 -31
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernateUserManagerImpl.java
Index: HibernateUserManagerImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernateUserManagerImpl.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HibernateUserManagerImpl.java 25 Aug 2003 15:31:40 -0000 1.5
+++ HibernateUserManagerImpl.java 25 Aug 2003 22:49:14 -0000 1.6
@@ -56,10 +56,9 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.HibernateException;
-
+import net.sf.hibernate.Session;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -75,10 +74,10 @@
import org.apache.fulcrum.security.model.simple.entity.SimpleRole;
import org.apache.fulcrum.security.model.simple.entity.SimpleUser;
import org.apache.fulcrum.security.model.simple.manager.SimpleUserManager;
+import org.apache.fulcrum.security.spi.hibernate.simple.entity.HibernateSimpleGroup;
import org.apache.fulcrum.security.spi.hibernate.simple.entity.HibernateSimpleUser;
import org.apache.fulcrum.security.util.DataBackendException;
import org.apache.fulcrum.security.util.EntityExistsException;
-import org.apache.fulcrum.security.util.GroupSet;
import org.apache.fulcrum.security.util.PasswordMismatchException;
import org.apache.fulcrum.security.util.RoleSet;
import org.apache.fulcrum.security.util.UnknownEntityException;
@@ -126,9 +125,7 @@
List users = null;
try
{
- session = hibernateService.openSession();
- users = session.find("from HibernateSimpleUser su where su.name=?",
userName, Hibernate.STRING);
- session.close();
+ users = retrieveSession().find("from HibernateSimpleUser su where
su.name=?", userName, Hibernate.STRING);
}
catch (HibernateException e)
{
@@ -156,10 +153,11 @@
List users = null;
try
{
- session = hibernateService.openSession();
users =
- session.find("from HibernateSimpleUser su where su.name=?",
userName.toLowerCase(), Hibernate.STRING);
- session.close();
+ retrieveSession().find(
+ "from HibernateSimpleUser su where su.name=?",
+ userName.toLowerCase(),
+ Hibernate.STRING);
}
catch (HibernateException e)
{
@@ -226,8 +224,9 @@
throw new DataBackendException(ce.getMessage(), ce);
}
}
- if (!authenticator.authenticate(user,password)){
- throw new PasswordMismatchException("Can not authenticate user.");
+ if (!authenticator.authenticate(user, password))
+ {
+ throw new PasswordMismatchException("Can not authenticate user.");
}
}
/**
@@ -341,24 +340,23 @@
public synchronized void revokeAll(User user) throws DataBackendException,
UnknownEntityException
{
boolean userExists = false;
- try
+ userExists = checkExists(user);
+ if (userExists)
{
- userExists = checkExists(user);
- if (userExists)
+ Object groups[] = ((SimpleUser) user).getGroups().toArray();
+
+ for (int i = 0; i < groups.length; i++)
{
- ((SimpleUser) user).setGroups(new GroupSet());
- updateEntity(user);
- return;
+ Group group = (Group) groups[i];
+ revoke(user, group);
}
+
+ return;
}
- catch (Exception e)
- {
- throw new DataBackendException("revokeAll(User) failed", e);
- }
- finally
+ else
{
+ throw new UnknownEntityException("Unknown user '" + user.getName() +
"'");
}
- throw new UnknownEntityException("Unknown user '" + user.getName() + "'");
}
/**
* Determines if the <code>Group</code> exists in the security system.
@@ -521,10 +519,14 @@
userExists = checkExists(user);
if (groupExists && userExists)
{
- ((SimpleUser) user).addGroup(group);
- ((SimpleGroup) group).addUser(user);
- updateEntity(user);
- //updateEntity(group);
+ ((HibernateSimpleUser) user).addGroup(group);
+ ((HibernateSimpleGroup) group).addUser(user);
+ Session session = hibernateService.openSession();
//retrieveSession();
+ transaction = session.beginTransaction();
+ session.update(user);
+ session.update(group);
+ transaction.commit();
+ session.close();
return;
}
}
@@ -564,9 +566,14 @@
userExists = checkExists(user);
if (groupExists && userExists)
{
- ((SimpleUser) user).removeGroup(group);
-
- updateEntity(user);
+ ((HibernateSimpleUser) user).removeGroup(group);
+ ((HibernateSimpleGroup) group).removeUser(user);
+ Session session = hibernateService.openSession();
//retrieveSession();
+ transaction = session.beginTransaction();
+ session.update(user);
+ session.update(group);
+ transaction.commit();
+ session.close();
return;
}
}
1.5 +7 -7
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernatePermissionManagerImpl.java
Index: HibernatePermissionManagerImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/HibernatePermissionManagerImpl.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HibernatePermissionManagerImpl.java 25 Aug 2003 15:31:40 -0000 1.4
+++ HibernatePermissionManagerImpl.java 25 Aug 2003 22:49:14 -0000 1.5
@@ -167,10 +167,10 @@
PermissionSet permissionSet = new PermissionSet();
try
{
- session = hibernateService.openSession();
- List permissions = session.find("from SimplePermission");
+
+ List permissions = retrieveSession().find("from SimplePermission");
permissionSet.add(permissions);
- session.close();
+
}
catch (HibernateException e)
{
@@ -217,10 +217,10 @@
List permissions;
try
{
- session = hibernateService.openSession();
+
permissions =
- session.find("from SimplePermission sr where sr.name=?",
permission.getName(), Hibernate.STRING);
- session.close();
+ retrieveSession().find("from SimplePermission sr where
sr.name=?", permission.getName(), Hibernate.STRING);
+
}
catch (HibernateException e)
{
1.2 +8 -12
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity/HibernateSimpleUser.java
Index: HibernateSimpleUser.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity/HibernateSimpleUser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HibernateSimpleUser.java 24 Aug 2003 19:41:35 -0000 1.1
+++ HibernateSimpleUser.java 25 Aug 2003 22:49:14 -0000 1.2
@@ -3,11 +3,9 @@
*
*/
package org.apache.fulcrum.security.spi.hibernate.simple.entity;
-
import java.util.Set;
import org.apache.fulcrum.security.model.simple.entity.SimpleUser;
-
/**
* @author Eric Pugh
*
@@ -17,14 +15,12 @@
*/
public class HibernateSimpleUser extends SimpleUser
{
-
- void setHibernateGroups(Set permissions){
- this.getGroups().add(permissions);
- }
-
- Set getHibernateGroups(){
- return getGroups().getSet();
- }
-
-
+ void setHibernateGroups(Set groups)
+ {
+ getGroups().add(groups);
+ }
+ Set getHibernateGroups()
+ {
+ return getGroups().getSet();
+ }
}
1.3 +16 -21
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity/HibernateSimpleRole.java
Index: HibernateSimpleRole.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity/HibernateSimpleRole.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- HibernateSimpleRole.java 25 Aug 2003 15:30:24 -0000 1.2
+++ HibernateSimpleRole.java 25 Aug 2003 22:49:14 -0000 1.3
@@ -3,11 +3,8 @@
*
*/
package org.apache.fulcrum.security.spi.hibernate.simple.entity;
-
import java.util.Set;
-
import org.apache.fulcrum.security.model.simple.entity.SimpleRole;
-
/**
* @author Eric Pugh
*
@@ -16,22 +13,20 @@
*/
public class HibernateSimpleRole extends SimpleRole
{
-
- void setHibernatePermissions(Set permissions){
- this.getPermissions().add(permissions);
- }
-
- Set getHibernatePermissions(){
- return getPermissions().getSet();
- }
-
- void setHibernateGroups(Set groups){
- this.getGroups().add(groups);
- }
-
- Set getHibernateGroups(){
- return getGroups().getSet();
- }
-
-
+ void setHibernatePermissions(Set permissions)
+ {
+ this.getPermissions().add(permissions);
+ }
+ Set getHibernatePermissions()
+ {
+ return getPermissions().getSet();
+ }
+ void setHibernateGroups(Set groups)
+ {
+ this.getGroups().add(groups);
+ }
+ Set getHibernateGroups()
+ {
+ return getGroups().getSet();
+ }
}
1.2 +39 -13
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity/HibernateSimpleGroup.java
Index: HibernateSimpleGroup.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity/HibernateSimpleGroup.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HibernateSimpleGroup.java 24 Aug 2003 19:41:35 -0000 1.1
+++ HibernateSimpleGroup.java 25 Aug 2003 22:49:14 -0000 1.2
@@ -3,11 +3,10 @@
*
*/
package org.apache.fulcrum.security.spi.hibernate.simple.entity;
-
+import java.util.Iterator;
import java.util.Set;
-
+import org.apache.fulcrum.security.entity.User;
import org.apache.fulcrum.security.model.simple.entity.SimpleGroup;
-
/**
* @author Eric Pugh
*
@@ -17,14 +16,41 @@
*/
public class HibernateSimpleGroup extends SimpleGroup
{
-
- void setHibernateRoles(Set permissions){
- this.getRoles().add(permissions);
- }
-
- Set getHibernateRoles(){
- return getRoles().getSet();
- }
-
-
+ private UserSet users = new UserSet();
+ public void addUser(User user)
+ {
+ users.add(user);
+ }
+ public void removeUser(User user)
+ {
+ users.remove(user);
+ }
+ public void setUsers(Set users)
+ {
+ this.users.addAll(users);
+ }
+ public Set getUsers()
+ {
+ return this.users;
+ }
+ void setHibernateUsers(Set users)
+ {
+ for (Iterator i = users.iterator(); i.hasNext();)
+ {
+ User user = (User) i.next();
+ this.users.add(user);
+ }
+ }
+ Set getHibernateUsers()
+ {
+ return users.getSet();
+ }
+ void setHibernateRoles(Set roles)
+ {
+ this.getRoles().add(roles);
+ }
+ Set getHibernateRoles()
+ {
+ return getRoles().getSet();
+ }
}
1.1
jakarta-turbine-fulcrum/security/src/java/org/apache/fulcrum/security/spi/hibernate/simple/entity/UserSet.java
Index: UserSet.java
===================================================================
package org.apache.fulcrum.security.spi.hibernate.simple.entity;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Turbine" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Turbine", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
import java.util.Collection;
import java.util.Iterator;
import org.apache.commons.lang.StringUtils;
import org.apache.fulcrum.security.entity.User;
import org.apache.fulcrum.security.util.SecuritySet;
/**
* This class represents a set of Users. It is based on UserSet.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Eric Pugh</a>
* @version $Id: UserSet.java,v 1.1 2003/08/25 22:49:14 epugh Exp $
*/
public class UserSet
extends SecuritySet
{
/**
* Constructs an empty UserSet
*/
public UserSet()
{
super();
}
/**
* Constructs a new UserSet with specified contents.
*
* If the given collection contains multiple objects that are
* identical WRT equals() method, some objects will be overwritten.
*
* @param users A collection of users to be contained in the set.
*/
public UserSet(Collection users)
{
super();
add(users);
}
/**
* Adds a User to this UserSet.
*
* @param user A User.
* @return True if User was added; false if UserSet already
* contained the User.
*/
public boolean add(User user)
{
boolean res = contains(user);
nameMap.put(user.getName(), user);
idMap.put(getIdAsObject(user.getId()), user);
return res;
}
/**
* Adds the Users in a Collection to this UserSet.
*
* @param users A Collection of Users.
* @return True if this UserSet changed as a result; false
* if no change to this UserSet occurred (this UserSet
* already contained all members of the added UserSet).
*/
public boolean add(Collection users)
{
boolean res = false;
for (Iterator it = users.iterator(); it.hasNext();)
{
User r = (User) it.next();
res |= add(r);
}
return res;
}
/**
* Adds the Users in another UserSet to this UserSet.
*
* @param userSet A UserSet.
* @return True if this UserSet changed as a result; false
* if no change to this UserSet occurred (this UserSet
* already contained all members of the added UserSet).
*/
public boolean add(UserSet userSet)
{
boolean res = false;
for( Iterator it = userSet.iterator(); it.hasNext();)
{
User r = (User) it.next();
res |= add(r);
}
return res;
}
/**
* Removes a User from this UserSet.
*
* @param user A User.
* @return True if this UserSet contained the User
* before it was removed.
*/
public boolean remove(User user)
{
boolean res = contains(user);
nameMap.remove(user.getName());
idMap.remove(getIdAsObject(user.getId()));
return res;
}
/**
* Checks whether this UserSet contains a User.
*
* @param user A User.
* @return True if this UserSet contains the User,
* false otherwise.
*/
public boolean contains(User user)
{
return nameMap.containsValue((Object) user);
}
/**
* Returns a User with the given name, if it is contained in
* this UserSet.
*
* @param userName Name of User.
* @return User if argument matched a User in this
* UserSet; null if no match.
*/
public User getUserByName(String userName)
{
userName=userName.toLowerCase();
return (StringUtils.isNotEmpty(userName))
? (User) nameMap.get(userName) : null;
}
/**
* Returns a User with the given id, if it is contained in this
* UserSet.
*
* @param userId id of the User.
* @return User if argument matched a User in this UserSet; null
* if no match.
*/
public User getUserById(long userId)
{
return (userId != 0)
? (User) idMap.get(new Long(userId)) : null;
}
/**
* Returns an Array of Users in this UserSet.
*
* @return An Array of User objects.
*/
public User[] getUsersArray()
{
return (User[]) getSet().toArray(new User[0]);
}
/**
* Print out a UserSet as a String
*
* @returns The User Set as String
*
*/
public String toString()
{
StringBuffer sb = new StringBuffer();
sb.append("UserSet: ");
for(Iterator it = iterator(); it.hasNext();)
{
User r = (User) it.next();
sb.append('[');
sb.append(r.getName());
sb.append(" -> ");
sb.append(r.getId());
sb.append(']');
if (it.hasNext())
{
sb.append(", ");
}
}
return sb.toString();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]