http://git-wip-us.apache.org/repos/asf/atlas/blob/b0ecc36a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositoryconnector/LocalOMRSMetadataCollection.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositoryconnector/LocalOMRSMetadataCollection.java b/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositoryconnector/LocalOMRSMetadataCollection.java deleted file mode 100644 index 5fe86a0..0000000 --- a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositoryconnector/LocalOMRSMetadataCollection.java +++ /dev/null @@ -1,4678 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.atlas.omrs.localrepository.repositoryconnector; - -import org.apache.atlas.omrs.eventmanagement.OMRSRepositoryEventProcessor; -import org.apache.atlas.omrs.ffdc.*; -import org.apache.atlas.omrs.ffdc.exception.*; -import org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryHelper; -import org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryValidator; -import org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSTypeDefManager; -import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection; -import org.apache.atlas.omrs.metadatacollection.properties.MatchCriteria; -import org.apache.atlas.omrs.metadatacollection.properties.SequencingOrder; -import org.apache.atlas.omrs.metadatacollection.properties.instances.*; -import org.apache.atlas.omrs.metadatacollection.properties.typedefs.*; - -import java.util.List; -import java.util.Date; - -/** - * LocalOMRSMetadataCollection provides a wrapper around the metadata collection for the real local repository. - * Its role is to manage outbound repository events and audit logging/debug for the real local repository. - */ -public class LocalOMRSMetadataCollection extends OMRSMetadataCollection -{ - private OMRSMetadataCollection realMetadataCollection; - private String localServerName; - private String localServerType; - private String localOrganizationName; - private OMRSRepositoryEventProcessor outboundRepositoryEventProcessor; - private OMRSTypeDefManager localTypeDefManager; - - - - /** - * Constructor used by LocalOMRSRepositoryConnector - * - * @param parentConnector - connector that this metadata collection supports. The connector has the information - * to call the metadata repository. - * @param repositoryName - name of the repository - used for logging. - * @param repositoryHelper - class used to build type definitions and instances. - * @param repositoryValidator - class used to validate type definitions and instances. - * @param metadataCollectionId - unique Identifier of the metadata collection Id. - * @param localServerName - name of the local server. - * @param localServerType - type of the local server. - * @param localOrganizationName - name of the organization that owns the local server. - * @param realMetadataCollection - metadata collection of the real local connector. - * @param outboundRepositoryEventProcessor - outbound event processor - * (may be null if a repository event mapper is deployed). - * @param typeDefManager - manager of in-memory cache of type definitions (TypeDefs). - */ - LocalOMRSMetadataCollection(LocalOMRSRepositoryConnector parentConnector, - String repositoryName, - OMRSRepositoryHelper repositoryHelper, - OMRSRepositoryValidator repositoryValidator, - String metadataCollectionId, - String localServerName, - String localServerType, - String localOrganizationName, - OMRSMetadataCollection realMetadataCollection, - OMRSRepositoryEventProcessor outboundRepositoryEventProcessor, - OMRSTypeDefManager typeDefManager) - { - /* - * The super class manages the local metadata collection id. This is a locally managed value. - */ - super(parentConnector, repositoryName, metadataCollectionId, repositoryHelper, repositoryValidator); - - /* - * Save the metadata collection object for the real repository. This is the metadata collection that - * does all of the work. LocalOMRSMetadataCollection is just a wrapper for managing repository events - * and debug and audit logging. - */ - if (realMetadataCollection == null) - { - final String actionDescription = "Local OMRS Metadata Collection Constructor"; - - OMRSErrorCode errorCode = OMRSErrorCode.NULL_LOCAL_METADATA_COLLECTION; - String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(); - - throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - actionDescription, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - this.realMetadataCollection = realMetadataCollection; - - /* - * Save the information needed to send repository events. - */ - this.localServerName = localServerName; - this.localServerType = localServerType; - this.localOrganizationName = localOrganizationName; - this.outboundRepositoryEventProcessor = outboundRepositoryEventProcessor; - this.localTypeDefManager = typeDefManager; - } - - - /* ====================================================================== - * Group 1: Confirm the identity of the metadata repository being called. - */ - - /** - * Returns the identifier of the metadata repository. This is the identifier used to register the - * metadata repository with the metadata repository cohort. It is also the identifier used to - * identify the home repository of a metadata instance. - * - * @return String - metadata collection id. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - */ - public String getMetadataCollectionId() throws RepositoryErrorException - { - final String methodName = "getMetadataCollectionId"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - /* - * Perform operation - */ - return super.metadataCollectionId; - } - - - /* ============================== - * Group 2: Working with typedefs - */ - - - /** - * Returns the list of different types of metadata organized into two groups. The first are the - * attribute type definitions (AttributeTypeDefs). These provide types for properties in full - * type definitions. Full type definitions (TypeDefs) describe types for entities, relationships - * and classifications. - * - * @param userId - unique identifier for requesting user. - * @return TypeDefs - Lists of different categories of TypeDefs. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public TypeDefGallery getAllTypes(String userId) throws RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "getAllTypes"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - - /* - * Perform operation - */ - return realMetadataCollection.getAllTypes(userId); - } - - - /** - * Returns a list of TypeDefs that have the specified name. TypeDef names should be unique. This - * method allows wildcard character to be included in the name. These are * (asterisk) for an arbitrary string of - * characters and ampersand for an arbitrary character. - * - * @param userId - unique identifier for requesting user. - * @param name - name of the TypeDefs to return (including wildcard characters). - * @return TypeDefs list. - * @throws InvalidParameterException - the name of the TypeDef is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public TypeDefGallery findTypesByName(String userId, - String name) throws InvalidParameterException, - RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "findTypesByName"; - final String nameParameterName = "name"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeName(repositoryName, nameParameterName, name, methodName); - - /* - * Perform operation - */ - return realMetadataCollection.findTypesByName(userId, name); - } - - - /** - * Returns all of the TypeDefs for a specific category. - * - * @param userId - unique identifier for requesting user. - * @param category - enum value for the category of TypeDef to return. - * @return TypeDefs list. - * @throws InvalidParameterException - the TypeDefCategory is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public List<TypeDef> findTypeDefsByCategory(String userId, - TypeDefCategory category) throws InvalidParameterException, - RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "findTypeDefsByCategory"; - final String categoryParameterName = "category"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDefCategory(repositoryName, categoryParameterName, category, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.findTypeDefsByCategory(userId, category); - } - - - /** - * Returns all of the AttributeTypeDefs for a specific category. - * - * @param userId - unique identifier for requesting user. - * @param category - enum value for the category of an AttributeTypeDef to return. - * @return TypeDefs list. - * @throws InvalidParameterException - the TypeDefCategory is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public List<AttributeTypeDef> findAttributeTypeDefsByCategory(String userId, - AttributeTypeDefCategory category) throws InvalidParameterException, - RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "findAttributeTypeDefsByCategory"; - final String categoryParameterName = "category"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateAttributeTypeDefCategory(repositoryName, categoryParameterName, category, methodName); - - /* - * Perform operation - */ - return realMetadataCollection.findAttributeTypeDefsByCategory(userId, category); - } - - - - /** - * Return the TypeDefs that have the properties matching the supplied match criteria. - * - * @param userId - unique identifier for requesting user. - * @param matchCriteria - TypeDefProperties - a list of property names and values. - * @return TypeDefs list. - * @throws InvalidParameterException - the matchCriteria is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public List<TypeDef> findTypeDefsByProperty(String userId, - TypeDefProperties matchCriteria) throws InvalidParameterException, - RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "findTypeDefsByProperty"; - final String matchCriteriaParameterName = "matchCriteria"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateMatchCriteria(repositoryName, matchCriteriaParameterName, matchCriteria, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.findTypeDefsByProperty(userId, matchCriteria); - } - - - /** - * Return the types that are linked to the elements from the specified standard. - * - * @param userId - unique identifier for requesting user. - * @param standard - name of the standard - null means any. - * @param organization - name of the organization - null means any. - * @param identifier - identifier of the element in the standard - null means any. - * @return TypeDefs list - each entry in the list contains a typedef. This is is a structure - * describing the TypeDef's category and properties. - * @throws InvalidParameterException - all attributes of the external id are null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public List<TypeDef> findTypesByExternalID(String userId, - String standard, - String organization, - String identifier) throws InvalidParameterException, - RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "findTypesByExternalID"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateExternalId(repositoryName, standard, organization, identifier, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.findTypesByExternalID(userId, standard, organization, identifier); - } - - /** - * Return the TypeDefs that match the search criteria. - * - * @param userId - unique identifier for requesting user. - * @param searchCriteria - String - search criteria. - * @return TypeDefs list - each entry in the list contains a typedef. This is is a structure - * describing the TypeDef's category and properties. - * @throws InvalidParameterException - the searchCriteria is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public List<TypeDef> searchForTypeDefs(String userId, - String searchCriteria) throws InvalidParameterException, - RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "searchForTypeDefs"; - final String searchCriteriaParameterName = "searchCriteria"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateSearchCriteria(repositoryName, searchCriteriaParameterName, searchCriteria, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.searchForTypeDefs(userId, searchCriteria); - } - - - /** - * Return the TypeDef identified by the GUID. - * - * @param userId - unique identifier for requesting user. - * @param guid - String unique id of the TypeDef - * @return TypeDef structure describing its category and properties. - * @throws InvalidParameterException - the guid is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - The requested TypeDef is not known in the metadata collection. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public TypeDef getTypeDefByGUID(String userId, - String guid) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - UserNotAuthorizedException - { - final String methodName = "getTypeDefByGUID"; - final String guidParameterName = "guid"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateGUID(repositoryName, guidParameterName, guid, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.getTypeDefByGUID(userId, guid); - } - - - /** - * Return the AttributeTypeDef identified by the GUID. - * - * @param userId - unique identifier for requesting user. - * @param guid - String unique id of the TypeDef - * @return TypeDef structure describing its category and properties. - * @throws InvalidParameterException - the guid is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - The requested TypeDef is not known in the metadata collection. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public AttributeTypeDef getAttributeTypeDefByGUID(String userId, - String guid) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - UserNotAuthorizedException - { - final String methodName = "getAttributeTypeDefByGUID"; - final String guidParameterName = "guid"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateGUID(repositoryName, guidParameterName, guid, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.getAttributeTypeDefByGUID(userId, guid); - } - - - /** - * Return the TypeDef identified by the unique name. - * - * @param userId - unique identifier for requesting user. - * @param name - String name of the TypeDef. - * @return TypeDef structure describing its category and properties. - * @throws InvalidParameterException - the name is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - the requested TypeDef is not found in the metadata collection. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public TypeDef getTypeDefByName(String userId, - String name) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - UserNotAuthorizedException - { - final String methodName = "getTypeDefByName"; - final String nameParameterName = "name"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeName(repositoryName, nameParameterName, name, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.getTypeDefByName(userId, name); - } - - - /** - * Return the AttributeTypeDef identified by the unique name. - * - * @param userId - unique identifier for requesting user. - * @param name - String name of the TypeDef. - * @return TypeDef structure describing its category and properties. - * @throws InvalidParameterException - the name is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - the requested TypeDef is not found in the metadata collection. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public AttributeTypeDef getAttributeTypeDefByName(String userId, - String name) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - UserNotAuthorizedException - { - final String methodName = "getAttributeTypeDefByName"; - final String nameParameterName = "name"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeName(repositoryName, nameParameterName, name, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.getAttributeTypeDefByName(userId, name); - } - - - /** - * Create a collection of related types. - * - * @param userId - unique identifier for requesting user. - * @param newTypes - TypeDefGalleryResponse structure describing the new AttributeTypeDefs and TypeDefs. - * @throws InvalidParameterException - the new TypeDef is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotSupportedException - the repository is not able to support this TypeDef. - * @throws TypeDefKnownException - the TypeDef is already stored in the repository. - * @throws TypeDefConflictException - the new TypeDef conflicts with an existing TypeDef. - * @throws InvalidTypeDefException - the new TypeDef has invalid contents. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public void addTypeDefGallery(String userId, - TypeDefGallery newTypes) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotSupportedException, - TypeDefKnownException, - TypeDefConflictException, - InvalidTypeDefException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "addTypeDefGallery"; - final String galleryParameterName = "newTypes"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDefGallery(repositoryName, galleryParameterName, newTypes, methodName); - - /* - * Perform operation - the gallery is passed to the real repository connector one type at a time - * to ensure the proper management and caching of types. - */ - List<AttributeTypeDef> attributeTypeDefs = newTypes.getAttributeTypeDefs(); - - if (attributeTypeDefs != null) - { - for (AttributeTypeDef attributeTypeDef : attributeTypeDefs) - { - this.addAttributeTypeDef(userId, attributeTypeDef); - } - } - - List<TypeDef> typeDefs = newTypes.getTypeDefs(); - - if (typeDefs != null) - { - for (TypeDef typeDef : typeDefs) - { - this.addTypeDef(userId, typeDef); - } - } - } - - - /** - * Create a definition of a new TypeDef. - * - * @param userId - unique identifier for requesting user. - * @param newTypeDef - TypeDef structure describing the new TypeDef. - * @throws InvalidParameterException - the new TypeDef is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotSupportedException - the repository is not able to support this TypeDef. - * @throws TypeDefKnownException - the TypeDef is already stored in the repository. - * @throws TypeDefConflictException - the new TypeDef conflicts with an existing TypeDef. - * @throws InvalidTypeDefException - the new TypeDef has invalid contents. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public void addTypeDef(String userId, - TypeDef newTypeDef) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotSupportedException, - TypeDefKnownException, - TypeDefConflictException, - InvalidTypeDefException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "addTypeDef"; - final String typeDefParameterName = "newTypeDef"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDef(repositoryName, typeDefParameterName, newTypeDef, methodName); - repositoryValidator.validateUnknownTypeDef(repositoryName, typeDefParameterName, newTypeDef, methodName); - - /* - * Perform operation - */ - - realMetadataCollection.addTypeDef(userId, newTypeDef); - - if (localTypeDefManager != null) - { - localTypeDefManager.addTypeDef(repositoryName, newTypeDef); - } - - if (outboundRepositoryEventProcessor != null) - { - outboundRepositoryEventProcessor.processNewTypeDefEvent(repositoryName, - metadataCollectionId, - localServerName, - localServerType, - localOrganizationName, - newTypeDef); - } - } - - /** - * Create a definition of a new AttributeTypeDef. - * - * @param userId - unique identifier for requesting user. - * @param newAttributeTypeDef - TypeDef structure describing the new TypeDef. - * @throws InvalidParameterException - the new TypeDef is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotSupportedException - the repository is not able to support this TypeDef. - * @throws TypeDefKnownException - the TypeDef is already stored in the repository. - * @throws TypeDefConflictException - the new TypeDef conflicts with an existing TypeDef. - * @throws InvalidTypeDefException - the new TypeDef has invalid contents. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public void addAttributeTypeDef(String userId, - AttributeTypeDef newAttributeTypeDef) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotSupportedException, - TypeDefKnownException, - TypeDefConflictException, - InvalidTypeDefException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "addAttributeTypeDef"; - final String typeDefParameterName = "newAttributeTypeDef"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateAttributeTypeDef(repositoryName, typeDefParameterName, newAttributeTypeDef, methodName); - repositoryValidator.validateUnknownAttributeTypeDef(repositoryName, typeDefParameterName, newAttributeTypeDef, methodName); - - /* - * Perform operation - */ - - realMetadataCollection.addAttributeTypeDef(userId, newAttributeTypeDef); - - if (localTypeDefManager != null) - { - localTypeDefManager.addAttributeTypeDef(repositoryName, newAttributeTypeDef); - } - - if (outboundRepositoryEventProcessor != null) - { - outboundRepositoryEventProcessor.processNewAttributeTypeDefEvent(repositoryName, - metadataCollectionId, - localServerName, - localServerType, - localOrganizationName, - newAttributeTypeDef); - } - } - - - /** - * Verify that a definition of a TypeDef is either new - or matches the definition already stored. - * - * @param userId - unique identifier for requesting user. - * @param typeDef - TypeDef structure describing the TypeDef to test. - * @return boolean - true means the TypeDef matches the local definition - false means the TypeDef is not known. - * @throws InvalidParameterException - the TypeDef is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotSupportedException - the repository is not able to support this TypeDef. - * @throws TypeDefConflictException - the new TypeDef conflicts with an existing TypeDef. - * @throws InvalidTypeDefException - the new TypeDef has invalid contents. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public boolean verifyTypeDef(String userId, - TypeDef typeDef) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotSupportedException, - TypeDefConflictException, - InvalidTypeDefException, - UserNotAuthorizedException - { - final String methodName = "verifyTypeDef"; - final String typeDefParameterName = "typeDef"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDef(repositoryName, typeDefParameterName, typeDef, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.verifyTypeDef(userId, typeDef); - } - - - /** - * Verify that a definition of an AttributeTypeDef is either new - or matches the definition already stored. - * - * @param userId - unique identifier for requesting user. - * @param attributeTypeDef - TypeDef structure describing the TypeDef to test. - * @return boolean - true means the TypeDef matches the local definition - false means the TypeDef is not known. - * @throws InvalidParameterException - the TypeDef is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotSupportedException - the repository is not able to support this TypeDef. - * @throws TypeDefConflictException - the new TypeDef conflicts with an existing TypeDef. - * @throws InvalidTypeDefException - the new TypeDef has invalid contents. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public boolean verifyAttributeTypeDef(String userId, - AttributeTypeDef attributeTypeDef) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotSupportedException, - TypeDefConflictException, - InvalidTypeDefException, - UserNotAuthorizedException - { - final String methodName = "verifyAttributeTypeDef"; - final String typeDefParameterName = "attributeTypeDef"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateAttributeTypeDef(repositoryName, typeDefParameterName, attributeTypeDef, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.verifyAttributeTypeDef(userId, attributeTypeDef); - } - - - /** - * Update one or more properties of the TypeDef. The TypeDefPatch controls what types of updates - * are safe to make to the TypeDef. - * - * @param userId - unique identifier for requesting user. - * @param typeDefPatch - TypeDef patch describing change to TypeDef. - * @return updated TypeDef - * @throws InvalidParameterException - the TypeDefPatch is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - the requested TypeDef is not found in the metadata collection. - * @throws PatchErrorException - the TypeDef can not be updated because the supplied patch is incompatible - * with the stored TypeDef. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public TypeDef updateTypeDef(String userId, - TypeDefPatch typeDefPatch) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - PatchErrorException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "updateTypeDef"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDefPatch(repositoryName, typeDefPatch, methodName); - - /* - * Perform operation - */ - - TypeDef updatedTypeDef = realMetadataCollection.updateTypeDef(userId, typeDefPatch); - - if (localTypeDefManager != null) - { - localTypeDefManager.updateTypeDef(repositoryName, updatedTypeDef); - } - - if (outboundRepositoryEventProcessor != null) - { - outboundRepositoryEventProcessor.processUpdatedTypeDefEvent(repositoryName, - metadataCollectionId, - localServerName, - localServerType, - localOrganizationName, - typeDefPatch); - } - - return updatedTypeDef; - } - - - /** - * Delete the TypeDef. This is only possible if the TypeDef has never been used to create instances or any - * instances of this TypeDef have been purged from the metadata collection. - * - * @param userId - unique identifier for requesting user. - * @param obsoleteTypeDefGUID - String unique identifier for the TypeDef. - * @param obsoleteTypeDefName - String unique name for the TypeDef. - * @throws InvalidParameterException - the one of TypeDef identifiers is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - the requested TypeDef is not found in the metadata collection. - * @throws TypeDefInUseException - the TypeDef can not be deleted because there are instances of this type in the - * the metadata collection. These instances need to be purged before the - * TypeDef can be deleted. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public void deleteTypeDef(String userId, - String obsoleteTypeDefGUID, - String obsoleteTypeDefName) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - TypeDefInUseException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "deleteTypeDef"; - final String guidParameterName = "obsoleteTypeDefGUID"; - final String nameParameterName = "obsoleteTypeDefName"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDefIds(repositoryName, - guidParameterName, - nameParameterName, - obsoleteTypeDefGUID, - obsoleteTypeDefName, - methodName); - - /* - * Perform operation - */ - - realMetadataCollection.deleteTypeDef(userId, - obsoleteTypeDefGUID, - obsoleteTypeDefName); - - if (localTypeDefManager != null) - { - localTypeDefManager.deleteTypeDef(repositoryName, - obsoleteTypeDefGUID, - obsoleteTypeDefName); - } - - if (outboundRepositoryEventProcessor != null) - { - outboundRepositoryEventProcessor.processDeletedTypeDefEvent(repositoryName, - metadataCollectionId, - localServerName, - localServerType, - localOrganizationName, - obsoleteTypeDefGUID, - obsoleteTypeDefName); - } - } - - - /** - * Delete an AttributeTypeDef. This is only possible if the AttributeTypeDef has never been used to create - * instances or any instances of this AttributeTypeDef have been purged from the metadata collection. - * - * @param userId - unique identifier for requesting user. - * @param obsoleteTypeDefGUID - String unique identifier for the AttributeTypeDef. - * @param obsoleteTypeDefName - String unique name for the AttributeTypeDef. - * @throws InvalidParameterException - the one of AttributeTypeDef identifiers is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - the requested AttributeTypeDef is not found in the metadata collection. - * @throws TypeDefInUseException - the AttributeTypeDef can not be deleted because there are instances of this type in the - * the metadata collection. These instances need to be purged before the - * AttributeTypeDef can be deleted. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public void deleteAttributeTypeDef(String userId, - String obsoleteTypeDefGUID, - String obsoleteTypeDefName) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - TypeDefInUseException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "deleteAttributeTypeDef"; - final String guidParameterName = "obsoleteTypeDefGUID"; - final String nameParameterName = "obsoleteTypeDefName"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateAttributeTypeDefIds(repositoryName, - guidParameterName, - nameParameterName, - obsoleteTypeDefGUID, - obsoleteTypeDefName, - methodName); - - /* - * Perform operation - */ - - realMetadataCollection.deleteAttributeTypeDef(userId, - obsoleteTypeDefGUID, - obsoleteTypeDefName); - - if (localTypeDefManager != null) - { - localTypeDefManager.deleteAttributeTypeDef(repositoryName, - obsoleteTypeDefGUID, - obsoleteTypeDefName); - } - - if (outboundRepositoryEventProcessor != null) - { - outboundRepositoryEventProcessor.processDeletedAttributeTypeDefEvent(repositoryName, - metadataCollectionId, - localServerName, - localServerType, - localOrganizationName, - obsoleteTypeDefGUID, - obsoleteTypeDefName); - } - } - - - /** - * Change the guid or name of an existing TypeDef to a new value. This is used if two different - * TypeDefs are discovered to have the same guid. This is extremely unlikely but not impossible so - * the open metadata protocol has provision for this. - * - * @param userId - unique identifier for requesting user. - * @param originalTypeDefGUID - the original guid of the TypeDef. - * @param originalTypeDefName - the original name of the TypeDef. - * @param newTypeDefGUID - the new identifier for the TypeDef. - * @param newTypeDefName - new name for this TypeDef. - * @return typeDef - new values for this TypeDef, including the new guid/name. - * @throws InvalidParameterException - one of the parameters is invalid or null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - the TypeDef identified by the original guid/name is not found - * in the metadata collection. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public TypeDef reIdentifyTypeDef(String userId, - String originalTypeDefGUID, - String originalTypeDefName, - String newTypeDefGUID, - String newTypeDefName) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "reIdentifyTypeDef"; - final String originalGUIDParameterName = "originalTypeDefGUID"; - final String originalNameParameterName = "originalTypeDefName"; - final String newGUIDParameterName = "newTypeDefGUID"; - final String newNameParameterName = "newTypeDefName"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDefIds(repositoryName, - originalGUIDParameterName, - originalNameParameterName, - originalTypeDefGUID, - originalTypeDefName, - methodName); - repositoryValidator.validateTypeDefIds(repositoryName, - newGUIDParameterName, - newNameParameterName, - newTypeDefGUID, - newTypeDefName, - methodName); - - /* - * Perform operation - */ - - TypeDef originalTypeDef = realMetadataCollection.getTypeDefByGUID(userId, originalTypeDefGUID); - - TypeDef newTypeDef = realMetadataCollection.reIdentifyTypeDef(userId, - originalTypeDefGUID, - originalTypeDefName, - newTypeDefGUID, - newTypeDefName); - - if (localTypeDefManager != null) - { - localTypeDefManager.reIdentifyTypeDef(repositoryName, - originalTypeDefGUID, - originalTypeDefName, - newTypeDef); - } - - if (outboundRepositoryEventProcessor != null) - { - outboundRepositoryEventProcessor.processReIdentifiedTypeDefEvent(repositoryName, - metadataCollectionId, - localServerName, - localServerType, - localOrganizationName, - originalTypeDef, - newTypeDef); - } - - return newTypeDef; - } - - - /** - * Change the guid or name of an existing TypeDef to a new value. This is used if two different - * TypeDefs are discovered to have the same guid. This is extremely unlikely but not impossible so - * the open metadata protocol has provision for this. - * - * @param userId - unique identifier for requesting user. - * @param originalAttributeTypeDefGUID - the original guid of the AttributeTypeDef. - * @param originalAttributeTypeDefName - the original name of the AttributeTypeDef. - * @param newAttributeTypeDefGUID - the new identifier for the AttributeTypeDef. - * @param newAttributeTypeDefName - new name for this AttributeTypeDef. - * @return attributeTypeDef - new values for this AttributeTypeDef, including the new guid/name. - * @throws InvalidParameterException - one of the parameters is invalid or null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws TypeDefNotKnownException - the AttributeTypeDef identified by the original guid/name is not - * found in the metadata collection. - * @throws FunctionNotSupportedException - the repository does not support this call. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public AttributeTypeDef reIdentifyAttributeTypeDef(String userId, - String originalAttributeTypeDefGUID, - String originalAttributeTypeDefName, - String newAttributeTypeDefGUID, - String newAttributeTypeDefName) throws InvalidParameterException, - RepositoryErrorException, - TypeDefNotKnownException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "reIdentifyAttributeTypeDef"; - final String originalGUIDParameterName = "originalAttributeTypeDefGUID"; - final String originalNameParameterName = "originalAttributeTypeDefName"; - final String newGUIDParameterName = "newAttributeTypeDefGUID"; - final String newNameParameterName = "newAttributeTypeDefName"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateTypeDefIds(repositoryName, - originalGUIDParameterName, - originalNameParameterName, - originalAttributeTypeDefGUID, - originalAttributeTypeDefName, - methodName); - repositoryValidator.validateTypeDefIds(repositoryName, - newGUIDParameterName, - newNameParameterName, - newAttributeTypeDefGUID, - newAttributeTypeDefName, - methodName); - - /* - * Perform operation - */ - - AttributeTypeDef originalAttributeTypeDef = realMetadataCollection.getAttributeTypeDefByGUID(userId, originalAttributeTypeDefGUID); - - AttributeTypeDef newAttributeTypeDef = realMetadataCollection.reIdentifyAttributeTypeDef(userId, - originalAttributeTypeDefGUID, - originalAttributeTypeDefName, - newAttributeTypeDefGUID, - newAttributeTypeDefName); - - if (localTypeDefManager != null) - { - localTypeDefManager.reIdentifyAttributeTypeDef(repositoryName, - originalAttributeTypeDefGUID, - originalAttributeTypeDefName, - newAttributeTypeDef); - } - - if (outboundRepositoryEventProcessor != null) - { - outboundRepositoryEventProcessor.processReIdentifiedAttributeTypeDefEvent(repositoryName, - metadataCollectionId, - localServerName, - localServerType, - localOrganizationName, - originalAttributeTypeDef, - newAttributeTypeDef); - } - - return newAttributeTypeDef; - } - - - - /* =================================================== - * Group 3: Locating entity and relationship instances - */ - - - /** - * Returns a boolean indicating if the entity is stored in the metadata collection. This entity may be a full - * entity object, or an entity proxy. - * - * @param userId - unique identifier for requesting user. - * @param guid - String unique identifier for the entity - * @return the entity details if the entity is found in the metadata collection; otherwise return null - * @throws InvalidParameterException - the guid is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public EntityDetail isEntityKnown(String userId, - String guid) throws InvalidParameterException, - RepositoryErrorException, - UserNotAuthorizedException - { - final String methodName = "isEntityKnown"; - final String guidParameterName = "guid"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateGUID(repositoryName, guidParameterName, guid, methodName); - - /* - * Perform operation - */ - - EntityDetail entity = realMetadataCollection.isEntityKnown(userId, guid); - - if (entity != null) - { - /* - * Ensure the provenance of the entity is correctly set. A repository may not support the storing of - * the metadata collection id in the repository (or uses null to mean "local"). When the entity - * detail is sent out, it must have its home metadata collection id set up. So LocalOMRSMetadataCollection - * fixes up the provenance. - */ - if (entity.getMetadataCollectionId() == null) - { - entity.setMetadataCollectionId(metadataCollectionId); - entity.setInstanceProvenanceType(InstanceProvenanceType.LOCAL_COHORT); - } - } - - return entity; - } - - - /** - * Return the header and classifications for a specific entity. The returned entity summary may be from - * a full entity object or an entity proxy. - * - * @param userId - unique identifier for requesting user. - * @param guid - String unique identifier for the entity - * @return EntitySummary structure - * @throws InvalidParameterException - the guid is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws EntityNotKnownException - the requested entity instance is not known in the metadata collection. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public EntitySummary getEntitySummary(String userId, - String guid) throws InvalidParameterException, - RepositoryErrorException, - EntityNotKnownException, - UserNotAuthorizedException - { - final String methodName = "getEntitySummary"; - final String guidParameterName = "guid"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateGUID(repositoryName, guidParameterName, guid, methodName); - - /* - * Perform operation - */ - - EntitySummary entity = realMetadataCollection.getEntitySummary(userId, guid); - - if (entity != null) - { - /* - * Ensure the provenance of the entity is correctly set. A repository may not support the storing of - * the metadata collection id in the repository (or uses null to mean "local"). When the entity - * detail is sent out, it must have its home metadata collection id set up. So LocalOMRSMetadataCollection - * fixes up the provenance. - */ - if (entity.getMetadataCollectionId() == null) - { - entity.setMetadataCollectionId(metadataCollectionId); - entity.setInstanceProvenanceType(InstanceProvenanceType.LOCAL_COHORT); - } - } - - return entity; - } - - - /** - * Return the header, classifications and properties of a specific entity. - * - * @param userId - unique identifier for requesting user. - * @param guid - String unique identifier for the entity. - * @return EntityDetail structure. - * @throws InvalidParameterException - the guid is null. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws EntityNotKnownException - the requested entity instance is not known in the metadata collection. - * @throws EntityProxyOnlyException - the requested entity instance is only a proxy in the metadata collection. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public EntityDetail getEntityDetail(String userId, - String guid) throws InvalidParameterException, - RepositoryErrorException, - EntityNotKnownException, - EntityProxyOnlyException, - UserNotAuthorizedException - { - final String methodName = "getEntityDetail"; - final String guidParameterName = "guid"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateGUID(repositoryName, guidParameterName, guid, methodName); - - /* - * Perform operation - */ - - EntityDetail entity = realMetadataCollection.getEntityDetail(userId, guid); - - if (entity != null) - { - /* - * Ensure the provenance of the entity is correctly set. A repository may not support the storing of - * the metadata collection id in the repository (or uses null to mean "local"). When the entity - * detail is sent out, it must have its home metadata collection id set up. So LocalOMRSMetadataCollection - * fixes up the provenance. - */ - if (entity.getMetadataCollectionId() == null) - { - entity.setMetadataCollectionId(metadataCollectionId); - entity.setInstanceProvenanceType(InstanceProvenanceType.LOCAL_COHORT); - } - } - - return entity; - } - - - /** - * Return a historical version of an entity - includes the header, classifications and properties of the entity. - * - * @param userId - unique identifier for requesting user. - * @param guid - String unique identifier for the entity. - * @param asOfTime - the time used to determine which version of the entity that is desired. - * @return EntityDetail structure. - * @throws InvalidParameterException - the guid or date is null or the date is for a future time. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws EntityNotKnownException - the requested entity instance is not known in the metadata collection - * at the time requested. - * @throws EntityProxyOnlyException - the requested entity instance is only a proxy in the metadata collection. - * @throws FunctionNotSupportedException - the repository does not support the asOfTime parameter. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public EntityDetail getEntityDetail(String userId, - String guid, - Date asOfTime) throws InvalidParameterException, - RepositoryErrorException, - EntityNotKnownException, - EntityProxyOnlyException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "getEntityDetail"; - final String guidParameterName = "guid"; - final String asOfTimeParameter = "asOfTime"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateGUID(repositoryName, guidParameterName, guid, methodName); - repositoryValidator.validateAsOfTime(repositoryName, asOfTimeParameter, asOfTime, methodName); - - /* - * Perform operation - */ - - EntityDetail entity = realMetadataCollection.getEntityDetail(userId, guid, asOfTime); - - if (entity != null) - { - /* - * Ensure the provenance of the entity is correctly set. A repository may not support the storing of - * the metadata collection id in the repository (or uses null to mean "local"). When the entity - * detail is sent out, it must have its home metadata collection id set up. So LocalOMRSMetadataCollection - * fixes up the provenance. - */ - if (entity.getMetadataCollectionId() == null) - { - entity.setMetadataCollectionId(metadataCollectionId); - entity.setInstanceProvenanceType(InstanceProvenanceType.LOCAL_COHORT); - } - } - - return entity; - } - - - /** - * Return the relationships for a specific entity. - * - * @param userId - unique identifier for requesting user. - * @param entityGUID - String unique identifier for the entity. - * @param relationshipTypeGUID - String GUID of the the type of relationship required (null for all). - * @param fromRelationshipElement - the starting element number of the relationships to return. - * This is used when retrieving elements - * beyond the first page of results. Zero means start from the first element. - * @param 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. - * @param asOfTime - Requests a historical query of the relationships for the entity. Null means return the - * present values. - * @param 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). - * @param sequencingOrder - Enum defining how the results should be ordered. - * @param pageSize -- the maximum number of result classifications that can be returned on this request. Zero means - * unrestricted return results size. - * @return Relationships list. Null means no relationships associated with the entity. - * @throws InvalidParameterException - a parameter is invalid or null. - * @throws TypeErrorException - the type guid passed on the request is not known by the - * metadata collection. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws EntityNotKnownException - the requested entity instance is not known in the metadata collection. - * @throws PropertyErrorException - the sequencing property is not valid for the attached classifications. - * @throws PagingErrorException - the paging/sequencing parameters are set up incorrectly. - * @throws FunctionNotSupportedException - the repository does not support the asOfTime parameter. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public List<Relationship> getRelationshipsForEntity(String userId, - String entityGUID, - String relationshipTypeGUID, - int fromRelationshipElement, - List<InstanceStatus> limitResultsByStatus, - Date asOfTime, - String sequencingProperty, - SequencingOrder sequencingOrder, - int pageSize) throws InvalidParameterException, - TypeErrorException, - RepositoryErrorException, - EntityNotKnownException, - PropertyErrorException, - PagingErrorException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "getRelationshipsForEntity"; - final String guidParameterName = "entityGUID"; - final String asOfTimeParameter = "asOfTime"; - final String typeGUIDParameter = "relationshipTypeGUID"; - final String pageSizeParameter = "pageSize"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateGUID(repositoryName, guidParameterName, entityGUID, methodName); - repositoryValidator.validateOptionalTypeGUID(repositoryName, typeGUIDParameter, relationshipTypeGUID, methodName); - repositoryValidator.validateAsOfTime(repositoryName, asOfTimeParameter, asOfTime, methodName); - repositoryValidator.validatePageSize(repositoryName, pageSizeParameter, pageSize, methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.getRelationshipsForEntity(userId, - entityGUID, - relationshipTypeGUID, - fromRelationshipElement, - limitResultsByStatus, - asOfTime, - sequencingProperty, - sequencingOrder, - pageSize); - } - - - /** - * Return a list of entities that match the supplied properties according to the match criteria. The results - * can be returned over many pages. - * - * @param userId - unique identifier for requesting user. - * @param entityTypeGUID - String unique identifier for the entity type of interest (null means any entity type). - * @param matchProperties - List of entity properties to match to (null means match on entityTypeGUID only). - * @param matchCriteria - Enum defining how the properties should be matched to the entities in the repository. - * @param fromEntityElement - 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. - * @param 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. - * @param limitResultsByClassification - List of classifications that must be present on all returned entities. - * @param asOfTime - Requests a historical query of the entity. Null means return the present values. - * @param 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). - * @param sequencingOrder - Enum defining how the results should be ordered. - * @param pageSize - the maximum number of result entities that can be returned on this request. Zero means - * unrestricted return results size. - * @return a list of entities matching the supplied criteria - null means no matching entities in the metadata - * collection. - * @throws InvalidParameterException - a parameter is invalid or null. - * @throws TypeErrorException - the type guid passed on the request is not known by the - * metadata collection. - * @throws RepositoryErrorException - there is a problem communicating with the metadata repository where - * the metadata collection is stored. - * @throws PropertyErrorException - the properties specified are not valid for any of the requested types of - * entity. - * @throws PagingErrorException - the paging/sequencing parameters are set up incorrectly. - * @throws FunctionNotSupportedException - the repository does not support the asOfTime parameter. - * @throws UserNotAuthorizedException - the userId is not permitted to perform this operation. - */ - public List<EntityDetail> findEntitiesByProperty(String userId, - String entityTypeGUID, - InstanceProperties matchProperties, - MatchCriteria matchCriteria, - int fromEntityElement, - List<InstanceStatus> limitResultsByStatus, - List<String> limitResultsByClassification, - Date asOfTime, - String sequencingProperty, - SequencingOrder sequencingOrder, - int pageSize) throws InvalidParameterException, - TypeErrorException, - RepositoryErrorException, - PropertyErrorException, - PagingErrorException, - FunctionNotSupportedException, - UserNotAuthorizedException - { - final String methodName = "findEntitiesByProperty"; - final String matchCriteriaParameterName = "matchCriteria"; - final String matchPropertiesParameterName = "matchProperties"; - final String guidParameterName = "entityTypeGUID"; - final String asOfTimeParameter = "asOfTime"; - final String pageSizeParameter = "pageSize"; - - /* - * Validate parameters - */ - this.validateRepositoryConnector(methodName); - parentConnector.validateRepositoryIsActive(methodName); - - repositoryValidator.validateUserId(repositoryName, userId, methodName); - repositoryValidator.validateOptionalTypeGUID(repositoryName, guidParameterName, entityTypeGUID, methodName); - repositoryValidator.validateAsOfTime(repositoryName, asOfTimeParameter, asOfTime, methodName); - repositoryValidator.validatePageSize(repositoryName, pageSizeParameter, pageSize, methodName); - repositoryValidator.validateMatchCriteria(repositoryName, - matchCriteriaParameterName, - matchPropertiesParameterName, - matchCriteria, - matchProperties, - methodName); - - /* - * Perform operation - */ - - return realMetadataCollection.findEntitiesByProperty(userId, - entityTypeGUID, - matchProperties, - matchCriteria, - fromEntityElement, - limitResultsByStatus, - limitResultsByClassification, - asOfTime, -
<TRUNCATED>