package org.dcache.acl.unix;
/**
* ACE tags bit mask.
*
* @author David Melkumyan, DESY Zeuthen
*/
public enum AceTag {
/**
* undefined tag
*/
UNDEFINED_TAG(0x00000000, ""),
/**
* default tag
*/
DEFAULT(0x00001000, "default"),
/**
* object owner
*/
USER_OBJ(0x00000001, "user"),
/**
* owning group of the object
*/
GROUP_OBJ(0x00000004, "group"),
/**
* other entry for the object
*/
OTHER_OBJ(0x00000020, "other");
private static final String SEPARATOR = ":";
private final int _value;
private final String _abbreviation;
AceTag(int value, String abbreviation) {
_value = value;
_abbreviation = abbreviation;
}
public int getValue() {
return _value;
}
public String getAbbreviation() {
return _abbreviation;
}
public boolean equals(int value) {
return _value == value;
}
public boolean matches(int tags) {
return (_value & tags) == _value;
}
/**
* @param tags
* ACE Unix tags bit mask
* @return Return string representaion of tags bit mask
*/
public static String toString(int tags) throws IllegalArgumentException {
StringBuilder sb = new StringBuilder();
for (AceTag tag : AceTag.values()) {
if (tag.matches(tags)) {
if (sb.length() != 0) {
sb.append(SEPARATOR);
}
sb.append(tag.getAbbreviation());
}
}
return sb.toString();
}
}