view src/main/java/edu/harvard/iq/dataverse/authorization/RoleAssignmentSet.java @ 13:d3374217e19e

url config for LGMap
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Wed, 30 Sep 2015 13:55:57 +0200
parents a50cf11e5178
children
line wrap: on
line source

package edu.harvard.iq.dataverse.authorization;

import edu.harvard.iq.dataverse.RoleAssignment;
import edu.harvard.iq.dataverse.util.BitSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * A set of assignment for a given {@link RoleAssignee} user has. 
 * 
 * LATER: we could probably refactor this class out.
 * @author michael
 */
public class RoleAssignmentSet implements Iterable<RoleAssignment> {
	
	private final RoleAssignee roas;
	private final Set<RoleAssignment> assignments = new HashSet<>();
	
	public RoleAssignmentSet( RoleAssignee aRoleAssignee) {
		roas = aRoleAssignee;
	}
	
	public void add( Iterable<RoleAssignment> ras ) {
		for ( RoleAssignment ra : ras ) {
			assignments.add(ra);
		}
	}
	
	public void add( RoleAssignment ra ) {
		assignments.add( ra );
	}
	
	public Set<Permission> getPermissions() {
		BitSet acc = new BitSet();
		for ( RoleAssignment ra : assignments ) {
			acc.union( new BitSet(ra.getRole().getPermissionsBits()) );
		}
		return acc.asSetOf( Permission.class );
	}

    public RoleAssignee getRoleAssignee() {
        return roas;
    }

	public Set<RoleAssignment> getAssignments() {
		return assignments;
	}

	@Override
	public Iterator<RoleAssignment> iterator() {
		return assignments.iterator();
	}
	
	public boolean isEmpty() {
		return assignments.isEmpty();
	}
}