Package com.sas.metadata.remote

# Interface AccessControlEntry

All Superinterfaces:
  `AccessControl`, `CMetadata`, `MdObjectBase`, `MdObjectBaseUtil`, `MdObjectBaseXML`, `PrimaryType`, `Remote`, `Root`

public interface AccessControlEntry extends AccessControl
The AccessControlEntry metadata type is used to define an access control directly on a resource. The access control is stored with the resource definition and is unique to that resource. That is, the AccessControlEntry (ACE) cannot be applied to another metadata object.

An ACE can specify permissions for both individual users and for groups. If a given identity is referenced more than once in the ACE, for example, both directly and by virtue of membership in one or more groups, the permission assigned directly to the identity will take precedence.

When the SAS Open Metadata Architecture authorization facility evaluates access controls, a permission assigned in an ACE will take precedence over a permission assigned in an AccessConrolTemplate (ACT). A resource-specific access control also takes precedence over any inherited access controls and permissions assigned in the Repository ACT.

An ACE should not be explicitly created or deleted. Access controls are managed programmatically using the SAS Open Metadata Interface ISecurityAdmin server interface, which is documented in the SAS 9.2 Open Metadata Interface: Reference and Usage. ISecurityAdmin provides methods for defining and managing direct access controls as well as access control templates.

Attributes of AccessControlEntry are:

Associations of AccessControlEntry are:

- `AssociatedCondition`
- `Identities`
- `Permissions`

## Usage

To create an instance of this AccessControlEntry, use the `factory` create methods.
Example: create a AccessControlEntry with name "AccessControlEntry_Object", in repository "AAAAAAAA".

     // create a store to contain your objects for this change. If you do not have an existing object
     // or store to use.  You may obtain the store from another object by using Object.getObjectStore().
     MdFactory factory; //where "factory" is a valid MdFactory instance
     MdObjectStore objectStore = factory.createObjectStore();
     AccessControlEntry myObject = (AccessControlEntry) factory.createComplexMetadataObject(objectStore, "AccessControlEntry_Object", MetadataObjects.ACCESSCONTROLENTRY, "AAAAAAAA");
     myObject.updateMetadataAll();  // Write object to server
     objectStore.dispose();  // dispose of the object store if it is no longer needed

## Behavior

- Attributes and associations for this object can be retrieved by using the methods in `MdOMIUtil`.
- When changes are made to the object, either by setting an attribute or adding objects to a particular association, they can be persisted to the metadata server with the `updateMetadataAll` method.
- If an object needs to be deleted, the `delete` method can be used. This will flag the object as being deleted on the client, and will require an update call to persist the change to the server.

## Dependencies

This class depends on objects being contained in an MdObjectStore. Object stores should be disposed of when they are no longer needed as this will help clean up memory. Disposing an object store will dispose of all objects contained within that store.

Since:
  9.0

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `ASSOCIATION_ASSOCIATEDCONDITION_NAME`
  Constant used for the name of the AssociatedCondition association.
  `static final String`
  `ASSOCIATION_IDENTITIES_NAME`
  Constant used for the name of the Identities association.
  `static final String`
  `ASSOCIATION_PERMISSIONS_NAME`
  Constant used for the name of the Permissions association.

  ### Fields inherited from interface com.sas.metadata.remote.AccessControl

  `ASSOCIATION_ACCESSCONTROLTEMPLATES_NAME, ASSOCIATION_OBJECTS_NAME`

  ### Fields inherited from interface com.sas.metadata.remote.MdObjectBase

  `ATTRIBUTE_DESC_NAME, ATTRIBUTE_ID_NAME, ATTRIBUTE_METADATACREATED_NAME, ATTRIBUTE_METADATAUPDATED_NAME, ATTRIBUTE_NAME_NAME`

  ### Fields inherited from interface com.sas.metadata.remote.PrimaryType

  `ASSOCIATION_FAVORITESCONTAINERS_NAME, ATTRIBUTE_ISHIDDEN_NAME, ATTRIBUTE_PUBLICTYPE_NAME`

  ### Fields inherited from interface com.sas.metadata.remote.Root

  `ASSOCIATION_ACCESSCONTROLS_NAME, ASSOCIATION_CHANGES_NAME, ASSOCIATION_CUSTOMASSOCIATIONS_NAME, ASSOCIATION_DOCUMENTS_NAME, ASSOCIATION_EXTENSIONS_NAME, ASSOCIATION_EXTERNALIDENTITIES_NAME, ASSOCIATION_GROUPS_NAME, ASSOCIATION_IMPLEMENTORS_NAME, ASSOCIATION_KEYWORDS_NAME, ASSOCIATION_LOCALIZEDATTRIBUTES_NAME, ASSOCIATION_NOTES_NAME, ASSOCIATION_PRIMARYPROPERTYGROUP_NAME, ASSOCIATION_PROMPTS_NAME, ASSOCIATION_PROPERTIES_NAME, ASSOCIATION_PROPERTYSETS_NAME, ASSOCIATION_REFERENCEDOBJECTS_NAME, ASSOCIATION_RESPONSIBLEPARTIES_NAME, ASSOCIATION_SOURCETRANSFORMATIONS_NAME, ASSOCIATION_SPECSOURCETRANSFORMATIONS_NAME, ASSOCIATION_SPECTARGETTRANSFORMATIONS_NAME, ASSOCIATION_TARGETTRANSFORMATIONS_NAME, ASSOCIATION_TIMESTAMPS_NAME, ASSOCIATION_TREES_NAME, ASSOCIATION_TSOBJECTNAMESPACE_NAME, ASSOCIATION_USEDBYPROTOTYPES_NAME, ASSOCIATION_USINGPROTOTYPE_NAME, ASSOCIATION_VARIABLES_NAME, ATTRIBUTE_CHANGESTATE_NAME, ATTRIBUTE_LOCKEDBY_NAME, ATTRIBUTE_USAGEVERSION_NAME`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `PermissionCondition`
  `getAssociatedCondition()`
  Gets the `PermissionCondition` for `AssociatedCondition`
  `AssociationList`
  `getAssociatedConditions()`
  Gets the Association list of `AssociatedConditions`
  `AssociationList`
  `getAssociatedConditions(boolean fGoToServer)`
  Gets the Associationlist of `AssociatedConditions`
  `AssociationList`
  `getIdentities()`
  Gets the Association list of `Identities`
  `AssociationList`
  `getIdentities(boolean fGoToServer)`
  Gets the Associationlist of `Identities`
  `AssociationList`
  `getPermissions()`
  Gets the Association list of `Permissions`
  `AssociationList`
  `getPermissions(boolean fGoToServer)`
  Gets the Associationlist of `Permissions`
  `void`
  `initializePredObjects()`
  (S) Adds the Associated objects to the predObjects which are:
  `void`
  `initializeRequiredObjects()`
  (S) This initializes the Required Objects(Roles) which are:
  `void`
  `setAssociatedCondition(PermissionCondition inObject)`
  Sets the `AssociatedConditions` list 0th element to be `inObject`.
  `void`
  `setAssociatedConditions(AssociationList list)`
  Sets the `AssociatedConditions` list to be `list`.
  `void`
  `setAssociatedConditions(AssociationList list, int state)`
  Sets the `AssociatedConditions` list to be `list`.
  `void`
  `setIdentities(AssociationList list)`
  Sets the `Identities` list to be `list`.
  `void`
  `setIdentities(AssociationList inObjects, int state)`
  Sets the entire Identities list to match the passed in AssociationList, sets the state of the Identities
  `void`
  `setPermissions(AssociationList list)`
  Sets the `Permissions` list to be `list`.
  `void`
  `setPermissions(AssociationList inObjects, int state)`
  Sets the entire Permissions list to match the passed in AssociationList, sets the state of the Permissions

  ### Methods inherited from interface com.sas.metadata.remote.AccessControl

  `getAccessControlTemplates, getAccessControlTemplates, getObjects, getObjects, setAccessControlTemplates, setAccessControlTemplates, setObjects, setObjects`

  ### Methods inherited from interface com.sas.metadata.remote.MdObjectBase

  `addElementToChangeList, clearChangeList, getChangeList, getCMetadataType, getDesc, getDescMaxLength, getDescState, getFQID, getId, getIdState, getMetadataCreated, getMetadataCreatedState, getMetadataUpdated, getMetadataUpdatedState, getName, getNameMaxLength, getNameState, getObjectStore, getPredAssociations, getRepositoryID, getRequiredAssociations, getState, isAssociationRequired, isNewObject, isPredAssociation, removeElementFromChangeList, resetObject, resetState, resetStates, setCMetadataType, setDesc, setDesc, setDescState, setFQID, setFQID, setId, setId, setIdState, setMetadataCreated, setMetadataCreated, setMetadataCreatedState, setMetadataUpdated, setMetadataUpdated, setMetadataUpdatedState, setName, setName, setNameState, setObjectStore, setState`

  ### Methods inherited from interface com.sas.metadata.remote.MdObjectBaseUtil

  `addMdObjectListener, delete, dispose, fireMdObjectModified, getAssociatedObjects, getAssociatedObjects, getAssociatedObjects, getAssociationNames, getAssocs, getAssocsWA, getAttributeNames, getAttrs, getAttrsStates, getAuthorizationUtil, getChangeManagementState, getChgMgtExternalIdentityImportType, getClientSideOnlyObject, getMdObjectAssociation, getPopulatedAssocs, getUpdatedAttrs, getViewList, isCheckedOut, isLocked, objectModified, removeMdObjectListener, setAttrs, setChangeManagementTargetRepository, setChgMgtExternalIdentityImportType, setClientSideOnlyObject, setMdObjectAssociation, touch, updateAssnsIds`

  ### Methods inherited from interface com.sas.metadata.remote.MdObjectBaseXML

  `closeUpdateMetadataXML, createEmptyXML, createObjectRefreshXML, createObjectXML, createObjectXML, createUpdateAssociationXML, createUpdateAssociationXML, createUpdateSimpleXML, doCreateUpdateXML, getUpdateSimpleSubstring, updateMetadataAll`

  ### Methods inherited from interface com.sas.metadata.remote.PrimaryType

  `getFavoritesContainers, getFavoritesContainers, getIsHidden, getIsHiddenState, getPublicType, getPublicTypeMaxLength, getPublicTypeState, setFavoritesContainers, setFavoritesContainers, setIsHidden, setIsHidden, setIsHidden, setIsHidden, setIsHiddenState, setPublicType, setPublicType, setPublicTypeState`

  ### Methods inherited from interface com.sas.metadata.remote.Root

  `getAccessControls, getAccessControls, getChanges, getChanges, getChangeState, getChangeStateMaxLength, getChangeStateState, getCustomAssociations, getCustomAssociations, getDocuments, getDocuments, getExtensions, getExtensions, getExternalIdentities, getExternalIdentities, getGroups, getGroups, getImplementors, getImplementors, getKeywords, getKeywords, getLocalizedAttributes, getLocalizedAttributes, getLockedBy, getLockedByMaxLength, getLockedByState, getNotes, getNotes, getPrimaryPropertyGroup, getPrimaryPropertyGroups, getPrimaryPropertyGroups, getPrompts, getPrompts, getProperties, getProperties, getPropertySets, getPropertySets, getReferencedObjects, getReferencedObjects, getResponsibleParties, getResponsibleParties, getSourceTransformations, getSourceTransformations, getSpecSourceTransformations, getSpecSourceTransformations, getSpecTargetTransformations, getSpecTargetTransformations, getTargetTransformations, getTargetTransformations, getTimestamps, getTimestamps, getTrees, getTrees, getTSObjectNamespace, getTSObjectNamespaces, getTSObjectNamespaces, getUsageVersion, getUsageVersionState, getUsedByPrototypes, getUsedByPrototypes, getUsingPrototype, getUsingPrototypes, getUsingPrototypes, getVariables, getVariables, setAccessControls, setAccessControls, setChanges, setChanges, setChangeState, setChangeState, setChangeStateState, setCustomAssociations, setCustomAssociations, setDocuments, setDocuments, setExtensions, setExtensions, setExternalIdentities, setExternalIdentities, setGroups, setGroups, setImplementors, setImplementors, setKeywords, setKeywords, setLocalizedAttributes, setLocalizedAttributes, setLockedBy, setLockedBy, setLockedByState, setNotes, setNotes, setPrimaryPropertyGroup, setPrimaryPropertyGroups, setPrimaryPropertyGroups, setPrompts, setPrompts, setProperties, setProperties, setPropertySets, setPropertySets, setReferencedObjects, setReferencedObjects, setResponsibleParties, setResponsibleParties, setSourceTransformations, setSourceTransformations, setSpecSourceTransformations, setSpecSourceTransformations, setSpecTargetTransformations, setSpecTargetTransformations, setTargetTransformations, setTargetTransformations, setTimestamps, setTimestamps, setTrees, setTrees, setTSObjectNamespace, setTSObjectNamespaces, setTSObjectNamespaces, setUsageVersion, setUsageVersion, setUsageVersion, setUsageVersion, setUsageVersionState, setUsedByPrototypes, setUsedByPrototypes, setUsingPrototype, setUsingPrototypes, setUsingPrototypes, setVariables, setVariables`

- ## Field Details

  - ### ASSOCIATION_ASSOCIATEDCONDITION_NAME

    static final String ASSOCIATION_ASSOCIATEDCONDITION_NAME
    Constant used for the name of the AssociatedCondition association.

    AssociatedCondition: The associated condition used to grant or deny access to a resource.

    See Also:
      - Constant Field Values

  - ### ASSOCIATION_IDENTITIES_NAME

    static final String ASSOCIATION_IDENTITIES_NAME
    Constant used for the name of the Identities association.

    Identities: The identities associated to this access control entry.

    See Also:
      - Constant Field Values

  - ### ASSOCIATION_PERMISSIONS_NAME

    static final String ASSOCIATION_PERMISSIONS_NAME
    Constant used for the name of the Permissions association.

    Permissions: The permissions that are granted or denied by this access control entry.

    See Also:
      - Constant Field Values

- ## Method Details

  - ### initializeRequiredObjects

    void initializeRequiredObjects() throws RemoteException
    (S) This initializes the Required Objects(Roles) which are:
    Specified by:
      `initializeRequiredObjects` in interface `AccessControl`
    Specified by:
      `initializeRequiredObjects` in interface `MdObjectBaseUtil`
    Specified by:
      `initializeRequiredObjects` in interface `PrimaryType`
    Specified by:
      `initializeRequiredObjects` in interface `Root`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### initializePredObjects

    void initializePredObjects() throws RemoteException
    (S) Adds the Associated objects to the predObjects which are:
    Specified by:
      `initializePredObjects` in interface `AccessControl`
    Specified by:
      `initializePredObjects` in interface `MdObjectBase`
    Specified by:
      `initializePredObjects` in interface `PrimaryType`
    Specified by:
      `initializePredObjects` in interface `Root`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getAssociatedConditions

    AssociationList getAssociatedConditions() throws RemoteException, MdException
    Gets the Association list of `AssociatedConditions`
    Returns:
      The AssociationList of `AssociatedConditions` which can be of type:
      PermissionCondition
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getAssociatedCondition

    PermissionCondition getAssociatedCondition() throws RemoteException, MdException
    Gets the `PermissionCondition` for `AssociatedCondition`
    Returns:
      The `PermissionCondition` ( `null` if not set ) of `AssociatedCondition` which can be of type:
      PermissionCondition
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getIdentities

    AssociationList getIdentities() throws RemoteException, MdException
    Gets the Association list of `Identities`
    Returns:
      The AssociationList of `Identities` which can be of type:
      Identity
      IdentityGroup
      Person
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getPermissions

    AssociationList getPermissions() throws RemoteException, MdException
    Gets the Association list of `Permissions`
    Returns:
      The AssociationList of `Permissions` which can be of type:
      Permission
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getAssociatedConditions

    AssociationList getAssociatedConditions(boolean fGoToServer) throws RemoteException, MdException
    Gets the Associationlist of `AssociatedConditions`
    Parameters:
      `fGoToServer` - boolean Get the value from the server.
    Returns:
      Returns the `AssociatedConditions` which can be of type:
      PermissionCondition
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getIdentities

    AssociationList getIdentities(boolean fGoToServer) throws RemoteException, MdException
    Gets the Associationlist of `Identities`
    Parameters:
      `fGoToServer` - boolean Get the value from the server.
    Returns:
      Returns the `Identities` which can be of type:
      Identity
      IdentityGroup
      Person
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### getPermissions

    AssociationList getPermissions(boolean fGoToServer) throws RemoteException, MdException
    Gets the Associationlist of `Permissions`
    Parameters:
      `fGoToServer` - boolean Get the value from the server.
    Returns:
      Returns the `Permissions` which can be of type:
      Permission
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException` - If error getting/setting part of the object.

  - ### setAssociatedConditions

    void setAssociatedConditions(AssociationList list) throws RemoteException
    Sets the `AssociatedConditions` list to be `list`. Objects of which can be of type:
    PermissionCondition
    Parameters:
      `list` - AssociationList
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setAssociatedConditions

    void setAssociatedConditions(AssociationList list, int state) throws RemoteException
    Sets the `AssociatedConditions` list to be `list`. Objects of which can be of type:
    PermissionCondition
    Parameters:
      `list` - AssociationList
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setAssociatedCondition

    void setAssociatedCondition(PermissionCondition inObject) throws RemoteException
    Sets the `AssociatedConditions` list 0th element to be `inObject`.
    Parameters:
      `inObject` - PermissionCondition
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setIdentities

    void setIdentities(AssociationList list) throws RemoteException
    Sets the `Identities` list to be `list`. Objects of which can be of type:
    Identity
    IdentityGroup
    Person
    Parameters:
      `list` - AssociationList
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setIdentities

    void setIdentities(AssociationList inObjects, int state) throws RemoteException
    Sets the entire Identities list to match the passed in AssociationList, sets the state of the Identities
    Parameters:
      `inObjects` - AssociationList
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setPermissions

    void setPermissions(AssociationList list) throws RemoteException
    Sets the `Permissions` list to be `list`. Objects of which can be of type:
    Permission
    Parameters:
      `list` - AssociationList
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setPermissions

    void setPermissions(AssociationList inObjects, int state) throws RemoteException
    Sets the entire Permissions list to match the passed in AssociationList, sets the state of the Permissions
    Parameters:
      `inObjects` - AssociationList
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.