package org.dcache.acl.unix; /** * Unix Access Mask. * * @author David Melkumyan, DESY Zeuthen * */ public enum AMUnix { /** * Permission to read. */ READ(0x00000004, 'r'), /** * Permission to write. */ WRITE(0x00000002, 'w'), /** * Permission to execute. */ EXECUTE(0x00000001, 'x'); // /** // * // */ // ADD (0x00000008, 'a'), // /** // * // */ // DELETE (0x00000010, 'd'); private final int _value; private final char _abbreviation; AMUnix(int value, char abbreviation) { _value = value; _abbreviation = abbreviation; } public int getValue() { return _value; } public char getAbbreviation() { return _abbreviation; } public boolean matches(int accessMask) { return (_value & accessMask) == _value; } /** * @param accessMask * ACE access bit mask * @return Return string representaion of access bit mask */ public static String toUnixString(int accessMask) { if ( accessMask == 0 ) { return "---"; } StringBuilder sb = new StringBuilder(); for (AMUnix accessMsk : AMUnix.values()) { if (accessMsk.matches(accessMask)) { sb.append(accessMsk.getAbbreviation()); } } return sb.toString(); } /** * @param accessMask * ACE access bit mask * @return Return string representaion of access bit mask */ public static String toString(int accessMask) { StringBuilder sb = new StringBuilder(); if ( accessMask != 0 ) { for (AMUnix accessMsk : AMUnix.values()) { if (accessMsk.matches(accessMask)) { sb.append(accessMsk.getAbbreviation()); } else { sb.append("-"); } } } else { sb.append("---"); } return sb.toString(); } }