/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.xmlworkflow;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.Group;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
/**
* The members from a role, can either
* contains a list of epersons or groups
*
* @author Bram De Schouwer (bram.deschouwer at dot com)
* @author Kevin Van de Velde (kevin at atmire dot com)
* @author Ben Bosman (ben at atmire dot com)
* @author Mark Diggory (markd at atmire dot com)
*/
public class RoleMembers {
private ArrayList<Group> groups;
private ArrayList<EPerson> epersons;
public RoleMembers(){
this.groups = new ArrayList<Group>();
this.epersons = new ArrayList<EPerson>();
}
public ArrayList<Group> getGroups(){
return groups;
}
public ArrayList<EPerson> getEPersons(){
return epersons;
}
public void addGroup(Group group){
groups.add(group);
}
public void addEPerson(EPerson eperson){
epersons.add(eperson);
}
public void removeEperson(int toRemoveID){
for(EPerson eperson: epersons){
if(eperson.getID()==toRemoveID)
epersons.remove(eperson);
}
}
public ArrayList<EPerson> getAllUniqueMembers(Context context) throws SQLException {
HashMap<Integer, EPerson> epersonsMap = new HashMap<Integer, EPerson>();
for(EPerson eperson: epersons){
epersonsMap.put(eperson.getID(), eperson);
}
for(Group group: groups){
for(EPerson eperson: Group.allMembers(context, group)){
epersonsMap.put(eperson.getID(), eperson);
}
}
return new ArrayList<EPerson>(epersonsMap.values());
}
}