Class MetadataElementHandler<B>


  • public class MetadataElementHandler<B>
    extends OpenMetadataAPIGenericHandler<B>
    MetadataElementHandler manages MetadataElement objects from the Governance Action Framework (GAF). These objects are 1-1 with an open metadata entity.
    • Constructor Detail

      • MetadataElementHandler

        public MetadataElementHandler​(OpenMetadataAPIGenericConverter<B> converter,
                                      Class<B> beanClass,
                                      String serviceName,
                                      String serverName,
                                      InvalidParameterHandler invalidParameterHandler,
                                      RepositoryHandler repositoryHandler,
                                      OMRSRepositoryHelper repositoryHelper,
                                      String localServerUserId,
                                      OpenMetadataServerSecurityVerifier securityVerifier,
                                      List<String> supportedZones,
                                      List<String> defaultZones,
                                      List<String> publishZones,
                                      AuditLog auditLog)
        Construct the handler for metadata elements.
        Parameters:
        converter - specific converter for this bean class
        beanClass - name of bean class that is represented by the generic class B
        serviceName - name of this service
        serverName - name of the local server
        invalidParameterHandler - handler for managing parameter errors
        repositoryHandler - manages calls to the repository services
        repositoryHelper - provides utilities for manipulating the repository services objects
        localServerUserId - userId for this server
        securityVerifier - open metadata security services verifier
        supportedZones - list of zones that the access service is allowed to serve Asset instances from.
        defaultZones - list of zones that the access service should set in all new Asset instances.
        publishZones - list of zones that the access service sets up in published Asset instances.
        auditLog - destination for audit log events.
    • Method Detail

      • getMetadataElementByUniqueName

        public B getMetadataElementByUniqueName​(String userId,
                                                String uniqueName,
                                                String uniqueNameParameterName,
                                                String uniqueNamePropertyName,
                                                String methodName)
                                         throws InvalidParameterException,
                                                UserNotAuthorizedException,
                                                PropertyServerException
        Retrieve the metadata element using its unique name (typically the qualified name).
        Parameters:
        userId - caller's userId
        uniqueName - unique name for the metadata element
        uniqueNameParameterName - name of the parameter that passed the unique name (optional)
        uniqueNamePropertyName - name of the property from the open types to use in the look up
        methodName - calling method
        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
      • getMetadataElementGUIDByUniqueName

        public String getMetadataElementGUIDByUniqueName​(String userId,
                                                         String uniqueName,
                                                         String uniqueNameParameterName,
                                                         String uniqueNamePropertyName,
                                                         String methodName)
                                                  throws InvalidParameterException,
                                                         UserNotAuthorizedException,
                                                         PropertyServerException
        Retrieve the unique identifier of a metadata element using its unique name (typically the qualified name).
        Parameters:
        userId - caller's userId
        uniqueName - unique name for the metadata element
        uniqueNameParameterName - name of the parameter that passed the unique name (optional)
        uniqueNamePropertyName - name of the property from the open types to use in the look up
        methodName - calling method
        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
      • getRelatedMetadataElements

        public List<RelatedMetadataElement> getRelatedMetadataElements​(String userId,
                                                                       String elementGUID,
                                                                       int startingAtEnd,
                                                                       String relationshipTypeName,
                                                                       int startFrom,
                                                                       int pageSize,
                                                                       String methodName)
                                                                throws InvalidParameterException,
                                                                       UserNotAuthorizedException,
                                                                       PropertyServerException
        Retrieve the metadata elements connected to the supplied element.
        Parameters:
        userId - caller's userId
        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
        methodName - calling method
        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<B> findMetadataElements​(String userId,
                                            String metadataElementTypeName,
                                            List<String> metadataElementSubtypeName,
                                            SearchProperties searchProperties,
                                            List<ElementStatus> limitResultsByStatus,
                                            SearchClassifications searchClassifications,
                                            String sequencingProperty,
                                            SequencingOrder sequencingOrder,
                                            int startingFrom,
                                            int pageSize,
                                            String methodName)
                                     throws InvalidParameterException,
                                            UserNotAuthorizedException,
                                            PropertyServerException
        Return a list of metadata elements that match the supplied criteria. The results can be returned over many pages.
        Parameters:
        userId - caller's userId
        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 (eg ACTIVE) to restrict the results to. Null means all status values.
        searchClassifications - 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.
        startingFrom - paging start point
        pageSize - maximum results that can be returned
        methodName - calling method
        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 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 userId,
                                                                                      String relationshipTypeName,
                                                                                      SearchProperties searchProperties,
                                                                                      String sequencingProperty,
                                                                                      SequencingOrder sequencingOrder,
                                                                                      int startFrom,
                                                                                      int pageSize,
                                                                                      String methodName)
                                                                               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:
        userId - caller's userId
        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
        methodName - calling method
        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
      • createMetadataElementInStore

        public String createMetadataElementInStore​(String userId,
                                                   String metadataElementTypeName,
                                                   ElementStatus initialStatus,
                                                   Date effectiveFrom,
                                                   Date effectiveTo,
                                                   ElementProperties properties,
                                                   String templateGUID,
                                                   String methodName)
                                            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:
        userId - caller's userId
        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
        templateGUID - the unique identifier of the existing asset to copy (this will copy all of the attachments such as nested content, schema connection etc)
        methodName - calling method
        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 userId,
                                                 String metadataElementGUID,
                                                 boolean replaceProperties,
                                                 ElementProperties properties,
                                                 String methodName)
                                          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 of them by the value used in the replaceProperties flag.
        Parameters:
        userId - caller's userId
        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
        methodName - calling method
        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 userId,
                                                       String metadataElementGUID,
                                                       ElementStatus newElementStatus,
                                                       Date effectiveFrom,
                                                       Date effectiveTo,
                                                       String methodName)
                                                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. The effectivity dates control the visibility of the element through specific APIs.
        Parameters:
        userId - caller's userId
        metadataElementGUID - unique identifier of the metadata element to update
        newElementStatus - new status value - or null to leave as is
        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
        methodName - calling method
        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
      • classifyMetadataElementInStore

        public void classifyMetadataElementInStore​(String userId,
                                                   String metadataElementGUID,
                                                   String classificationName,
                                                   Date effectiveFrom,
                                                   Date effectiveTo,
                                                   ElementProperties properties,
                                                   String methodName)
                                            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:
        userId - caller's userId
        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
        methodName - calling method
        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 userId,
                                                     String metadataElementGUID,
                                                     String classificationName,
                                                     boolean replaceProperties,
                                                     ElementProperties properties,
                                                     String methodName)
                                              throws InvalidParameterException,
                                                     UserNotAuthorizedException,
                                                     PropertyServerException
        Update the properties of a classification that is currently attached to a specific metadata element.
        Parameters:
        userId - caller's userId
        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
        methodName - calling method
        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
      • updateClassificationStatusInStore

        public void updateClassificationStatusInStore​(String userId,
                                                      String metadataElementGUID,
                                                      String classificationName,
                                                      Date effectiveFrom,
                                                      Date effectiveTo,
                                                      String methodName)
                                               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:
        userId - caller's userId
        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
        methodName - calling method
        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
      • createRelatedElementsInStore

        public String createRelatedElementsInStore​(String userId,
                                                   String relationshipTypeName,
                                                   String metadataElement1GUID,
                                                   String metadataElement2GUID,
                                                   Date effectiveFrom,
                                                   Date effectiveTo,
                                                   ElementProperties properties,
                                                   String methodName)
                                            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:
        userId - caller's userId
        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
        methodName - calling method
        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 userId,
                                                 String relationshipGUID,
                                                 boolean replaceProperties,
                                                 ElementProperties properties,
                                                 String methodName)
                                          throws InvalidParameterException,
                                                 UserNotAuthorizedException,
                                                 PropertyServerException
        Update the properties associated with a relationship.
        Parameters:
        userId - caller's userId
        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
        methodName - calling method
        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
      • updateRelatedElementsStatusInStore

        public void updateRelatedElementsStatusInStore​(String userId,
                                                       String relationshipGUID,
                                                       Date effectiveFrom,
                                                       Date effectiveTo,
                                                       String methodName)
                                                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:
        userId - caller's userId
        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
        methodName - calling method
        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