Class OpenMetadataStore

java.lang.Object
org.odpi.openmetadata.frameworks.governanceaction.OpenMetadataStore
Direct Known Subclasses:
OpenMetadataAccess, SurveyOpenMetadataStore

public class OpenMetadataStore extends Object
OpenMetadataStore provides access to metadata elements stored in the metadata repositories. It is implemented by the abstract class OpenMetadataClient and used by all the governance action services to retrieve metadata.

The concrete class for OpenMetadataClient is implemented by a metadata repository provider. In Egeria, this class is implemented in the GAF Metadata Management Services.

  • Field Details

  • Constructor Details

    • OpenMetadataStore

      public OpenMetadataStore(OpenMetadataClient openMetadataClient, String userId, String externalSourceGUID, String externalSourceName, String originatorGUID)
      The constructor needs an implementation of the open metadata store.
      Parameters:
      openMetadataClient - client implementation
      userId - calling user
      externalSourceGUID - unique identifier for external source (or null)
      externalSourceName - unique name for external source (or null)
      originatorGUID - unique identifier of the source of the to do
    • OpenMetadataStore

      public OpenMetadataStore(OpenMetadataClient openMetadataClient, String userId, String originatorGUID)
      Construct the open metadata store wrapper around the open metadata client.
      Parameters:
      openMetadataClient - client to retrieve values from the
      userId - userId for the governance service
      originatorGUID - unique identifier of the source of the to do
  • Method Details

    • isForLineage

      public boolean isForLineage()
      Return the forLineage setting.
      Returns:
      boolean
    • setForLineage

      public void setForLineage(boolean forLineage)
      Set up the forLineage setting.
      Parameters:
      forLineage - boolean
    • isForDuplicateProcessing

      public boolean isForDuplicateProcessing()
      Return the forDuplicateProcessing setting.
      Returns:
      boolean
    • setForDuplicateProcessing

      public void setForDuplicateProcessing(boolean forDuplicateProcessing)
      Set up the forDuplicateProcessing setting.
      Parameters:
      forDuplicateProcessing - boolean
    • isUseCurrentEffectiveTime

      public boolean isUseCurrentEffectiveTime()
      Return the boolean setting for whether the current time for requests or null.
      Returns:
      boolean
    • setUseCurrentEffectiveTime

      public void setUseCurrentEffectiveTime(boolean useCurrentEffectiveTime)
      Set up the boolean setting for whether the current time for requests or null.
      Parameters:
      useCurrentEffectiveTime - boolean
    • getAllTypes

      Returns the list of different types of metadata organized into two groups. The first are the attribute type definitions (AttributeTypeDefs). These provide types for properties in full type definitions. Full type definitions (TypeDefs) describe types for entities, relationships and classifications.
      Returns:
      TypeDefGallery List of different categories of type definitions.
      Throws:
      InvalidParameterException - the userId is null
      PropertyServerException - there is a problem communicating with the metadata repository.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • findTypeDefsByCategory

      Returns all the TypeDefs for a specific category.
      Parameters:
      category - enum value for the category of TypeDef to return.
      Returns:
      TypeDefs list.
      Throws:
      InvalidParameterException - the TypeDefCategory is null.
      PropertyServerException - there is a problem communicating with the metadata repository.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • findAttributeTypeDefsByCategory

      Returns all the AttributeTypeDefs for a specific category.
      Parameters:
      category - enum value for the category of an AttributeTypeDef to return.
      Returns:
      AttributeTypeDefs list.
      Throws:
      InvalidParameterException - the TypeDefCategory is null.
      PropertyServerException - there is a problem communicating with the metadata repository.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • findTypesByExternalID

      public List<OpenMetadataTypeDef> findTypesByExternalID(String standard, String organization, String identifier) throws InvalidParameterException, PropertyServerException, UserNotAuthorizedException
      Return the types that are linked to the elements from the specified standard.
      Parameters:
      standard - name of the standard null means any.
      organization - name of the organization null means any.
      identifier - identifier of the element in the standard null means any.
      Returns:
      TypeDefs list each entry in the list contains a TypeDef. This is a structure describing the TypeDef's category and properties.
      Throws:
      InvalidParameterException - all attributes of the external id are null.
      PropertyServerException - there is a problem communicating with the metadata repository.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • getTypeDefByGUID

      Return the TypeDef identified by the GUID.
      Parameters:
      guid - String unique id of the TypeDef
      Returns:
      TypeDef structure describing its category and properties.
      Throws:
      InvalidParameterException - the guid is null.
      PropertyServerException - there is a problem communicating with the metadata repository where the metadata collection is stored.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • getAttributeTypeDefByGUID

      Return the AttributeTypeDef identified by the GUID.
      Parameters:
      guid - String unique id of the TypeDef
      Returns:
      TypeDef structure describing its category and properties.
      Throws:
      InvalidParameterException - the guid is null.
      PropertyServerException - there is a problem communicating with the metadata repository where the metadata collection is stored.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • getTypeDefByName

      Return the TypeDef identified by the unique name.
      Parameters:
      name - String name of the TypeDef.
      Returns:
      TypeDef structure describing its category and properties.
      Throws:
      InvalidParameterException - the name is null.
      PropertyServerException - there is a problem communicating with the metadata repository where the metadata collection is stored.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • getAttributeTypeDefByName

      Return the AttributeTypeDef identified by the unique name.
      Parameters:
      name - String name of the TypeDef.
      Returns:
      TypeDef structure describing its category and properties.
      Throws:
      InvalidParameterException - the name is null.
      PropertyServerException - there is a problem communicating with the metadata repository where the metadata collection is stored.
      UserNotAuthorizedException - the userId is not permitted to perform this operation.
    • getMetadataElementByGUID

      Retrieve the metadata element using its unique identifier.
      Parameters:
      elementGUID - unique identifier for the metadata element
      Returns:
      metadata element properties
      Throws:
      InvalidParameterException - the unique identifier is null or not known.
      UserNotAuthorizedException - the governance action service is not able to access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getMetadataElementByUniqueName

      public OpenMetadataElement getMetadataElementByUniqueName(String uniqueName, String uniquePropertyName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve the metadata element using its unique name (typically the qualified name).
      Parameters:
      uniqueName - unique name for the metadata element
      uniquePropertyName - name of property name to test in the open metadata element - if null "qualifiedName" is used
      Returns:
      metadata element properties or null if not found
      Throws:
      InvalidParameterException - the unique identifier is null.
      UserNotAuthorizedException - the governance action service is not able to access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getMetadataElementGUIDByUniqueName

      public String getMetadataElementGUIDByUniqueName(String uniqueName, String uniquePropertyName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve the unique identifier of a metadata element using its unique name (typically the qualified name).
      Parameters:
      uniqueName - unique name for the metadata element
      uniquePropertyName - name of property name to test in the open metadata element - if null "qualifiedName" is used
      Returns:
      metadata element unique identifier (guid)
      Throws:
      InvalidParameterException - the unique identifier is null or not known.
      UserNotAuthorizedException - the governance action service is not able to access the element
      PropertyServerException - there is a problem accessing the metadata store
    • findMetadataElementsWithString

      public List<OpenMetadataElement> findMetadataElementsWithString(String searchString, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve the metadata elements that contain the requested string.
      Parameters:
      searchString - name to retrieve
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      list of matching metadata elements (or null if no elements match the name)
      Throws:
      InvalidParameterException - the qualified name is null
      UserNotAuthorizedException - the governance action service is not able to access the element
      PropertyServerException - there is a problem accessing the metadata store
    • findMetadataElementsWithString

      public List<OpenMetadataElement> findMetadataElementsWithString(String searchString, String typeName, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve the metadata elements of the requested type that contain the requested string.
      Parameters:
      searchString - name to retrieve
      typeName - name of the type to limit the results to (maybe null to mean all types)
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      list of matching metadata elements (or null if no elements match the name)
      Throws:
      InvalidParameterException - the qualified name is null
      UserNotAuthorizedException - the governance action service is not able to access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getRelatedMetadataElements

      public List<RelatedMetadataElement> getRelatedMetadataElements(String elementGUID, int startingAtEnd, String relationshipTypeName, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve the metadata elements connected to the supplied element.
      Parameters:
      elementGUID - unique identifier for the starting metadata element
      startingAtEnd - indicates which end to retrieve from (0 is "either end"; 1 is end1; 2 is end 2)
      relationshipTypeName - type name of relationships to follow (or null for all)
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      list of related elements
      Throws:
      InvalidParameterException - the unique identifier is null or not known; the relationship type is invalid
      UserNotAuthorizedException - the governance action service is not able to access the elements
      PropertyServerException - there is a problem accessing the metadata store
    • getMetadataElementRelationships

      public List<RelatedMetadataElements> getMetadataElementRelationships(String metadataElementAtEnd1GUID, String metadataElementAtEnd2GUID, String relationshipTypeName, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve the relationships linking to the supplied elements.
      Parameters:
      metadataElementAtEnd1GUID - unique identifier of the metadata element at end 1 of the relationship
      metadataElementAtEnd2GUID - unique identifier of the metadata element at end 2 of the relationship
      relationshipTypeName - type name of relationships to follow (or null for all)
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      list of related elements
      Throws:
      InvalidParameterException - the unique identifier is null or not known; the relationship type is invalid
      UserNotAuthorizedException - the governance action service is not able to access the elements
      PropertyServerException - there is a problem accessing the metadata store
    • findMetadataElements

      public List<OpenMetadataElement> findMetadataElements(String metadataElementTypeName, List<String> metadataElementSubtypeName, SearchProperties searchProperties, List<ElementStatus> limitResultsByStatus, SearchClassifications matchClassifications, String sequencingProperty, SequencingOrder sequencingOrder, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return a list of metadata elements that match the supplied criteria. The results can be returned over many pages.
      Parameters:
      metadataElementTypeName - type of interest (null means any element type)
      metadataElementSubtypeName - optional list of the subtypes of the metadataElementTypeName to include in the search results. Null means all subtypes.
      searchProperties - Optional list of entity property conditions to match.
      limitResultsByStatus - By default, entities in all statuses (other than DELETE) are returned. However, it is possible to specify a list of statuses (e.g. ACTIVE) to restrict the results to. Null means all status values.
      matchClassifications - Optional list of classifications to match.
      sequencingProperty - String name of the property that is to be used to sequence the results. Null means do not sequence on a property name (see SequencingOrder).
      sequencingOrder - Enum defining how the results should be ordered.
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      a list of elements matching the supplied criteria; null means no matching elements in the metadata store.
      Throws:
      InvalidParameterException - one of the search parameters are is invalid
      UserNotAuthorizedException - the governance action service is not able to access the elements
      PropertyServerException - there is a problem accessing the metadata store
    • findRelationshipsBetweenMetadataElements

      public List<RelatedMetadataElements> findRelationshipsBetweenMetadataElements(String relationshipTypeName, SearchProperties searchProperties, String sequencingProperty, SequencingOrder sequencingOrder, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return a list of relationships that match the requested conditions. The results can be received as a series of pages.
      Parameters:
      relationshipTypeName - relationship's type. Null means all types (but may be slow so not recommended).
      searchProperties - Optional list of relationship property conditions to match.
      sequencingProperty - String name of the property that is to be used to sequence the results. Null means do not sequence on a property name (see SequencingOrder).
      sequencingOrder - Enum defining how the results should be ordered.
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      a list of relationships. Null means no matching relationships.
      Throws:
      InvalidParameterException - one of the search parameters are is invalid
      UserNotAuthorizedException - the governance action service is not able to access the elements
      PropertyServerException - there is a problem accessing the metadata store
    • getRelationshipByGUID

      Retrieve the relationship using its unique identifier.
      Parameters:
      relationshipGUID - unique identifier for the relationship
      Returns:
      relationship properties
      Throws:
      InvalidParameterException - the unique identifier is null or not known.
      UserNotAuthorizedException - the governance action service is not able to access the element
      PropertyServerException - there is a problem accessing the metadata store
    • createMetadataElementInStore

      public String createMetadataElementInStore(String metadataElementTypeName, ElementStatus initialStatus, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new metadata element in the metadata store. The type name comes from the open metadata types. The selected type also controls the names and types of the properties that are allowed. This version of the method allows access to advanced features such as multiple states and effectivity dates.
      Parameters:
      metadataElementTypeName - type name of the new metadata element
      initialStatus - initial status of the metadata element
      properties - properties of the new metadata element
      Returns:
      unique identifier of the new metadata element
      Throws:
      InvalidParameterException - the type name, status or one of the properties is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • createMetadataElementInStore

      public String createMetadataElementInStore(String metadataElementTypeName, ElementStatus initialStatus, Date effectiveFrom, Date effectiveTo, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new metadata element in the metadata store. The type name comes from the open metadata types. The selected type also controls the names and types of the properties that are allowed. This version of the method allows access to advanced features such as multiple states and effectivity dates.
      Parameters:
      metadataElementTypeName - type name of the new metadata element
      initialStatus - initial status of the metadata element
      effectiveFrom - the date when this element is active - null for active on creation
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      properties - properties of the new metadata element
      Returns:
      unique identifier of the new metadata element
      Throws:
      InvalidParameterException - the type name, status or one of the properties is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • createMetadataElementInStore

      public String createMetadataElementInStore(String metadataElementTypeName, ElementStatus initialStatus, Map<String,ElementProperties> initialClassifications, String anchorGUID, boolean isOwnAnchor, Date effectiveFrom, Date effectiveTo, ElementProperties properties, String parentGUID, String parentRelationshipTypeName, ElementProperties parentRelationshipProperties, boolean parentAtEnd1) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new metadata element in the metadata store. The type name comes from the open metadata types. The selected type also controls the names and types of the properties that are allowed. This version of the method allows access to advanced features such as multiple states and effectivity dates.
      Parameters:
      metadataElementTypeName - type name of the new metadata element
      initialStatus - initial status of the metadata element
      initialClassifications - map of classification names to classification properties to include in the entity creation request
      anchorGUID - unique identifier of the element that should be the anchor for the new element. Set to null if no anchor, or the Anchors classification is included in the initial classifications.
      isOwnAnchor - boolean flag to day that the element should be classified as its own anchor once its element is created in the repository.
      effectiveFrom - the date when this element is active - null for active on creation
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      properties - properties of the new metadata element
      parentGUID - unique identifier of optional parent entity
      parentRelationshipTypeName - type of relationship to connect the new element to the parent
      parentRelationshipProperties - properties to include in parent relationship
      parentAtEnd1 - which end should the parent GUID go in the relationship
      Returns:
      unique identifier of the new metadata element
      Throws:
      InvalidParameterException - the type name, status or one of the properties is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • createMetadataElementFromTemplate

      public String createMetadataElementFromTemplate(String metadataElementTypeName, String anchorGUID, boolean isOwnAnchor, Date effectiveFrom, Date effectiveTo, String templateGUID, ElementProperties templateProperties, Map<String,String> placeholderProperties, String parentGUID, String parentRelationshipTypeName, ElementProperties parentRelationshipProperties, boolean parentAtEnd1) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a new metadata element in the metadata store using the template identified by the templateGUID. The type name comes from the open metadata types. The selected type also controls the names and types of the properties that are allowed. The template and any similar anchored objects are copied in this process.
      Parameters:
      metadataElementTypeName - type name of the new metadata element
      anchorGUID - unique identifier of the element that should be the anchor for the new element. Set to null if no anchor, or the Anchors classification is included in the initial classifications.
      isOwnAnchor - boolean flag to day that the element should be classified as its own anchor once its element is created in the repository.
      effectiveFrom - the date when this element is active - null for active on creation
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      templateGUID - the unique identifier of the existing asset to copy (this will copy all the attachments such as nested content, schema connection etc)
      templateProperties - properties of the new metadata element. These override the template values
      placeholderProperties - property name-to-property value map to replace any placeholder values in the template element - and their anchored elements, which are also copied as part of this operation.
      parentGUID - unique identifier of optional parent entity
      parentRelationshipTypeName - type of relationship to connect the new element to the parent
      parentRelationshipProperties - properties to include in parent relationship
      parentAtEnd1 - which end should the parent GUID go in the relationship
      Returns:
      unique identifier of the new metadata element
      Throws:
      InvalidParameterException - the type name, status or one of the properties is invalid
      UserNotAuthorizedException - the governance action service is not authorized to create this type of element
      PropertyServerException - there is a problem with the metadata store
    • updateMetadataElementInStore

      public void updateMetadataElementInStore(String metadataElementGUID, boolean replaceProperties, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties of a specific metadata element. The properties must match the type definition associated with the metadata element when it was created. However, it is possible to update a few properties, or replace all them by the value used in the replaceProperties flag.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      replaceProperties - flag to indicate whether to completely replace the existing properties with the new properties, or just update the individual properties specified on the request.
      properties - new properties for the metadata element
      Throws:
      InvalidParameterException - either the unique identifier or the properties are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • updateMetadataElementStatusInStore

      public void updateMetadataElementStatusInStore(String metadataElementGUID, ElementStatus newElementStatus) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the status of specific metadata element. The new status must match a status value that is defined for the element's type assigned when it was created.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      newElementStatus - new status value - or null to leave as is
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • updateMetadataElementEffectivityInStore

      public void updateMetadataElementEffectivityInStore(String metadataElementGUID, Date effectiveFrom, Date effectiveTo) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the effectivity dates control the visibility of the element through specific APIs.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • deleteMetadataElementInStore

      public void deleteMetadataElementInStore(String metadataElementGUID) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Delete a specific metadata element.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      Throws:
      InvalidParameterException - the unique identifier is null or invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to delete this element
      PropertyServerException - there is a problem with the metadata store
    • archiveMetadataElementInStore

      public void archiveMetadataElementInStore(String metadataElementGUID, ArchiveProperties archiveProperties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Archive a specific metadata element.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      archiveProperties - description of the archiving process
      Throws:
      InvalidParameterException - the unique identifier is null or invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to delete this element
      PropertyServerException - there is a problem with the metadata store
    • classifyMetadataElementInStore

      public void classifyMetadataElementInStore(String metadataElementGUID, String classificationName, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Add a new classification to the metadata element. Note that only one classification with the same name can be attached to a metadata element.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - name of the classification to add (if the classification is already present then use reclassify)
      properties - properties to store in the new classification. These must conform to the valid properties associated with the classification name
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way; properties do not match the valid properties associated with the classification's type definition
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • classifyMetadataElementInStore

      public void classifyMetadataElementInStore(String metadataElementGUID, String classificationName, Date effectiveFrom, Date effectiveTo, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Add a new classification to the metadata element. Note that only one classification with the same name can be attached to a metadata element.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - name of the classification to add (if the classification is already present then use reclassify)
      effectiveFrom - the date when this classification is active - null for active now
      effectiveTo - the date when this classification becomes inactive - null for active until deleted
      properties - properties to store in the new classification. These must conform to the valid properties associated with the classification name
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way; properties do not match the valid properties associated with the classification's type definition
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • reclassifyMetadataElementInStore

      public void reclassifyMetadataElementInStore(String metadataElementGUID, String classificationName, boolean replaceProperties, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties of a classification that is currently attached to a specific metadata element.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - unique name of the classification to update
      replaceProperties - flag to indicate whether to completely replace the existing properties with the new properties, or just update the individual properties specified on the request.
      properties - new properties for the classification
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way; properties do not match the valid properties associated with the classification's type definition
      UserNotAuthorizedException - the governance action service is not authorized to update this element/classification
      PropertyServerException - there is a problem with the metadata store
    • updateClassificationEffectivityInStore

      public void updateClassificationEffectivityInStore(String metadataElementGUID, String classificationName, Date effectiveFrom, Date effectiveTo) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the effectivity dates of a specific classification attached to a metadata element. The effectivity dates control the visibility of the classification through specific APIs.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - unique name of the classification to update
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • declassifyMetadataElementInStore

      public void declassifyMetadataElementInStore(String metadataElementGUID, String classificationName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove the named classification from a specific metadata element.
      Parameters:
      metadataElementGUID - unique identifier of the metadata element to update
      classificationName - unique name of the classification to remove
      Throws:
      InvalidParameterException - the unique identifier or classification name is null or invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to remove this classification
      PropertyServerException - there is a problem with the metadata store
    • createRelatedElementsInStore

      public String createRelatedElementsInStore(String relationshipTypeName, String metadataElement1GUID, String metadataElement2GUID, Date effectiveFrom, Date effectiveTo, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a relationship between two metadata elements. It is important to put the right element at each end of the relationship according to the type definition since this will affect how the relationship is interpreted.
      Parameters:
      relationshipTypeName - name of the type of relationship to create. This will determine the types of metadata elements that can be related and the properties that can be associated with this relationship.
      metadataElement1GUID - unique identifier of the metadata element at end 1 of the relationship
      metadataElement2GUID - unique identifier of the metadata element at end 2 of the relationship
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      properties - the properties of the relationship
      Returns:
      unique identifier of the new relationship
      Throws:
      InvalidParameterException - the unique identifier's of the metadata elements are null or invalid in some way; the properties are not valid for this type of relationship
      UserNotAuthorizedException - the governance action service is not authorized to create this type of relationship
      PropertyServerException - there is a problem with the metadata store
    • updateRelatedElementsInStore

      public void updateRelatedElementsInStore(String relationshipGUID, boolean replaceProperties, ElementProperties properties) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties associated with a relationship.
      Parameters:
      relationshipGUID - unique identifier of the relationship to update
      replaceProperties - flag to indicate whether to completely replace the existing properties with the new properties, or just update the individual properties specified on the request.
      properties - new properties for the relationship
      Throws:
      InvalidParameterException - the unique identifier of the relationship is null or invalid in some way; the properties are not valid for this type of relationship
      UserNotAuthorizedException - the governance action service is not authorized to update this relationship
      PropertyServerException - there is a problem with the metadata store
    • updateRelatedElementsEffectivityInStore

      public void updateRelatedElementsEffectivityInStore(String relationshipGUID, Date effectiveFrom, Date effectiveTo) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the effectivity dates of a specific relationship between metadata elements. The effectivity dates control the visibility of the classification through specific APIs.
      Parameters:
      relationshipGUID - unique identifier of the relationship to update
      effectiveFrom - the date when this element is active - null for active now
      effectiveTo - the date when this element becomes inactive - null for active until deleted
      Throws:
      InvalidParameterException - either the unique identifier or the status are invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to update this element
      PropertyServerException - there is a problem with the metadata store
    • deleteRelatedElementsInStore

      public void deleteRelatedElementsInStore(String relationshipGUID) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Delete a relationship between two metadata elements.
      Parameters:
      relationshipGUID - unique identifier of the relationship to delete
      Throws:
      InvalidParameterException - the unique identifier of the relationship is null or invalid in some way
      UserNotAuthorizedException - the governance action service is not authorized to delete this relationship
      PropertyServerException - there is a problem with the metadata store
    • createIncidentReport

      public String createIncidentReport(String qualifiedName, int domainIdentifier, String background, List<IncidentImpactedElement> impactedResources, List<IncidentDependency> previousIncidents, Map<String,Integer> incidentClassifiers, Map<String,String> additionalProperties, String originatorGUID) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create an incident report to capture the situation detected by this governance action service. This incident report will be processed by other governance activities.
      Parameters:
      qualifiedName - unique identifier to give this new incident report
      domainIdentifier - governance domain associated with this action (0=ALL)
      background - description of the situation
      impactedResources - details of the resources impacted by this situation
      previousIncidents - links to previous incident reports covering this situation
      incidentClassifiers - initial classifiers for the incident report
      additionalProperties - additional arbitrary properties for the incident reports
      originatorGUID - the unique identifier of the person or process that created the incident
      Returns:
      unique identifier of the resulting incident report
      Throws:
      InvalidParameterException - null or non-unique qualified name for the incident report
      UserNotAuthorizedException - this governance action service is not authorized to create an incident report
      PropertyServerException - there is a problem with the metadata store
    • openToDo

      public String openToDo(String qualifiedName, String title, String instructions, String todoCategory, int priority, Date dueDate, Map<String,String> additionalProperties, String assignTo, String sponsorGUID, List<NewActionTarget> actionTargets) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create a "To Do" request for someone to work on.
      Parameters:
      qualifiedName - unique name for the to do. (Could be the engine name and a guid?)
      title - short meaningful phrase for the person receiving the request
      instructions - further details on what to do
      todoCategory - a category of to dos (for example, "data error", "access request")
      priority - priority value (based on organization's scale)
      dueDate - date/time this needs to be completed
      additionalProperties - additional arbitrary properties for the incident reports
      assignTo - qualified name of the Actor element for the recipient
      sponsorGUID - unique identifier of the element that describes the rule, project that this is on behalf of
      actionTargets - the list of elements that should be acted upon
      Returns:
      unique identifier of new to do element
      Throws:
      InvalidParameterException - either todoQualifiedName or assignedTo are null or not recognized
      UserNotAuthorizedException - the governance action service is not authorized to create a "to do" entity
      PropertyServerException - there is a problem connecting to (or inside) the metadata store
    • setUpValidMetadataValue

      public void setUpValidMetadataValue(String typeName, String propertyName, ValidMetadataValue validMetadataValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create or update the valid value for a particular open metadata property name. If the typeName is null, this valid value applies to properties of this name from all types. The valid value is stored in the preferredValue property. If a valid value is already set up for this property (with overlapping effective dates) then the valid value is updated.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      validMetadataValue - preferred value to use in the open metadata types plus additional descriptive values.
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • setUpValidMetadataMapName

      public void setUpValidMetadataMapName(String typeName, String propertyName, ValidMetadataValue validMetadataValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create or update the valid value for a name that can be stored in a particular open metadata property name. This property is of type map from name to string. The valid value is stored in the preferredValue property of validMetadataValue. If the typeName is null, this valid value applies to properties of this name from any open metadata type. If a valid value is already set up for this property (with overlapping effective dates) then the valid value is updated.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      validMetadataValue - preferred value to use in the open metadata types plus additional descriptive values.
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • setUpValidMetadataMapValue

      public void setUpValidMetadataMapValue(String typeName, String propertyName, String mapName, ValidMetadataValue validMetadataValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Create or update the valid value for a name that can be stored in a particular open metadata property name. This property is of type map from name to string. The valid value is stored in the preferredValue property of validMetadataValue. If the typeName is null, this valid value applies to properties of this name from any open metadata type. If a valid value is already set up for this property (with overlapping effective dates) then the valid value is updated.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      mapName - name in the map that this valid value applies. If null then the value can be used for any name in the map.
      validMetadataValue - preferred value to use in the open metadata types plus additional descriptive values.
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • clearValidMetadataValue

      public void clearValidMetadataValue(String typeName, String propertyName, String preferredValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove a valid value for a property.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      preferredValue - specific valid value to remove
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • clearValidMetadataMapName

      public void clearValidMetadataMapName(String typeName, String propertyName, String preferredValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove a valid map name value for a property. The match is done on preferred name.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      preferredValue - specific valid value to remove
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • clearValidMetadataMapValue

      public void clearValidMetadataMapValue(String typeName, String propertyName, String mapName, String preferredValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove a valid map name value for a property. The match is done on preferred name.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      mapName - name in the map that this valid value applies. If null then the value can be used for any name in the map.
      preferredValue - specific valid value to remove
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • validateMetadataValue

      public boolean validateMetadataValue(String typeName, String propertyName, String actualValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Validate whether the value found in an open metadata property is valid.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      actualValue - value stored in the property - if this is null, true is only returned if null is set up as a valid value.
      Returns:
      boolean flag - true if the value is one of the defined valid values or there are no valid values set up for the property (and so any value is value).
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • validateMetadataMapName

      public boolean validateMetadataMapName(String typeName, String propertyName, String actualValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Validate whether the name found in an open metadata map property is valid.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      actualValue - value stored in the property - if this is null, true is only returned if null is set up as a valid value.
      Returns:
      boolean flag - true if the value is one of the defined valid values or there are no valid values set up for the property (and so any value is value).
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • validateMetadataMapValue

      public boolean validateMetadataMapValue(String typeName, String propertyName, String mapName, String actualValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Validate whether the name found in an open metadata map property is valid.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      mapName - name in the map that this valid value applies. If null then the value can be used for any name in the map.
      actualValue - value stored in the property - if this is null, true is only returned if null is set up as a valid value.
      Returns:
      boolean flag - true if the value is one of the defined valid values or there are no valid values set up for the property (and so any value is value).
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getValidMetadataValue

      public ValidMetadataValue getValidMetadataValue(String typeName, String propertyName, String preferredValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve details of a specific valid value for a property.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      preferredValue - valid value to match
      Returns:
      specific valid value definition or none if there is no definition stored
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getValidMetadataMapName

      public ValidMetadataValue getValidMetadataMapName(String typeName, String propertyName, String preferredValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve details of a specific valid name for a map property.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      preferredValue - valid value to match
      Returns:
      specific valid value definition or none if there is no definition stored
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getValidMetadataMapValue

      public ValidMetadataValue getValidMetadataMapValue(String typeName, String propertyName, String mapName, String preferredValue) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve details of a specific valid value for a map name.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      mapName - name in the map that this valid value applies. If null then the value can be used for any name in the map.
      preferredValue - valid value to match
      Returns:
      specific valid value definition or none if there is no definition stored
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getValidMetadataValues

      public List<ValidMetadataValueDetail> getValidMetadataValues(String typeName, String propertyName, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve all the valid values for the requested property.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      list of valid values defined for the property
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store
    • getConsistentMetadataValues

      public List<ValidMetadataValue> getConsistentMetadataValues(String typeName, String propertyName, String mapName, String preferredValue, int startFrom, int pageSize) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Retrieve all the consistent valid values for the requested property.
      Parameters:
      typeName - type name if this is valid value is specific for a type, or null if this valid value if for the property name for all types
      propertyName - name of property that this valid value applies
      mapName - optional name of map key that this valid value applies
      preferredValue - the value to match against
      startFrom - paging start point
      pageSize - maximum results that can be returned
      Returns:
      list of valid values defined for the property
      Throws:
      InvalidParameterException - the property name is null or not known.
      UserNotAuthorizedException - the service is not able to create/access the element
      PropertyServerException - there is a problem accessing the metadata store