
com.mindoo.domino.jna.constants.AclFlag Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of domino-jna Show documentation
Show all versions of domino-jna Show documentation
Java project to access the HCL Domino C API using Java Native Access (JNA)
package com.mindoo.domino.jna.constants;
import java.util.EnumSet;
import java.util.Set;
import com.mindoo.domino.jna.internal.NotesConstants;
/**
*
* These symbols represent access level modifier flags in access control lists.
*
* Each access level taken by itself implies a certain set of immutable capabilities.
* Each access level has a different set of access modifier bits that are relevant for that level.
*
* All of the other bits that are returned in the Access Flag parameter of C API functions are
* irrelevant and are unpredictable.
*
*
* The table depicts which Access Level Modifier Flags ({@link AclFlag}) are applicable to the Access Levels ({@link AclLevel})
*
* {@link AclLevel} {@link AclFlag} Applicable to {@link AclLevel}
*
*
* {@link AclLevel#MANAGER} {@link #NODELETE}
{@link #PERSON}
{@link #GROUP}
{@link #SERVER}
*
*
* {@link AclLevel#DESIGNER} {@link #NODELETE}
{@link #CREATE_LOTUSSCRIPT}
{@link #PERSON}
{@link #GROUP}
{@link #SERVER}
*
*
* {@link AclLevel#EDITOR} {@link #NODELETE}
{@link #CREATE_PRAGENT}
{@link #CREATE_PRFOLDER}
{@link #CREATE_FOLDER}
{@link #CREATE_LOTUSSCRIPT}
{@link #PERSON}
{@link #GROUP}
{@link #SERVER}
*
*
* {@link AclLevel#AUTHOR} {@link #AUTHOR_NOCREATE}
{@link #NODELETE}
{@link #CREATE_PRAGENT}
{@link #CREATE_PRFOLDER}
{@link #CREATE_LOTUSSCRIPT}
{@link #PUBLICWRITER}
{@link #PERSON}
{@link #GROUP}
{@link #SERVER}
*
*
* {@link AclLevel#READER} {@link #CREATE_PRAGENT}
{@link #CREATE_PRFOLDER}
{@link #CREATE_LOTUSSCRIPT}
{@link #PUBLICWRITER}
{@link #PERSON}
{@link #GROUP}
{@link #SERVER}
*
*
* {@link AclLevel#DEPOSITOR} {@link #PUBLICREADER}
{@link #PUBLICWRITER}
{@link #PERSON}
{@link #GROUP}
{@link #SERVER}
*
*
* {@link AclLevel#NOACCESS} {@link #PUBLICREADER}
{@link #PUBLICWRITER}
{@link #PERSON}
{@link #GROUP}
{@link #SERVER}
*
*
* @author Karsten Lehmann
*/
public enum AclFlag {
/** Authors can't create new notes (only edit existing ones) */
AUTHOR_NOCREATE(NotesConstants.ACL_FLAG_AUTHOR_NOCREATE),
/** Entry represents a Server (V4) */
SERVER(NotesConstants.ACL_FLAG_SERVER),
/** User cannot delete notes */
NODELETE(NotesConstants.ACL_FLAG_NODELETE),
/** User can create personal agents (V4) */
CREATE_PRAGENT(NotesConstants.ACL_FLAG_CREATE_PRAGENT),
/** User can create personal folders (V4) */
CREATE_PRFOLDER(NotesConstants.ACL_FLAG_CREATE_PRFOLDER),
/** Entry represents a Person (V4) */
PERSON(NotesConstants.ACL_FLAG_PERSON),
/** Entry represents a group (V4) */
GROUP(NotesConstants.ACL_FLAG_GROUP),
/** User can create and update shared views & folders (V4)
This allows an Editor to assume some Designer-level access */
CREATE_FOLDER(NotesConstants.ACL_FLAG_CREATE_FOLDER),
/** User can create LotusScript */
CREATE_LOTUSSCRIPT(NotesConstants.ACL_FLAG_CREATE_LOTUSSCRIPT),
/** User can read public notes */
PUBLICREADER(NotesConstants.ACL_FLAG_PUBLICREADER),
/** User can write public notes */
PUBLICWRITER(NotesConstants.ACL_FLAG_PUBLICWRITER),
/** User CANNOT register monitors for this database */
MONITORS_DISALLOWED(NotesConstants.ACL_FLAG_MONITORS_DISALLOWED),
/** User cannot replicate or copy this database */
NOREPLICATE(NotesConstants.ACL_FLAG_NOREPLICATE),
/** Admin server can modify reader and author fields in db */
ADMIN_READERAUTHOR(NotesConstants.ACL_FLAG_ADMIN_READERAUTHOR),
/** Entry is administration server (V4) */
ADMIN_SERVER(NotesConstants.ACL_FLAG_ADMIN_SERVER);
private int m_val;
AclFlag(int val) {
m_val = val;
}
public int getValue() {
return m_val;
}
public static short toBitMask(EnumSet findSet) {
int result = 0;
if (findSet!=null) {
for (AclFlag currFind : values()) {
if (findSet.contains(currFind)) {
result = result | currFind.getValue();
}
}
}
return (short) (result & 0xffff);
}
public static int toBitMaskInt(EnumSet findSet) {
int result = 0;
if (findSet!=null) {
for (AclFlag currFind : values()) {
if (findSet.contains(currFind)) {
result = result | currFind.getValue();
}
}
}
return result;
}
public static Set valuesOf(int accessFlagBitMask) {
EnumSet retFlags = EnumSet.noneOf(AclFlag.class);
for (AclFlag currFlag : AclFlag.values()) {
if ((accessFlagBitMask & currFlag.getValue()) == currFlag.getValue()) {
retFlags.add(currFlag);
}
}
return retFlags;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy