blob: e4e3079f8f18487ffc47c86851c532d8d2f387fa [file] [log] [blame]
/*
* Copyright (c) 2012 Eike Stepper (Berlin, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.security;
import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import java.util.Iterator;
/**
* Various static helper methods for dealing with {@link Realm realms}.
*
* @author Eike Stepper
*/
public final class RealmUtil
{
private RealmUtil()
{
}
public static User findUser(EList<SecurityItem> items, String userID)
{
for (SecurityItem item : items)
{
if (item instanceof User)
{
User user = (User)item;
if (ObjectUtil.equals(user.getId(), userID))
{
return user;
}
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
User user = findUser(directory.getItems(), userID);
if (user != null)
{
return user;
}
}
}
return null;
}
public static Group findGroup(EList<SecurityItem> items, String groupID)
{
for (SecurityItem item : items)
{
if (item instanceof Group)
{
Group group = (Group)item;
if (ObjectUtil.equals(group.getId(), groupID))
{
return group;
}
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
Group group = findGroup(directory.getItems(), groupID);
if (group != null)
{
return group;
}
}
}
return null;
}
public static Role findRole(EList<SecurityItem> items, String roleID)
{
for (SecurityItem item : items)
{
if (item instanceof Role)
{
Role role = (Role)item;
if (ObjectUtil.equals(role.getId(), roleID))
{
return role;
}
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
Role role = findRole(directory.getItems(), roleID);
if (role != null)
{
return role;
}
}
}
return null;
}
/**
* @since 4.2
*/
public static User removeUser(EList<SecurityItem> items, String userID)
{
for (Iterator<SecurityItem> it = items.iterator(); it.hasNext();)
{
SecurityItem item = it.next();
if (item instanceof User)
{
User user = (User)item;
if (ObjectUtil.equals(user.getId(), userID))
{
it.remove();
return user;
}
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
User user = removeUser(directory.getItems(), userID);
if (user != null)
{
return user;
}
}
}
return null;
}
/**
* @since 4.2
*/
public static Group removeGroup(EList<SecurityItem> items, String groupID)
{
for (Iterator<SecurityItem> it = items.iterator(); it.hasNext();)
{
SecurityItem item = it.next();
if (item instanceof Group)
{
Group group = (Group)item;
if (ObjectUtil.equals(group.getId(), groupID))
{
it.remove();
return group;
}
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
Group group = removeGroup(directory.getItems(), groupID);
if (group != null)
{
return group;
}
}
}
return null;
}
/**
* @since 4.2
*/
public static Role removeRole(EList<SecurityItem> items, String roleID)
{
for (Iterator<SecurityItem> it = items.iterator(); it.hasNext();)
{
SecurityItem item = it.next();
if (item instanceof Role)
{
Role role = (Role)item;
if (ObjectUtil.equals(role.getId(), roleID))
{
it.remove();
return role;
}
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
Role role = removeRole(directory.getItems(), roleID);
if (role != null)
{
return role;
}
}
}
return null;
}
public static BasicEList<User> allUsers(EList<SecurityItem> items)
{
BasicEList<User> result = new BasicEList<User>();
allUsers(items, result);
return result;
}
public static BasicEList<Group> allGroups(EList<SecurityItem> items)
{
BasicEList<Group> result = new BasicEList<Group>();
allGroups(items, result);
return result;
}
public static BasicEList<Role> allRoles(EList<SecurityItem> items)
{
BasicEList<Role> result = new BasicEList<Role>();
allRoles(items, result);
return result;
}
public static BasicEList<Permission> allPermissions(EList<SecurityItem> items)
{
BasicEList<Permission> result = new BasicEList<Permission>();
allPermissions(items, result);
return result;
}
private static void allUsers(EList<SecurityItem> items, EList<User> result)
{
for (SecurityItem item : items)
{
if (item instanceof User)
{
User user = (User)item;
result.add(user);
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
allUsers(directory.getItems(), result);
}
}
}
private static void allGroups(EList<SecurityItem> items, EList<Group> result)
{
for (SecurityItem item : items)
{
if (item instanceof Group)
{
Group group = (Group)item;
result.add(group);
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
allGroups(directory.getItems(), result);
}
}
}
private static void allRoles(EList<SecurityItem> items, EList<Role> result)
{
for (SecurityItem item : items)
{
if (item instanceof Role)
{
Role role = (Role)item;
result.add(role);
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
allRoles(directory.getItems(), result);
}
}
}
private static void allPermissions(EList<SecurityItem> items, EList<Permission> result)
{
for (SecurityItem item : items)
{
if (item instanceof Role)
{
Role role = (Role)item;
result.addAll(role.getPermissions());
}
else if (item instanceof Directory)
{
Directory directory = (Directory)item;
allPermissions(directory.getItems(), result);
}
}
}
}