You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
2.7 KiB
128 lines
2.7 KiB
package de.memtext.rights; |
|
|
|
import java.io.Serializable; |
|
import java.util.Collection; |
|
import java.util.Iterator; |
|
import java.util.TreeSet; |
|
|
|
import de.memtext.util.EqualsUtil; |
|
|
|
/** |
|
* A class for managing rights. In particular c |
|
*/ |
|
public class Rights implements Serializable { |
|
|
|
private static final long serialVersionUID = 1; |
|
private boolean isAdmin = false; |
|
private boolean hasAllRights; |
|
private Collection keyColl = new TreeSet(); |
|
|
|
public Rights() { |
|
|
|
} |
|
|
|
public Rights(boolean isAdmin, boolean hasAllRights) { |
|
setAdmin(isAdmin); |
|
setHasAllRights(hasAllRights); |
|
} |
|
|
|
public boolean isAdmin() { |
|
return isAdmin; |
|
} |
|
|
|
public void setAdmin(boolean isAdmin) { |
|
this.isAdmin = isAdmin; |
|
} |
|
|
|
public void addAllowed(RightsKeyEntry rke) { |
|
keyColl.add(rke); |
|
} |
|
|
|
public void clear() { |
|
keyColl.clear(); |
|
} |
|
|
|
public boolean isEmpty() { |
|
return keyColl.isEmpty(); |
|
} |
|
|
|
public boolean hasNoRights() { |
|
return !isAdmin && !hasAllRights && isEmpty(); |
|
} |
|
|
|
public Iterator iterator() { |
|
return keyColl.iterator(); |
|
} |
|
|
|
/** |
|
* @return |
|
*/ |
|
public boolean hasAllRights() { |
|
return hasAllRights; |
|
} |
|
|
|
/** |
|
* @param b |
|
*/ |
|
public void setHasAllRights(boolean b) { |
|
hasAllRights = b; |
|
} |
|
|
|
/** |
|
* @param dn |
|
* @return |
|
*/ |
|
public boolean isAllowed(Object id) { |
|
boolean result = false; |
|
if (isAdmin || hasAllRights()) { |
|
result = true; |
|
} else { |
|
for (Iterator it = keyColl.iterator(); it.hasNext();) { |
|
RightsKeyEntry entry = (RightsKeyEntry) it.next(); |
|
if (EqualsUtil.areEqual(entry.getKey(), id)) { |
|
result = true; |
|
break; |
|
} |
|
} |
|
} |
|
return result; |
|
|
|
} |
|
|
|
public boolean isSubordinatesAllowed(Object key) { |
|
boolean result = false; |
|
if (isAdmin || hasAllRights()) { |
|
result = true; |
|
} else { |
|
for (Iterator it = keyColl.iterator(); it.hasNext();) { |
|
RightsKeyEntry entry = (RightsKeyEntry) it.next(); |
|
if (EqualsUtil.areEqual(entry.getKey(), key)) { |
|
result = entry.isSubordinatesAllowed(); |
|
break; |
|
} |
|
} |
|
} |
|
return result; |
|
} |
|
|
|
public Object clone() throws CloneNotSupportedException { |
|
Rights cl = new Rights(isAdmin, hasAllRights); |
|
for (Iterator it = keyColl.iterator(); it.hasNext();) { |
|
RightsKeyEntry key = (RightsKeyEntry) it.next(); |
|
cl.keyColl.add(key.clone()); |
|
} |
|
return cl; |
|
} |
|
|
|
public String toString() { |
|
StringBuffer result = new StringBuffer("Rechte: "); |
|
for (Iterator it = keyColl.iterator(); it.hasNext();) { |
|
RightsKeyEntry entry = (RightsKeyEntry) it.next(); |
|
result.append(entry.toString() + ","); |
|
} |
|
de.memtext.util.StringUtils.removeLastChar(result); |
|
return result.toString(); |
|
} |
|
} |
|
|
|
// Created on 07.09.2004 at 11:10:06
|
|
|