Package com.sas.metadata.remote

# Interface GlobalFormula

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

All Known Subinterfaces:
  `CalculatedMember`, `NamedSet`

public interface GlobalFormula extends Feature
PROC OLAP and OLAP CUBE Studio enable users to define formulas for the dimensions of a cube that result in the creation of calculated members and named sets. In SAS 9.2, the GlobalFormula metadata type was used to store the formula that created the calculated member or named set. In SAS 9.3, it was decided that this modeling was not sufficient to enable the object to refer back to the dimension, hierarchy, or level to which the calculated member or named set belongs. Therefore, the GlobalFormula metadata type was changed to an abstract type, and the CalculatedMember and NamedSet metadata types were introduced. The new metadata types are used in cubes that have a UsageVersion of 5.0 or higher. The CONVERT option of PROC OLAP can be used to change a 4.0 cube to a 5.0 cube. A 4.0 cube is also converted to a 5.0 cube by OLAP CUBE Studio when a shared dimension is added to the 4.0 cube. For more information, see CalculatedMember and NamedSet.

Attributes of GlobalFormula are:

- `UniqueName`
- `Expression`
- `GlobalFormulaRole`

Associations of GlobalFormula are:

- `AssociatedCube`

## Usage

To create an instance of this GlobalFormula, use the `factory` create methods.
Example: create a GlobalFormula with name "GlobalFormula_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();
     GlobalFormula myObject = (GlobalFormula) factory.createComplexMetadataObject(objectStore, "GlobalFormula_Object", MetadataObjects.GLOBALFORMULA, "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_ASSOCIATEDCUBE_NAME`
  Constant used for the name of the AssociatedCube association.
  `static final String`
  `ATTRIBUTE_EXPRESSION_NAME`
  Constant used for the name of the Expression attribute.
  `static final String`
  `ATTRIBUTE_GLOBALFORMULAROLE_NAME`
  Constant used for the name of the GlobalFormulaRole attribute.
  `static final String`
  `ATTRIBUTE_UNIQUENAME_NAME`
  Constant used for the name of the UniqueName attribute.

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

  `ASSOCIATION_SOURCEFEATUREMAPS_NAME, ASSOCIATION_TARGETFEATUREMAPS_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
  `Cube`
  `getAssociatedCube()`
  Gets the `Cube` for `AssociatedCube`
  `AssociationList`
  `getAssociatedCubes()`
  Gets the AssociationList of `AssociatedCubes`
  `AssociationList`
  `getAssociatedCubes(boolean fGoToServer)`
  Gets the Associationlist of `AssociatedCubes`
  `String`
  `getExpression()`
  Gets the `String` value of `Expression`
  `int`
  `getExpressionMaxLength()`
  Gets the maximum length of `Expression`
  `int`
  `getExpressionState()`
  Gets the Metadata State of `Expression`
  `String`
  `getGlobalFormulaRole()`
  Gets the `String` value of `GlobalFormulaRole`
  `int`
  `getGlobalFormulaRoleMaxLength()`
  Gets the maximum length of `GlobalFormulaRole`
  `int`
  `getGlobalFormulaRoleState()`
  Gets the Metadata State of `GlobalFormulaRole`
  `String`
  `getUniqueName()`
  Gets the `String` value of `UniqueName`
  `int`
  `getUniqueNameMaxLength()`
  Gets the maximum length of `UniqueName`
  `int`
  `getUniqueNameState()`
  Gets the Metadata State of `UniqueName`
  `void`
  `initializePredObjects()`
  (S) Adds the Associated objects to the predObjects which are:
  `AssociatedCube`
  `void`
  `initializeRequiredObjects()`
  (S) This initializes the Required Objects(Roles) which are:
  `void`
  `setAssociatedCube(Cube inObject)`
  Sets the `AssociatedCubes` list 0th element to be `inObject`.
  `void`
  `setAssociatedCubes(AssociationList list)`
  Sets the `AssociatedCubes` list to be `list`.
  `void`
  `setAssociatedCubes(AssociationList list, int state)`
  Sets the `AssociatedCubes` list to be `list`.
  `void`
  `setExpression(String inExpression)`
  Sets the `Expression` value and sets the state to MetadataState.LOCAL.
  `void`
  `setExpression(String inExpression, int state)`
  Sets the `Expression` Metadata State.
  `void`
  `setExpressionState(int state)`
  Sets the Metadata State of `Expression`.
  `void`
  `setGlobalFormulaRole(String inGlobalFormulaRole)`
  Sets the `GlobalFormulaRole` value and sets the state to MetadataState.LOCAL.
  `void`
  `setGlobalFormulaRole(String inGlobalFormulaRole, int state)`
  Sets the `GlobalFormulaRole` Metadata State.
  `void`
  `setGlobalFormulaRoleState(int state)`
  Sets the Metadata State of `GlobalFormulaRole`.
  `void`
  `setUniqueName(String inUniqueName)`
  Sets the `UniqueName` value and sets the state to MetadataState.LOCAL.
  `void`
  `setUniqueName(String inUniqueName, int state)`
  Sets the `UniqueName` Metadata State.
  `void`
  `setUniqueNameState(int state)`
  Sets the Metadata State of `UniqueName`.

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

  `getSourceFeatureMaps, getSourceFeatureMaps, getTargetFeatureMaps, getTargetFeatureMaps, setSourceFeatureMaps, setSourceFeatureMaps, setTargetFeatureMaps, setTargetFeatureMaps`

  ### 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

  - ### ATTRIBUTE_UNIQUENAME_NAME

    static final String ATTRIBUTE_UNIQUENAME_NAME
    Constant used for the name of the UniqueName attribute.

    UniqueName: The fully qualified unique name for the global formula.

    See Also:
      - Constant Field Values

  - ### ATTRIBUTE_EXPRESSION_NAME

    static final String ATTRIBUTE_EXPRESSION_NAME
    Constant used for the name of the Expression attribute.

    Expression: The formula.

    See Also:
      - Constant Field Values

  - ### ATTRIBUTE_GLOBALFORMULAROLE_NAME

    static final String ATTRIBUTE_GLOBALFORMULAROLE_NAME
    Constant used for the name of the GlobalFormulaRole attribute.

    GlobalFormulaRole: Valid values are CalculatedMember or NamedSet.

    See Also:
      - Constant Field Values

  - ### ASSOCIATION_ASSOCIATEDCUBE_NAME

    static final String ASSOCIATION_ASSOCIATEDCUBE_NAME
    Constant used for the name of the AssociatedCube association.

    AssociatedCube: The list of cubes that contains this global formula.

    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 `Feature`
    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:
    `AssociatedCube`
    Specified by:
      `initializePredObjects` in interface `Feature`
    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.

  - ### getUniqueName

    String getUniqueName() throws RemoteException
    Gets the `String` value of `UniqueName`
    Returns:
      The `UniqueName`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getUniqueNameState

    int getUniqueNameState() throws RemoteException
    Gets the Metadata State of `UniqueName`
    Returns:
      The State.
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getUniqueNameMaxLength

    int getUniqueNameMaxLength() throws RemoteException
    Gets the maximum length of `UniqueName`
    Returns:
      The max size
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getExpression

    String getExpression() throws RemoteException
    Gets the `String` value of `Expression`
    Returns:
      The `Expression`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getExpressionState

    int getExpressionState() throws RemoteException
    Gets the Metadata State of `Expression`
    Returns:
      The State.
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getExpressionMaxLength

    int getExpressionMaxLength() throws RemoteException
    Gets the maximum length of `Expression`
    Returns:
      The max size
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getGlobalFormulaRole

    String getGlobalFormulaRole() throws RemoteException
    Gets the `String` value of `GlobalFormulaRole`
    Returns:
      The `GlobalFormulaRole`
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getGlobalFormulaRoleState

    int getGlobalFormulaRoleState() throws RemoteException
    Gets the Metadata State of `GlobalFormulaRole`
    Returns:
      The State.
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getGlobalFormulaRoleMaxLength

    int getGlobalFormulaRoleMaxLength() throws RemoteException
    Gets the maximum length of `GlobalFormulaRole`
    Returns:
      The max size
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.

  - ### getAssociatedCubes

    AssociationList getAssociatedCubes() throws RemoteException, MdException
    Gets the AssociationList of `AssociatedCubes`
    Returns:
      Returns the AssociationList of `AssociatedCubes` which can be of type:
      Cube
    Throws:
      `RemoteException` - If error connecting/communicating to/with remote object.
      `MdException`

  - ### getAssociatedCube

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

  - ### getAssociatedCubes

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

  - ### setUniqueName

    void setUniqueName(String inUniqueName) throws RemoteException
    Sets the `UniqueName` value and sets the state to MetadataState.LOCAL.
    Parameters:
      `inUniqueName` - String
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setUniqueName

    void setUniqueName(String inUniqueName, int state) throws RemoteException
    Sets the `UniqueName` Metadata State.
    Parameters:
      `inUniqueName` - String
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setUniqueNameState

    void setUniqueNameState(int state) throws RemoteException
    Sets the Metadata State of `UniqueName`.
    Parameters:
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setExpression

    void setExpression(String inExpression) throws RemoteException
    Sets the `Expression` value and sets the state to MetadataState.LOCAL.
    Parameters:
      `inExpression` - String
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setExpression

    void setExpression(String inExpression, int state) throws RemoteException
    Sets the `Expression` Metadata State.
    Parameters:
      `inExpression` - String
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setExpressionState

    void setExpressionState(int state) throws RemoteException
    Sets the Metadata State of `Expression`.
    Parameters:
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setGlobalFormulaRole

    void setGlobalFormulaRole(String inGlobalFormulaRole) throws RemoteException
    Sets the `GlobalFormulaRole` value and sets the state to MetadataState.LOCAL.
    Parameters:
      `inGlobalFormulaRole` - String
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setGlobalFormulaRole

    void setGlobalFormulaRole(String inGlobalFormulaRole, int state) throws RemoteException
    Sets the `GlobalFormulaRole` Metadata State.
    Parameters:
      `inGlobalFormulaRole` - String
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setGlobalFormulaRoleState

    void setGlobalFormulaRoleState(int state) throws RemoteException
    Sets the Metadata State of `GlobalFormulaRole`.
    Parameters:
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setAssociatedCubes

    void setAssociatedCubes(AssociationList list) throws RemoteException
    Sets the `AssociatedCubes` list to be `list`. Object of which can be of type:
    Cube
    Parameters:
      `list` - AssociationList
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setAssociatedCubes

    void setAssociatedCubes(AssociationList list, int state) throws RemoteException
    Sets the `AssociatedCubes` list to be `list`. Object of which can be of type:
    Cube
    Parameters:
      `list` - AssociationList
      `state` - int
    Throws:
      `RemoteException` - If error communicating with remote object.

  - ### setAssociatedCube

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