package org.dcache.acl.enums; /** * Mandatory Attributes. * based: Network File System (NFS) version 4 Protocol, RFC3530 * * @author David Melkumyan, DESY Zeuthen */ public enum FileAttribute { /** * Mandatory Attributes */ FATTR4_SUPPORTED_ATTRS (0), FATTR4_TYPE (1), FATTR4_FH_EXPIRE_TYPE (2), FATTR4_CHANGE (3), FATTR4_SIZE (4), FATTR4_LINK_SUPPORT (5), FATTR4_SYMLINK_SUPPORT (6), FATTR4_NAMED_ATTR (7), FATTR4_FSID (8), FATTR4_UNIQUE_HANDLES (9), FATTR4_LEASE_TIME (10), FATTR4_RDATTR_ERROR (11), FATTR4_FILEHANDLE (19), /** * Recommended Attributes */ FATTR4_ACL (12), FATTR4_ACLSUPPORT (13), FATTR4_ARCHIVE (14), FATTR4_CANSETTIME (15), FATTR4_CASE_INSENSITIVE (16), FATTR4_CASE_PRESERVING (17), FATTR4_CHOWN_RESTRICTED (18), FATTR4_FILEID (20), FATTR4_FILES_AVAIL (21), FATTR4_FILES_FREE (22), FATTR4_FILES_TOTAL (23), FATTR4_FS_LOCATIONS (24), FATTR4_HIDDEN (25), FATTR4_HOMOGENEOUS (26), FATTR4_MAXFILESIZE (27), FATTR4_MAXLINK (28), FATTR4_MAXNAME (29), FATTR4_MAXREAD (30), FATTR4_MAXWRITE (31), FATTR4_MIMETYPE (32), FATTR4_MODE (33), FATTR4_NO_TRUNC (34), FATTR4_NUMLINKS (35), FATTR4_OWNER (36), FATTR4_OWNER_GROUP (37), FATTR4_QUOTA_AVAIL_HARD (38), FATTR4_QUOTA_AVAIL_SOFT (39), FATTR4_QUOTA_USED (40), FATTR4_RAWDEV (41), FATTR4_SPACE_AVAIL (42), FATTR4_SPACE_FREE (43), FATTR4_SPACE_TOTAL (44), FATTR4_SPACE_USED (45), FATTR4_SYSTEM (46), FATTR4_TIME_ACCESS (47), FATTR4_TIME_ACCESS_SET (48), FATTR4_TIME_BACKUP (49), FATTR4_TIME_CREATE (50), FATTR4_TIME_DELTA (51), FATTR4_TIME_METADATA (52), FATTR4_TIME_MODIFY (53), FATTR4_TIME_MODIFY_SET (54), FATTR4_MOUNTED_ON_FILEID (55), FATTR4_DIR_NOTIF_DELAY (56), FATTR4_DIRENT_NOTIF_DELAY (57), FATTR4_DACL (58), FATTR4_SACL (59), FATTR4_CHANGE_POLICY (60), FATTR4_FS_STATUS (61), FATTR4_FS_LAYOUT_TYPE (62), FATTR4_LAYOUT_HINT (63), FATTR4_LAYOUT_TYPE (64), FATTR4_LAYOUT_BLKSIZE (65), FATTR4_LAYOUT_ALIGNMENT (66), FATTR4_FS_LOCATIONS_INFO (67), FATTR4_MDSTHRESHOLD (68), FATTR4_RETENTION_GET (69), FATTR4_RETENTION_SET (70), FATTR4_RETENTEVT_GET (71), FATTR4_RETENTEVT_SET (72), FATTR4_RETENTION_HOLD (73), FATTR4_MODE_SET_MASKED (74), FATTR4_SUPPATTR_EXCLCREAT (75), FATTR4_FS_CHARSET_CAP (76); private final int _value; FileAttribute(int value) { _value = value; } public int getValue() { return _value; } public boolean equals(int value) { return _value == value; } public boolean matches(int flags) { return (_value & flags) == _value; } /** * @param attribute * @return FileAttribute */ public static FileAttribute valueOf(int attribute) throws IllegalArgumentException { for (FileAttribute attr : FileAttribute.values()) { if (attr._value == attribute) { return attr; } } throw new IllegalArgumentException("Illegal argument (value of file attribute): " + attribute); } /** * @param attributes * Attributes bit mask * @return Return string representation of attributes bit mask */ public static String asString(int attributes) { StringBuilder sb = new StringBuilder(); for (FileAttribute attr : FileAttribute.values()) { if ( attr.matches(attributes) ) { if ( sb.length() != 0 ) { sb.append(" | "); } sb.append(attr); } } return sb.toString(); } }