package edu.harvard.iq.dataverse.authorization.groups.impl.builtin;
import edu.harvard.iq.dataverse.DvObject;
import edu.harvard.iq.dataverse.authorization.RoleAssignee;
import edu.harvard.iq.dataverse.authorization.groups.Group;
import edu.harvard.iq.dataverse.authorization.groups.GroupProvider;
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
import edu.harvard.iq.dataverse.authorization.users.User;
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
import java.util.Collections;
import java.util.Set;
import org.hibernate.validator.internal.util.CollectionHelper;
/**
* Provider for the built-in, hard coded groups. This class is a singleton (no
* point in having more than one) so please use {@link #get()} to obtain the
* instance.
*
* @author michael
*/
public class BuiltInGroupsProvider implements GroupProvider<Group> {
private static final BuiltInGroupsProvider instance = new BuiltInGroupsProvider();
private BuiltInGroupsProvider(){}
public static BuiltInGroupsProvider get() {
return instance;
}
@Override
public String getGroupProviderAlias() {
return "builtIn";
}
@Override
public String getGroupProviderInfo() {
return "Holder for groups built into dataverse.";
}
@Override
public Set<Group> groupsFor(DataverseRequest req, DvObject dvo ) {
return groupsFor(req.getUser(), dvo );
}
@Override
public Set<Group> groupsFor( RoleAssignee ra, DvObject dvo ) {
if ( ra instanceof User) {
return (Set<Group>) ((ra instanceof AuthenticatedUser)
? CollectionHelper.asSet(AllUsers.get(), AuthenticatedUsers.get())
: Collections.singleton(AllUsers.get()));
} else {
return Collections.emptySet();
}
}
@Override
public Group get(String groupAlias) {
return groupAlias.equals(AllUsers.get().getAlias()) ? AllUsers.get()
: ( groupAlias.equals(AuthenticatedUsers.get().getAlias()) ? AuthenticatedUsers.get() : null );
}
@Override
public Set<Group> findGlobalGroups() {
return CollectionHelper.asSet(AllUsers.get(), AuthenticatedUsers.get());
}
}