Interface AbstractExtension

All Superinterfaces:
CMetadata, MdObjectBase, MdObjectBaseUtil, MdObjectBaseXML, Remote, Root, SecondaryType
All Known Subinterfaces:
Extension, NumericExtension

public interface AbstractExtension extends SecondaryType

The SAS Metadata Model supports extensions to enable end users and application developers to define additional attributes that are not part of an object's metadata type definition. Two types of extended attributes are supported:

  • end user-defined attributes

  • application-specific attributes

  • An example of a user-defined extended attribute is an attribute that is defined in the Extended Properties tab of a SASLibrary or Table object in SAS Management Console. Any attribute defined in this tab can be viewed and modified by any user who is authorized to view and modify the library or table resource. An example of an application-specific extended attribute is a SortType attribute on a Column. If the data in a column's source table is stored chronologically and an application has a need to access the data alphabetically, then the SortType attribute can specify how the application should rearrange or request the data from the data store.

    AbstractExtension is the supertype for describing end user-defined attributes. As a supertype, it defines attributes that are common to the Extension and NumericExtension metadata types and should not be instantiated. The SAS Metadata Model requires that you distinguish between character and numeric attributes when defining end-user attributes. Use the Extension metadata type to define attributes that store character values. Use the NumericExtension metadata type to define attributes that store numeric values.

    Extensions are provided for end-users to extend a metadata type and should be supported by all top-level objects in a UI.

    Application-specific attributes are defined by using the AbstractProperty and Property metadata types.

    Attributes of AbstractExtension are:

    Associations of AbstractExtension are:

    Usage

    To create an instance of this AbstractExtension, use the factory create methods.
    Example: create a AbstractExtension with name "AbstractExtension_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();
     AbstractExtension myObject = (AbstractExtension) factory.createComplexMetadataObject(objectStore, "AbstractExtension_Object", MetadataObjects.ABSTRACTEXTENSION, "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 Details

      • ATTRIBUTE_EXTENSIONTYPE_NAME

        static final String ATTRIBUTE_EXTENSIONTYPE_NAME
        Constant used for the name of the ExtensionType attribute.

        ExtensionType: This string represents the data type of the value stored in this extension. The type is an enumeration that is a subset of SQL datatypes.

        See Also:
      • ASSOCIATION_OWNINGOBJECT_NAME

        static final String ASSOCIATION_OWNINGOBJECT_NAME
        Constant used for the name of the OwningObject association.

        OwningObject: The extensions associated with this object. Extensions are used to further describe an object; to associate additional attributes that are not part of the object's definition.  

        See Also:
    • Method Details

      • initializeRequiredObjects

        void initializeRequiredObjects() throws RemoteException
        (S) This initializes the Required Objects(Roles) which are:
        OwningObject
        Specified by:
        initializeRequiredObjects in interface MdObjectBaseUtil
        Specified by:
        initializeRequiredObjects in interface Root
        Specified by:
        initializeRequiredObjects in interface SecondaryType
        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:
        OwningObject
        Specified by:
        initializePredObjects in interface MdObjectBase
        Specified by:
        initializePredObjects in interface Root
        Specified by:
        initializePredObjects in interface SecondaryType
        Throws:
        RemoteException - If error connecting/communicating to/with remote object.
      • getExtensionType

        String getExtensionType() throws RemoteException
        Gets the String value of ExtensionType
        Returns:
        The ExtensionType
        Throws:
        RemoteException - If error connecting/communicating to/with remote object.
      • getExtensionTypeState

        int getExtensionTypeState() throws RemoteException
        Gets the Metadata State of ExtensionType
        Returns:
        The State.
        Throws:
        RemoteException - If error connecting/communicating to/with remote object.
      • getExtensionTypeMaxLength

        int getExtensionTypeMaxLength() throws RemoteException
        Gets the maximum length of ExtensionType
        Returns:
        The max size
        Throws:
        RemoteException - If error connecting/communicating to/with remote object.
      • getOwningObjects

        AssociationList getOwningObjects() throws RemoteException, MdException
        Gets the AssociationList of OwningObjects
        Returns:
        Returns the AssociationList of OwningObjects which can be of type:
        All types
        Throws:
        RemoteException - If error connecting/communicating to/with remote object.
        MdException
      • getOwningObject

        Root getOwningObject() throws RemoteException, MdException
        Gets the Root for OwningObject
        Returns:
        The Root ( null if not set) of OwningObjectwhich can be of type:
        All types
        Throws:
        RemoteException - If error connecting/communicating to/with remote object.
        MdException - If error getting/setting part of the object.
      • getOwningObjects

        AssociationList getOwningObjects(boolean fGoToServer) throws RemoteException, MdException
        Gets the Associationlist of OwningObjects
        Parameters:
        fGoToServer - boolean Get the value from the server.
        Returns:
        Returns the AssociationList of OwningObjects which can be of type:
        All types
        Throws:
        RemoteException - If error connecting/communicating to/with remote object.
        MdException - If error getting/setting part of the object.
      • setExtensionType

        void setExtensionType(String inExtensionType) throws RemoteException
        Sets the ExtensionType value and sets the state to MetadataState.LOCAL.
        Parameters:
        inExtensionType - String
        Throws:
        RemoteException - If error communicating with remote object.
      • setExtensionType

        void setExtensionType(String inExtensionType, int state) throws RemoteException
        Sets the ExtensionType Metadata State.
        Parameters:
        inExtensionType - String
        state - int
        Throws:
        RemoteException - If error communicating with remote object.
      • setExtensionTypeState

        void setExtensionTypeState(int state) throws RemoteException
        Sets the Metadata State of ExtensionType.
        Parameters:
        state - int
        Throws:
        RemoteException - If error communicating with remote object.
      • setOwningObjects

        void setOwningObjects(AssociationList list) throws RemoteException
        Sets the OwningObjects list to be list. Object of which can be of type:
        All types
        Parameters:
        list - AssociationList
        Throws:
        RemoteException - If error communicating with remote object.
      • setOwningObjects

        void setOwningObjects(AssociationList list, int state) throws RemoteException
        Sets the OwningObjects list to be list. Object of which can be of type:
        All types
        Parameters:
        list - AssociationList
        state - int
        Throws:
        RemoteException - If error communicating with remote object.
      • setOwningObject

        void setOwningObject(Root inObject) throws RemoteException
        Sets the OwningObjects list 0th element to be inObject.
        Parameters:
        inObject - Root
        Throws:
        RemoteException - If error communicating with remote object.