java.lang.Object
org.odpi.openmetadata.commonservices.repositoryhandler.RepositoryHandler

public class RepositoryHandler extends Object
RepositoryHandler issues common calls to the open metadata repository to retrieve and store metadata. It converts the repository service exceptions into access service exceptions. It is also responsible for validating provenance and ensuring elements are only returned if they have appropriate effectivity dates. If no effectivity date is passed as a parameter, then the time is assumed to be now. If a null effectivity date is supplied then it is assumed to be "any".
  • Constructor Details

    • RepositoryHandler

      public RepositoryHandler(AuditLog auditLog, OMRSRepositoryHelper repositoryHelper, RepositoryErrorHandler errorHandler, OMRSMetadataCollection metadataCollection, int maxPageSize)
      Construct the basic handler with information needed to call the repository services and report any error.
      Parameters:
      auditLog - logging destination
      repositoryHelper - helper class for manipulating OMRS objects
      errorHandler - generates error messages and exceptions
      metadataCollection - access to the repository content.
      maxPageSize - maximum number of instances that can be returned on a single call
  • Method Details

    • validateEntityGUID

      public EntityDetail validateEntityGUID(String userId, String guid, String guidParameterName, String entityTypeName, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Validate that the supplied GUID is for a real entity and map exceptions if not.
      Parameters:
      userId - user making the request.
      guid - unique identifier of the entity.
      guidParameterName - name of parameter that passed the guid
      entityTypeName - expected type of asset.
      methodName - name of method called.
      Returns:
      retrieved entity
      Throws:
      InvalidParameterException - entity not known/not effective
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • validateRetrievedEntity

      public EntityDetail validateRetrievedEntity(String userId, EntityDetail entity, String entityTypeName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Validate an entity retrieved from the repository is suitable for the requester. There are three considerations: (1) Are the effectivity dates in the entity's properties indicating that this entity is effective at this time? (2) If the entity is a memento (ie it has the Memento classification attached) then it should only be returned if the request is for lineage. (3) If the entity is a known duplicate (ie it has the KnownDuplicate classification attached) and this request is not for duplicate processing then retrieve and combine the duplicate entities.
      Parameters:
      userId - calling user
      entity - retrieved entity
      entityTypeName - unique name for type of entity
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - time when the examined elements must be effective
      methodName - calling method
      Returns:
      entity to return to the caller - or null to mean the retrieved entity is not appropriate for the caller
      Throws:
      InvalidParameterException - bad parameter
      UserNotAuthorizedException - user not authorized to issue this request
      PropertyServerException - problem accessing the repository services
    • validateRetrievedRelationship

      public Relationship validateRetrievedRelationship(Relationship relationship, String relationshipTypeName, Date effectiveTime, String methodName)
      Validate a relationship retrieved from the repository is suitable for the requester. There are two considerations: (1) Are the effectivity dates in the relationship's properties indicating that this relationship is effective at this time? (2) is the type of the relationship correct..
      Parameters:
      relationship - retrieved relationship
      relationshipTypeName - unique name for type of relationship
      effectiveTime - time when the examined elements must be effective
      methodName - calling method
      Returns:
      relationship to return to the caller - or null to mean the retrieved relationship is not appropriate for the caller
    • isEntityKnown

      public EntityDetail isEntityKnown(String userId, String guid, String guidParameterName, String entityTypeName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Validate that the supplied GUID is for a real entity that is effective. Return null if not.
      Parameters:
      userId - user making the request.
      guid - unique identifier of the entity.
      guidParameterName - name of parameter passing the GUID
      entityTypeName - expected type of asset.
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - time when the element should be effective
      methodName - name of method called.
      Returns:
      retrieved entity
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • createEntity

      public String createEntity(String userId, String entityTypeGUID, String entityTypeName, String externalSourceGUID, String externalSourceName, InstanceProperties properties, InstanceStatus instanceStatus, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Create a new entity in the open metadata repository with the specified instance status. The setting of externalSourceGUID determines whether a local or a remote entity is created.
      Parameters:
      userId - calling user
      entityTypeGUID - type of entity to create
      entityTypeName - name of the entity's type
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      properties - properties for the entity
      instanceStatus - initial status (needs to be valid for type)
      methodName - name of calling method
      Returns:
      unique identifier of new entity
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • createEntity

      public String createEntity(String userId, String entityTypeGUID, String entityTypeName, String externalSourceGUID, String externalSourceName, InstanceProperties properties, List<Classification> initialClassifications, InstanceStatus instanceStatus, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Create a new entity in the open metadata repository with the specified instance status. The setting of externalSourceGUID determines whether a local or a remote entity is created.
      Parameters:
      userId - calling user
      entityTypeGUID - type of entity to create
      entityTypeName - name of the entity's type
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      properties - properties for the entity
      initialClassifications - list of classifications for the first version of this entity.
      instanceStatus - initial status (needs to be valid for type)
      methodName - name of calling method
      Returns:
      unique identifier of new entity
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • updateEntityProperties

      public EntityDetail updateEntityProperties(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, String entityGUIDParameterName, String entityTypeGUID, String entityTypeName, InstanceProperties updateProperties, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties of an existing entity in the open metadata repository.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityGUID - unique identifier of entity to update
      entityGUIDParameterName - parameter supplying entityGUID
      entityTypeGUID - type of entity to create
      entityTypeName - name of the entity's type
      updateProperties - properties for the entity
      forLineage - is this part of a lineage request?
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      updated entity
      Throws:
      InvalidParameterException - problem with the GUID
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • updateEntityProperties

      public EntityDetail updateEntityProperties(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, EntityDetail originalEntity, String entityTypeGUID, String entityTypeName, InstanceProperties newProperties, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties of an existing entity in the open metadata repository.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityGUID - unique identifier of entity to update
      originalEntity - entity retrieved from repository - must not be null
      entityTypeGUID - type of entity to create
      entityTypeName - name of the entity's type
      newProperties - properties for the entity
      methodName - name of calling method
      Returns:
      updated entity
      Throws:
      InvalidParameterException - problem with the GUID
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • updateEntity

      public EntityDetail updateEntity(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, String entityGUIDParameterName, String entityTypeGUID, String entityTypeName, InstanceProperties properties, List<Classification> classifications, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update an existing entity in the open metadata repository. Both the properties and the classifications are updated to the supplied values.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityGUID - unique identifier entity to update
      entityGUIDParameterName - parameter supplying entityGUID
      entityTypeGUID - type of entity to create
      entityTypeName - name of the entity's type
      properties - properties for the entity
      classifications - classifications for entity
      forLineage - return elements marked with the Memento classification?
      forDuplicateProcessing - do not merge elements marked as duplicates?
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      returned entity containing the update
      Throws:
      InvalidParameterException - problem with the GUID
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • updateEntityProperties

      public void updateEntityProperties(String userId, String externalSourceGUID, String externalSourceName, InstanceHeader entityHeader, String entityTypeGUID, String entityTypeName, InstanceProperties properties, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Update an existing entity in the open metadata repository. The external source identifiers are used to validate the provenance of the entity before the update. If they are null, only local cohort entities can be updated. If they are not null, they need to match the instance's metadata collection identifiers.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityHeader - unique identifier of entity to update
      entityTypeGUID - type of entity to create
      entityTypeName - name of the entity's type
      properties - properties for the entity
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • undoEntityUpdate

      public EntityDetail undoEntityUpdate(String userId, String externalSourceGUID, String externalSourceName, String updatedEntityGUID, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Undo the last update to the requested entity.
      Parameters:
      userId - unique identifier for requesting user.
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      updatedEntityGUID - String unique identifier (guid) for the entity.
      methodName - name of calling method
      Returns:
      recovered entity
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • getEntityDetailHistory

      public List<EntityDetail> getEntityDetailHistory(String userId, String guid, Date fromTime, Date toTime, int startingFrom, int pageSize, HistorySequencingOrder sequencingOrder, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return all historical versions of an entity within the bounds of the provided timestamps. To retrieve all historical versions of an entity, set both the 'fromTime' and 'toTime' to null.
      Parameters:
      userId - unique identifier for requesting user.
      guid - String unique identifier for the entity.
      fromTime - the earliest point in time from which to retrieve historical versions of the entity (inclusive)
      toTime - the latest point in time from which to retrieve historical versions of the entity (exclusive)
      startingFrom - the starting element number of the historical versions to return. This is used when retrieving versions beyond the first page of results. Zero means start from the first element.
      pageSize - the maximum number of result versions that can be returned on this request. Zero means unrestricted return results size.
      sequencingOrder - Enum defining how the results should be ordered.
      methodName - name of calling method
      Returns:
      list of versions of an entity
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • updateEntityStatus

      public void updateEntityStatus(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, EntityDetail entity, String entityTypeGUID, String entityTypeName, InstanceStatus instanceStatus, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update an existing entity status in the open metadata repository. The external source identifiers are used to validate the provenance of the entity before the update. If they are null, only local cohort entities can be updated. If they are not null, they need to match the instance's metadata collection identifiers.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityGUID - unique identifier of entity to update
      entity - current values of entity
      entityTypeGUID - type of entity to update
      entityTypeName - name of the entity's type
      instanceStatus - initial status (needs to be valid for type)
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Throws:
      InvalidParameterException - problem with the GUID
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • classifyEntity

      public EntityDetail classifyEntity(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, EntityDetail entityDetail, String entityGUIDParameterName, String entityTypeName, String classificationTypeGUID, String classificationTypeName, ClassificationOrigin classificationOrigin, String classificationOriginGUID, InstanceProperties properties, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Add a new classification to an existing entity in the open metadata repository.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source
      entityGUID - unique identifier of entity to update
      entityDetail - retrieved entity (maybe null)
      entityGUIDParameterName - parameter supplying entityGUID
      entityTypeName - type of entity
      classificationTypeGUID - type of classification to create
      classificationTypeName - name of the classification's type
      classificationOrigin - is this classification assigned or propagated?
      classificationOriginGUID - which entity did a propagated classification originate from?
      properties - properties for the classification
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      updated entity
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • reclassifyEntity

      public void reclassifyEntity(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, String entityGUIDParameterName, String entityTypeName, String classificationTypeGUID, String classificationTypeName, InstanceAuditHeader existingClassificationHeader, InstanceProperties newProperties, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Update the properties of an existing classification to an existing entity in the open metadata repository.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityGUID - unique identifier of entity to update
      entityGUIDParameterName - parameter supplying entityGUID
      entityTypeName - type of entity
      classificationTypeGUID - type of classification to create
      classificationTypeName - name of the classification's type
      existingClassificationHeader - current value of classification
      newProperties - properties for the classification
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Throws:
      InvalidParameterException - invalid parameters passed - probably GUID
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • declassifyEntity

      public void declassifyEntity(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, EntityDetail entity, String entityGUIDParameterName, String entityTypeName, String classificationTypeGUID, String classificationTypeName, InstanceAuditHeader existingClassificationHeader, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove an existing classification from an existing entity in the open metadata repository.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityGUID - unique identifier of entity to update
      entity - full entity bean
      entityGUIDParameterName - parameter name that passed the entityGUID
      entityTypeName - type of entity
      classificationTypeGUID - type of classification to create
      classificationTypeName - name of the classification's type
      existingClassificationHeader - current value of classification
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Throws:
      InvalidParameterException - one of the parameters is invalid = probably the GUID
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • removeEntity

      public void removeEntity(String userId, String externalSourceGUID, String externalSourceName, String obsoleteEntityGUID, String obsoleteEntityGUIDParameterName, String entityTypeGUID, String entityTypeName, String validatingPropertyName, String validatingProperty, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove an entity from the open metadata repository if the validating properties match. The external source identifiers are used to validate the provenance of the entity before the update. If they are null, only local cohort entities can be updated. If they are not null, they need to match the instance's metadata collection identifiers.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      obsoleteEntityGUID - unique identifier of the entity
      obsoleteEntityGUIDParameterName - name for unique identifier of the entity
      entityTypeGUID - type of entity to delete
      entityTypeName - name of the entity's type
      validatingPropertyName - name of property that should be in the entity if we have the correct one.
      validatingProperty - value of property that should be in the entity if we have the correct one.
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
      InvalidParameterException - mismatch on properties
    • removeEntity

      public void removeEntity(String userId, String externalSourceGUID, String externalSourceName, String obsoleteEntityGUID, String obsoleteEntityGUIDParameterName, String entityTypeGUID, String entityTypeName, String validatingPropertyName, String validatingProperty, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove an entity from the open metadata repository if the validating properties match. The external source identifiers are used to validate the provenance of the entity before the update. If they are null, only local cohort entities can be updated. If they are not null, they need to match the instance's metadata collection identifiers.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      obsoleteEntityGUID - unique identifier of the entity
      obsoleteEntityGUIDParameterName - name for unique identifier of the entity
      entityTypeGUID - type of entity to delete
      entityTypeName - name of the entity's type
      validatingPropertyName - name of property that should be in the entity if we have the correct one.
      validatingProperty - value of property that should be in the entity if we have the correct one.
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
      InvalidParameterException - mismatch on properties
    • removeEntityOnLastUse

      public void removeEntityOnLastUse(String userId, String externalSourceGUID, String externalSourceName, String obsoleteEntityGUID, String guidParameterName, String entityTypeGUID, String entityTypeName, boolean forLineage, boolean forDuplicateProcessing, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Remove an entity from the repository if it is no longer connected to any other entity.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      obsoleteEntityGUID - unique identifier of the entity
      guidParameterName - name of parameter that passed the entity guid
      entityTypeGUID - unique identifier for the entity's type
      entityTypeName - name of the entity's type
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      methodName - name of calling method
      Throws:
      InvalidParameterException - the entity guid is not known
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem accessing the property server
    • simpleDeleteEntity

      public void simpleDeleteEntity(String userId, String obsoleteEntityGUID, String entityTypeGUID, String entityTypeName, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Remove an entity from the open metadata repository without additional checks.
      Parameters:
      userId - calling user
      obsoleteEntityGUID - unique identifier of the entity
      entityTypeGUID - type of entity to delete
      entityTypeName - name of the entity's type
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • purgeEntity

      public void purgeEntity(String userId, String obsoleteEntityGUID, String entityTypeGUID, String entityTypeName, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Purge an entity stored in a repository that does not support delete.
      Parameters:
      userId - calling user
      obsoleteEntityGUID - unique identifier of the entity
      entityTypeGUID - type of entity to delete
      entityTypeName - name of the entity's type
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • restoreEntity

      public EntityDetail restoreEntity(String userId, String externalSourceGUID, String externalSourceName, String deletedEntityGUID, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Restore the requested entity to the state it was before it was deleted.
      Parameters:
      userId - unique identifier for requesting user.
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      deletedEntityGUID - String unique identifier (guid) for the entity.
      methodName - name of calling method
      Returns:
      restored entity
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • getEntitiesForType

      public List<EntityDetail> getEntitiesForType(String userId, String entityTypeGUID, String entityTypeName, List<InstanceStatus> limitResultsByStatus, List<String> limitResultsByClassification, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the list of entities of the requested type.
      Parameters:
      userId - user making the request
      entityTypeGUID - identifier for the entity's type
      entityTypeName - name for the entity's type
      limitResultsByStatus - only return elements that have the requested status (null means all statuses
      limitResultsByClassification - only return elements that have the requested classification(s)
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved entities or null
      Throws:
      PropertyServerException - problem accessing the property server
      UserNotAuthorizedException - security access problem
    • getEntityForRelationshipType

      public EntityDetail getEntityForRelationshipType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the entity at the other end of the requested relationship type. The assumption is that this is a 0..1 relationship so one entity (or null) is returned. If lots of relationships are found then the PropertyServerException is thrown.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      methodName - name of calling method
      Returns:
      retrieved entity or null
      Throws:
      InvalidParameterException - bad starting entity
      PropertyServerException - problem accessing the property server
      UserNotAuthorizedException - security access problem
    • getEntityForRelationshipType

      public EntityDetail getEntityForRelationshipType(String userId, EntityDetail startingEntity, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, String statusPropertyName, int statusThreshold, String returningEntityTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the entity at the other end of the requested relationship type. The assumption is that this is a 0..1 relationship so one entity (or null) is returned. If lots of relationships are found then the PropertyServerException is thrown.
      Parameters:
      userId - user making the request
      startingEntity - starting entity
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      statusPropertyName - name of the property to check that the status is acceptable
      statusThreshold - the value of status that the relationship property must be equal to or greater
      returningEntityTypeName - the type of the resulting entity
      attachmentEntityEnd - which relationship end should the attached entity be located? 0=either end; 1=end1; 2=end2
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved entity or null
      Throws:
      InvalidParameterException - bad starting entity
      PropertyServerException - problem accessing the property server
      UserNotAuthorizedException - security access problem
    • getEntitiesForRelationshipType

      @Deprecated public List<EntityDetail> getEntitiesForRelationshipType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, int startingFrom, int pageSize, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Deprecated.
      Return the list of entities at the other end of the requested relationship type. The returned entities will be from relationships that have an effective date of now.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      methodName - name of calling method
      Returns:
      retrieved entities or null
      Throws:
      InvalidParameterException - the bean properties are invalid
      PropertyServerException - problem accessing the property server
      UserNotAuthorizedException - security access problem
    • getEntitiesForRelationshipType

      public List<EntityDetail> getEntitiesForRelationshipType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, String sequencingPropertyName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of entities at the other end of the requested relationship type.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      sequencingPropertyName - name of property used to sequence the results - null means no sequencing
      attachmentEntityEnd - 0 means either end, 1 means only take from end 1, 2 means only take from end 2
      forLineage - the query is to support lineage retrieval
      forDuplicateProcessing - the query is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved entities or null
      Throws:
      InvalidParameterException - the bean properties are invalid
      PropertyServerException - problem accessing the property server
      UserNotAuthorizedException - security access problem
    • getEntitiesForClassificationType

      public List<EntityDetail> getEntitiesForClassificationType(String userId, String entityTypeGUID, String classificationName, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the list of entities by the requested classification type.
      Parameters:
      userId - user making the request
      entityTypeGUID - starting entity's GUID
      classificationName - type name for the classification to follow
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      PropertyServerException - problem accessing the property server
      UserNotAuthorizedException - security access problem
    • getEntitiesForRelationshipEnd

      public List<EntityDetail> getEntitiesForRelationshipEnd(String userId, String startEntityGUID, String startEntityTypeName, boolean startAtEnd1, String relationshipTypeGUID, String relationshipTypeName, int startingFrom, int pageSize, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of entities at the requested end of the requested relationship type.
      Parameters:
      userId - user making the request
      startEntityGUID - starting entity's GUID
      startEntityTypeName - starting entity's type name
      startAtEnd1 - indicates that the match of the starting entity must be at end 1 (otherwise it is at end two)
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      methodName - name of calling method
      Returns:
      retrieved entities or null
      Throws:
      InvalidParameterException - bad parameter - probably GUID
      PropertyServerException - problem accessing the property server
      UserNotAuthorizedException - security access problem
    • getOtherEnd

      public EntityProxy getOtherEnd(String startingEntityGUID, Relationship relationship)
      Return the entity proxy for the related entity.
      Parameters:
      startingEntityGUID - unique identifier of the starting entity
      relationship - relationship to another entity
      Returns:
      proxy to the other entity.
    • getOtherEnd

      public EntityProxy getOtherEnd(String startingEntityGUID, String startingEntityTypeName, Relationship relationship, int attachmentEntityEnd, String methodName) throws InvalidParameterException
      Return the entity proxy for the related entity.
      Parameters:
      startingEntityGUID - unique identifier of the starting entity
      startingEntityTypeName - type of the entity
      relationship - relationship to another entity
      attachmentEntityEnd - which relationship end should the attached entity be located? 0=either end; 1=end1; 2=end2
      methodName - calling method
      Returns:
      proxy to the other entity.
      Throws:
      InvalidParameterException - the type of the starting entity is incorrect
    • getEntityByGUID

      public EntityDetail getEntityByGUID(String userId, String guid, String guidParameterName, String entityTypeName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the requested entity, converting any errors from the repository services into the local OMAS exceptions.
      Parameters:
      userId - calling user
      guid - unique identifier for the entity
      guidParameterName - name of the guid parameter for error handling
      entityTypeName - expected type of the entity
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method name
      Returns:
      entity detail object
      Throws:
      InvalidParameterException - one of the parameters is null or invalid.
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • isEntityATypeOf

      public boolean isEntityATypeOf(String userId, String guid, String guidParameterName, String entityTypeName, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Test whether an entity is of a particular type or not.
      Parameters:
      userId - calling user
      guid - unique identifier of the entity.
      guidParameterName - name of the parameter containing the guid.
      entityTypeName - name of the type to test for
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      boolean flag
      Throws:
      InvalidParameterException - one of the parameters is null or invalid.
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getEntitiesByName

      public List<EntityDetail> getEntitiesByName(String userId, InstanceProperties nameProperties, String entityTypeGUID, String sequencingPropertyName, List<InstanceStatus> limitResultsByStatus, List<String> limitResultsByClassification, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the requested entity by name. The sequencing property name ensure that all elements are returned in the same order to ensure none are lost in the paging process.
      Parameters:
      userId - calling userId
      nameProperties - list of name properties to search on
      entityTypeGUID - unique identifier of the entity's type
      sequencingPropertyName - property name used to sequence the results
      limitResultsByStatus - only return elements that have the requested status (null means all statuses
      limitResultsByClassification - only return elements that have the requested classification(s)
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list
      pageSize - maximum number of definitions to return on this call
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getEntitiesByAllProperties

      public List<EntityDetail> getEntitiesByAllProperties(String userId, InstanceProperties properties, String entityTypeGUID, String sequencingPropertyName, List<InstanceStatus> limitResultsByStatus, List<String> limitResultsByClassification, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the entities that match all supplied properties.
      Parameters:
      userId - calling userId
      properties - list of name properties to search on.
      entityTypeGUID - unique identifier of the entity's type
      sequencingPropertyName - property name used to sequence the results
      limitResultsByStatus - only return elements that have the requested status (null means all statuses
      limitResultsByClassification - only return elements that have the requested classification(s)
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getEntitiesWithoutPropertyValues

      public List<EntityDetail> getEntitiesWithoutPropertyValues(String userId, InstanceProperties properties, String entityTypeGUID, String sequencingPropertyName, List<InstanceStatus> limitResultsByStatus, List<String> limitResultsByClassification, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the entities that match none of the supplied properties.
      Parameters:
      userId - calling userId
      properties - list of name properties to search on.
      entityTypeGUID - unique identifier of the entity's type
      sequencingPropertyName - name of property to use when sequencing results
      limitResultsByStatus - only return elements that have the requested status (null means all statuses
      limitResultsByClassification - only return elements that have the requested classification(s)
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getEntitiesByValue

      public List<EntityDetail> getEntitiesByValue(String userId, String propertyValue, String entityTypeGUID, String sequencingPropertyName, List<InstanceStatus> limitResultsByStatus, List<String> limitResultsByClassification, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the entities that match all supplied properties. The sequencing order is important if the caller is paging to ensure that all the results are returned.
      Parameters:
      userId - calling userId
      propertyValue - string value to search on - may be a RegEx
      entityTypeGUID - unique identifier of the entity's type
      limitResultsByStatus - only return elements that have the requested status (null means all statuses
      limitResultsByClassification - only return elements that have the requested classification(s)
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list
      sequencingPropertyName - name of property used to sequence the results - null means no sequencing
      pageSize - maximum number of definitions to return on this call
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getEntitiesByPropertyValue

      public List<EntityDetail> getEntitiesByPropertyValue(String userId, String entityTypeGUID, String searchCriteria, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date asOfTime, String sequencingProperty, SequencingOrder sequencingOrder, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the entities that match all supplied properties.
      Parameters:
      userId - calling user
      entityTypeGUID - unique identifier of the entity's type
      searchCriteria - String Java regular expression used to match against any of the String property values within entity instances of the specified type(s). This parameter must not be null.
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      asOfTime - Requests a historical query of the entity. Null means return the present values.
      sequencingOrder - Enum defining how the results should be ordered.
      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).
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getUniqueEntityByName

      public EntityDetail getUniqueEntityByName(String userId, String nameValue, String nameParameterName, InstanceProperties nameProperties, String entityTypeGUID, String entityTypeName, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the requested entity by name.
      Parameters:
      userId - calling userId
      nameValue - property name being searched for
      nameParameterName - name of parameter that passed the name value
      nameProperties - list of name properties to search on
      entityTypeGUID - type of entity to create
      entityTypeName - name of the entity's type
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getUniqueEntityByName

      public EntityDetail getUniqueEntityByName(String userId, String nameValue, String nameParameterName, InstanceProperties nameProperties, String entityTypeGUID, String entityTypeName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the requested entity by name.
      Parameters:
      userId - calling userId
      nameValue - property name being searched for
      nameParameterName - name of parameter that passed the name value
      nameProperties - list of name properties to search on
      entityTypeGUID - type of entity to retrieve
      entityTypeName - name of the entity's type
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getEntitiesByType

      public List<EntityDetail> getEntitiesByType(String userId, String entityTypeGUID, boolean forLineage, boolean forDuplicateProcessing, List<InstanceStatus> limitResultsByStatus, int startingFrom, int pageSize, Date asOfTime, String sequencingProperty, SequencingOrder sequencingOrder, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the requested entities that match the requested type.
      Parameters:
      userId - calling userId
      entityTypeGUID - type of entity required
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      limitResultsByStatus - By default, relationships in all non-DELETED statuses are returned. However, it is possible to specify a list of statuses (eg ACTIVE) to restrict the results to. Null means all status values except DELETED.
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      asOfTime - Requests a historical query of the entity. Null means return the present values.
      sequencingProperty - String name of the entity 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.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned entities - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • findEntities

      public List<EntityDetail> findEntities(String userId, String entityTypeGUID, List<String> entitySubtypeGUIDs, SearchProperties searchProperties, List<InstanceStatus> limitResultsByStatus, SearchClassifications searchClassifications, Date asOfTime, String sequencingProperty, SequencingOrder sequencingOrder, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return a list of entities that match the supplied criteria. The results can be returned over many pages.
      Parameters:
      userId - unique identifier for requesting user.
      entityTypeGUID - String unique identifier for the entity type of interest (null means any entity type).
      entitySubtypeGUIDs - optional list of the unique identifiers (guids) for subtypes of the entityTypeGUID 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 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 entity classifications to match.
      asOfTime - Requests a historical query of the entity. Null means return the present values.
      sequencingProperty - String name of the entity 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.
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      startingFrom - the starting element number of the entities to return. This is used when retrieving elements beyond the first page of results. Zero means start from the first element.
      pageSize - the maximum number of result entities that can be returned on this request. Zero means unrestricted return results size.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      a list of entities matching the supplied criteria; null means no matching entities in the metadata collection; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • findRelationships

      public List<Relationship> findRelationships(String userId, String relationshipTypeGUID, List<String> relationshipSubtypeGUIDs, SearchProperties searchProperties, List<InstanceStatus> limitResultsByStatus, Date asOfTime, String sequencingProperty, SequencingOrder sequencingOrder, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return a list of relationships that match the requested conditions. The results can be received as a series of pages.
      Parameters:
      userId - unique identifier for requesting user.
      relationshipTypeGUID - String unique identifier for the entity type of interest (null means any entity type).
      relationshipSubtypeGUIDs - optional list of the unique identifiers (guids) for subtypes of the relationshipTypeGUID 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 are returned. However, it is possible to specify a list of statuses (eg ACTIVE) to restrict the results to. Null means all status values.
      asOfTime - Requests a historical query of the entity. Null means return the present values.
      sequencingProperty - String name of the entity 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 - the starting element number of the entities to return. This is used when retrieving elements beyond the first page of results. Zero means start from the first element.
      pageSize - the maximum number of result entities that can be returned on this request. Zero means unrestricted return results size.
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      a list of relationships. Null means no matching relationships.
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • getRelationshipByGUID

      public Relationship getRelationshipByGUID(String userId, String relationshipGUID, String relationshipParameterName, String relationshipTypeName, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the current version of a requested relationship.
      Parameters:
      userId - user making the request
      relationshipGUID - unique identifier for the relationship
      relationshipParameterName - parameter name supplying relationshipGUID
      relationshipTypeName - type name for the relationship
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationship or exception
      Throws:
      InvalidParameterException - the GUID is invalid
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getRelationshipsByType

      public List<Relationship> getRelationshipsByType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of relationships of the requested type connected to the starting entity. The list is expected to be small.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      methodName - name of calling method
      Returns:
      retrieved relationships or null
      Throws:
      InvalidParameterException - the GUID is invalid
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getRelationshipsByType

      public List<Relationship> getRelationshipsByType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of relationships of the requested type connected to the starting entity. The list is expected to be small.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      attachmentEntityEnd - 0 means either end, 1 means only take from end 1, 2 means only take from end 2
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - is this call part of duplicate processing?
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationships or null
      Throws:
      InvalidParameterException - the starting entity GUID is invalid
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getRelationshipsByType

      public List<Relationship> getRelationshipsByType(String userId, EntityDetail startingEntity, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, String sequencingPropertyName, int startingFrom, int pageSize, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of relationships of the requested type connected to the starting entity. The list is expected to be small.
      Parameters:
      userId - user making the request
      startingEntity - starting entity
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      attachmentEntityEnd - 0 means either end, 1 means only take from end 1, 2 means only take from end 2
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - is this call part of duplicate processing?
      sequencingPropertyName - name of property used to sequence the results - null means no sequencing
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationships or null
      Throws:
      InvalidParameterException - bad parameters
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getRelationshipsForType

      public List<Relationship> getRelationshipsForType(String userId, String relationshipTypeGUID, String relationshipTypeName, List<InstanceStatus> limitResultsByStatus, int startingFrom, int pageSize, Date asOfTime, String sequencingProperty, SequencingOrder sequencingOrder, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the requested relationships that match the requested type.
      Parameters:
      userId - calling userId
      relationshipTypeGUID - type of relationship required
      relationshipTypeName - type of relationship required
      startingFrom - initial position in the stored list.
      pageSize - maximum number of definitions to return on this call.
      asOfTime - Requests a historical query of the relationship. Null means return the present values.
      sequencingProperty - String name of the relationship 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.
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Returns:
      list of returned relationship - null means no more to retrieve; list (even if empty) means more to receive
      Throws:
      UserNotAuthorizedException - user not authorized to issue this request.
      PropertyServerException - problem retrieving the entity.
    • countAttachedRelationshipsByType

      public int countAttachedRelationshipsByType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, PropertyServerException, UserNotAuthorizedException
      Count the number of relationships of a specific type attached to a starting entity.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      attachmentEntityEnd - 0 means either end, 1 means only take from end 1, 2 means only take from end 2
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      count of the number of relationships
      Throws:
      InvalidParameterException - the starting entity GUID is invalid
      UserNotAuthorizedException - user not authorized to issue this request
      PropertyServerException - problem accessing the property server
    • getRelationshipsBetweenEntities

      public List<Relationship> getRelationshipsBetweenEntities(String userId, String entity1GUID, String entity1TypeName, String entity2GUID, String relationshipTypeGUID, String relationshipTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of relationships of the requested type connecting the supplied entities.
      Parameters:
      userId - user making the request
      entity1GUID - entity at end 1 GUID
      entity1TypeName - entity 1's type name
      entity2GUID - entity at end 2 GUID
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      attachmentEntityEnd - 0 means either end, 1 means only take from end 1, 2 means only take from end 2
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationship or null
      Throws:
      InvalidParameterException - wrong type in entity 1
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getRelationshipsBetweenEntities

      public List<Relationship> getRelationshipsBetweenEntities(String userId, EntityDetail entity1Entity, String entity1TypeName, String entity2GUID, String relationshipTypeGUID, String relationshipTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, Date effectiveFrom, Date effectiveTo, boolean exactMatchOnEffectivityDates, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of relationships of the requested type connecting the supplied entities with matching effectivity dates.
      Parameters:
      userId - user making the request
      entity1Entity - entity at end 1
      entity1TypeName - entity 1's type name
      entity2GUID - entity at end 2 GUID
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      attachmentEntityEnd - 0 means either end, 1 means only take from end 1, 2 means only take from end 2
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveFrom - starting time for this relationship (null for all time)
      effectiveTo - ending time for this relationship (null for all time)
      exactMatchOnEffectivityDates - do the effectivity dates have to match exactly (ie this is for a create/update request) or is it enough that the retrieved effectivity data are equal or inside the supplied time period (as in a retrieve).
      methodName - name of calling method
      Returns:
      retrieved relationships or null
      Throws:
      InvalidParameterException - wrong type in entity 1; relationships found with incompatible effectivity dates
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getRelationshipBetweenEntities

      @Deprecated public Relationship getRelationshipBetweenEntities(String userId, String entity1GUID, String entity1TypeName, String entity2GUID, String relationshipTypeGUID, String relationshipTypeName, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Deprecated.
      Return the first found relationship of the requested type connecting the supplied entities.
      Parameters:
      userId - user making the request
      entity1GUID - entity at end 1 GUID
      entity1TypeName - entity 1's type name
      entity2GUID - entity at end 2 GUID
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      methodName - name of calling method
      Returns:
      retrieved relationship or null
      Throws:
      InvalidParameterException - wrong type in entity 1
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getRelationshipBetweenEntities

      public Relationship getRelationshipBetweenEntities(String userId, String entity1GUID, String entity1TypeName, String entity2GUID, String relationshipTypeGUID, String relationshipTypeName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the first found relationship of the requested type connecting the supplied entities.
      Parameters:
      userId - user making the request
      entity1GUID - entity at end 1 GUID
      entity1TypeName - entity 1's type name
      entity2GUID - entity at end 2 GUID
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationship or null
      Throws:
      InvalidParameterException - wrong type in entity 1
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getUniqueParentRelationshipByType

      public Relationship getUniqueParentRelationshipByType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, boolean parentAtEnd1, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the relationship of the requested type connected to the starting entity and where the starting entity is the logical child. The assumption is that this is a 0..1 relationship so the first matching relationship is returned (or null if there is none).
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      parentAtEnd1 - boolean flag to indicate which end has the parent element
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationship or null
      Throws:
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getUniqueRelationshipByType

      @Deprecated public Relationship getUniqueRelationshipByType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Deprecated.
      Return the relationship of the requested type connected to the starting entity. The assumption is that this is a 0..1 relationship so one relationship (or null) is returned. If lots of relationships are found then the PropertyServerException is thrown.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      methodName - name of calling method
      Returns:
      retrieved relationship or null
      Throws:
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getUniqueRelationshipByType

      public Relationship getUniqueRelationshipByType(String userId, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the relationship of the requested type connected to the starting entity. The assumption is that this is a 0..1 relationship so one relationship (or null) is returned. If lots of relationships are found then the PropertyServerException is thrown.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      attachmentEntityEnd - 0 means either end, 1 means only take from end 1, 2 means only take from end 2
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationship or null
      Throws:
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getUniqueRelationshipByType

      public Relationship getUniqueRelationshipByType(String userId, String startingEntityGUID, String startingEntityTypeName, boolean startAtEnd1, String relationshipTypeGUID, String relationshipTypeName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Return the list of relationships of the requested type connected to the starting entity where the starting entity is at the end indicated by the startAtEnd1 boolean parameter. The assumption is that this is a 0..1 relationship so one relationship (or null) is returned. If lots of relationships are found then the PropertyServerException is thrown.
      Parameters:
      userId - user making the request
      startingEntityGUID - starting entity's GUID
      startingEntityTypeName - starting entity's type name
      startAtEnd1 - is the starting entity at end 1 of the relationship
      relationshipTypeGUID - identifier for the relationship to follow
      relationshipTypeName - type name for the relationship to follow
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - is this part of duplicate processing?
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Returns:
      retrieved relationship or null
      Throws:
      InvalidParameterException - one of the guids is no longer available
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • createRelationship

      public Relationship createRelationship(String userId, String relationshipTypeGUID, String externalSourceGUID, String externalSourceName, String end1GUID, String end2GUID, InstanceProperties relationshipProperties, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Create a relationship between two entities. The value of external source GUID determines if it is local or remote.
      Parameters:
      userId - calling user
      relationshipTypeGUID - unique identifier of the relationship's type
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      end1GUID - entity to store at end 1
      end2GUID - entity to store at end 2
      relationshipProperties - properties for the relationship
      methodName - name of calling method
      Returns:
      Relationship structure with the new header, requested entities and properties or null.
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • ensureRelationship

      public void ensureRelationship(String userId, String end1TypeName, String externalSourceGUID, String externalSourceName, String end1GUID, String end2GUID, String relationshipTypeGUID, String relationshipTypeName, InstanceProperties relationshipProperties, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws InvalidParameterException, UserNotAuthorizedException, PropertyServerException
      Ensure a relationship exists between two entities. The setting of external source GUID determines if the relationship is external or not
      Parameters:
      userId - calling user
      end1TypeName - unique name of the end 1's type
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      end1GUID - entity to store at end 1
      end2GUID - entity to store at end 2
      relationshipTypeGUID - unique identifier of the relationship's type
      relationshipTypeName - unique name of the relationship's type
      relationshipProperties - properties for the relationship
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Throws:
      InvalidParameterException - type of end 1 is not correct
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • createExternalRelationship

      public void createExternalRelationship(String userId, String relationshipTypeGUID, String externalSourceGUID, String externalSourceName, String end1GUID, String end2GUID, InstanceProperties relationshipProperties, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Create a relationship from an external source between two entities.
      Parameters:
      userId - calling user
      relationshipTypeGUID - unique identifier of the relationship's type
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      end1GUID - entity to store at end 1
      end2GUID - entity to store at end 2
      relationshipProperties - properties for the relationship
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • removeRelationship

      public void removeRelationship(String userId, String externalSourceGUID, String externalSourceName, String relationshipTypeName, String relationshipGUID, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Delete a relationship between two entities. If delete is not supported, purge is used. The external source identifiers are used to validate the provenance of the entity before the update. If they are null, only local cohort entities can be updated. If they are not null, they need to match the instance's metadata collection identifiers.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      relationshipTypeName - name of the type of relationship to delete
      relationshipGUID - unique identifier of the relationship to delete
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • removeRelationship

      public void removeRelationship(String userId, String externalSourceGUID, String externalSourceName, Relationship relationship, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Delete a relationship between two entities. If delete is not supported, purge is used. The external source identifiers are used to validate the provenance of the entity before the update. If they are null, only local cohort entities can be updated. If they are not null, they need to match the instance's metadata collection identifiers.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      relationship - relationship to delete
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • purgeRelationship

      public void purgeRelationship(String userId, String relationshipTypeGUID, String relationshipTypeName, String relationshipGUID, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Purge a relationship between two entities. Used if delete fails.
      Parameters:
      userId - calling user
      relationshipTypeGUID - unique identifier of the type of relationship to delete
      relationshipTypeName - name of the type of relationship to delete
      relationshipGUID - unique identifier of the relationship to delete
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • restoreRelationship

      public void restoreRelationship(String userId, String externalSourceGUID, String externalSourceName, String deletedRelationshipGUID, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Restore the requested relationship to the state it was before it was deleted.
      Parameters:
      userId - unique identifier for requesting user.
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      deletedRelationshipGUID - String unique identifier (guid) for the relationship.
      methodName - name of calling method
      Throws:
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • removeAllRelationshipsOfType

      public void removeAllRelationshipsOfType(String userId, String externalSourceGUID, String externalSourceName, String startingEntityGUID, String startingEntityTypeName, String relationshipTypeGUID, String relationshipTypeName, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException, InvalidParameterException
      Remove all relationships of a certain type starting at a particular entity.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      startingEntityGUID - identifier of starting entity
      startingEntityTypeName - type of entity
      relationshipTypeGUID - unique identifier of the relationship type
      relationshipTypeName - unique name of the relationship type
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - is this processing part of duplicate processing?
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Throws:
      InvalidParameterException - bad parameter
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • removeRelationshipBetweenEntities

      public void removeRelationshipBetweenEntities(String userId, String externalSourceGUID, String externalSourceName, String relationshipTypeGUID, String relationshipTypeName, String entity1GUID, String entity1TypeName, String entity2GUID, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException, InvalidParameterException
      Delete a relationship between two specific entities. The relationship must have compatible provenance to allow the update to proceed.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      relationshipTypeGUID - unique identifier of the type of relationship to delete
      relationshipTypeName - name of the type of relationship to delete
      entity1GUID - unique identifier of the entity at end 1 of the relationship to delete
      entity1TypeName - type name of the entity at end 1 of the relationship to delete
      entity2GUID - unique identifier of the entity at end 1 of the relationship to delete
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method
      Throws:
      InvalidParameterException - type of entity 1 is not correct
      PropertyServerException - problem accessing property server
      UserNotAuthorizedException - security access problem
    • updateRelationshipProperties

      public Relationship updateRelationshipProperties(String userId, String externalSourceGUID, String externalSourceName, Relationship relationship, InstanceProperties relationshipProperties, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Update the properties in the requested relationship (if the proposed changes are different from the stored values).
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      relationship - relationship to update.
      relationshipProperties - new properties for relationship
      methodName - name of calling method.
      Returns:
      updated relationship
      Throws:
      PropertyServerException - there is a problem communicating with the repository.
      UserNotAuthorizedException - security access problem
    • updateRelationshipProperties

      public void updateRelationshipProperties(String userId, String externalSourceGUID, String externalSourceName, String relationshipGUID, InstanceProperties relationshipProperties, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Update the properties in the requested relationship. The relationship is retrieved first to validate the GUID and then updated if necessary (ie if the proposed changes are different from the stored values).
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      relationshipGUID - unique identifier of the relationship.
      relationshipProperties - new properties for relationship
      methodName - name of calling method.
      Throws:
      PropertyServerException - there is a problem communicating with the repository.
      UserNotAuthorizedException - security access problem
    • updateRelationshipStatus

      public void updateRelationshipStatus(String userId, String externalSourceGUID, String externalSourceName, String relationshipGUID, String relationshipParameterName, String relationshipTypeName, InstanceStatus instanceStatus, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Update the status in the requested relationship.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      relationshipGUID - unique identifier of the relationship.
      relationshipParameterName - parameter name supplying relationshipGUID
      relationshipTypeName - type name for the relationship
      instanceStatus - new InstanceStatus for the entity.
      methodName - name of calling method.
      Throws:
      PropertyServerException - there is a problem communicating with the repository.
      UserNotAuthorizedException - security access problem
    • updateUniqueRelationshipByType

      public void updateUniqueRelationshipByType(String userId, String externalSourceGUID, String externalSourceName, String end1GUID, String end1TypeName, String end2GUID, String end2TypeName, String relationshipTypeGUID, String relationshipTypeName, InstanceProperties properties, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Ensure that the unique relationship between two entities is established. It is possible that there is already a relationship of this type between either of the entities and another and so that needs to be removed first.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source.
      externalSourceName - unique name for the external source.
      end1GUID - unique identifier of the entity for end 1 of the relationship.
      end1TypeName - type of the entity for end 1
      end2GUID - unique identifier of the entity for end 2 of the relationship.
      end2TypeName - type of the entity for end 2
      relationshipTypeGUID - unique identifier of the type of relationship to create.
      relationshipTypeName - name of the type of relationship to create.
      properties - new properties to use
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - name of calling method.
      Throws:
      PropertyServerException - there is a problem communicating with the repository.
      UserNotAuthorizedException - security access problem
    • removeUniqueRelationshipByType

      public void removeUniqueRelationshipByType(String userId, String externalSourceGUID, String externalSourceName, String entityGUID, String entityTypeName, String relationshipTypeGUID, String relationshipTypeName, int attachmentEntityEnd, boolean forLineage, boolean forDuplicateProcessing, Date effectiveTime, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Remove the relationship connected to the supplied entity. Due to the definition of the relationship, only one is expected.
      Parameters:
      userId - calling user
      externalSourceGUID - unique identifier (guid) for the external source, or null for local.
      externalSourceName - unique name for the external source.
      entityGUID - unique identity of the starting entity.
      entityTypeName - type name of entity
      relationshipTypeGUID - unique identifier of the relationship's type
      relationshipTypeName - name of the relationship's type
      attachmentEntityEnd - which relationship end should the attached entity be located? 0=either end; 1=end1; 2=end2
      forLineage - the request is to support lineage retrieval this means entities with the Memento classification can be returned
      forDuplicateProcessing - the request is for duplicate processing and so must not deduplicate
      effectiveTime - the time that the retrieved elements must be effective for (null for any time, new Date() for now)
      methodName - calling method
      Throws:
      UserNotAuthorizedException - security access problem
      PropertyServerException - there is a problem communicating with the repository.
    • getEntityNeighborhood

      public InstanceGraph getEntityNeighborhood(String userId, String entityGUID, List<String> entityTypeGUIDs, List<String> relationshipTypeGUIDs, List<InstanceStatus> limitResultsByStatus, List<String> limitResultsByClassification, Date asOfTime, int level, String methodName) throws UserNotAuthorizedException, PropertyServerException
      Return the entities and relationships that radiate out from the supplied entity GUID. The results are scoped both the instance type guids and the level.
      Parameters:
      userId - unique identifier for requesting user.
      entityGUID - the starting point of the query.
      entityTypeGUIDs - list of entity types to include in the query results. Null means include all entities found, irrespective of their type.
      relationshipTypeGUIDs - list of relationship types to include in the query results. Null means include all relationships found, irrespective of their type.
      limitResultsByStatus - By default, relationships in all statuses are returned. However, it is possible to specify a list of statuses (eg ACTIVE) to restrict the results to. Null means all status values.
      limitResultsByClassification - List of classifications that must be present on all returned entities.
      asOfTime - Requests a historical query of the relationships for the entity. Null means return the present values.
      level - the number of the relationships out from the starting entity that the query will traverse to gather results.
      methodName - name of calling method.
      Returns:
      InstanceGraph the sub-graph that represents the returned linked entities and their relationships or null.
      Throws:
      UserNotAuthorizedException - security access problem
      PropertyServerException - problem accessing the property server
    • getMetadataCollection

      public OMRSMetadataCollection getMetadataCollection()
      Return the metadata collection for the repository. This is used by services that need function that is not supported by this class.
      Returns:
      metadata collection for the repository