http://git-wip-us.apache.org/repos/asf/atlas/blob/b0ecc36a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryHelper.java
----------------------------------------------------------------------
diff --git
a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryHelper.java
b/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryHelper.java
deleted file mode 100644
index e8f4662..0000000
---
a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryHelper.java
+++ /dev/null
@@ -1,1782 +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.repositorycontentmanager;
-
-
-import org.apache.atlas.omrs.ffdc.OMRSErrorCode;
-import org.apache.atlas.omrs.ffdc.exception.*;
-import org.apache.atlas.omrs.metadatacollection.properties.instances.*;
-import org.apache.atlas.omrs.metadatacollection.properties.typedefs.*;
-
-import java.util.*;
-
-/**
- * OMRSRepositoryHelper provides methods to repository connectors and
repository event mappers to help
- * them build valid type definitions (TypeDefs), entities and relationships.
It is a facade to the
- * repository content manager which holds an in memory cache of all the active
TypeDefs in the local server.
- * OMRSRepositoryHelper's purpose is to create a object that the repository
connectors and event mappers can
- * create, use and discard without needing to know how to connect to the
repository content manager.
- */
-public class OMRSRepositoryHelper implements OMRSTypeDefHelper,
OMRSInstanceHelper
-{
- private static OMRSRepositoryContentManager
defaultRepositoryContentManager = null;
-
- private OMRSRepositoryContentManager repositoryContentManager;
-
-
- /**
- * Set up the default local repository's content manager. This maintains
a cache of the local repository's type
- * definitions and rules to provide helpers and validators for TypeDefs
and instances that are
- * exchanged amongst the open metadata repositories and open metadata
access services (OMAS).
- *
- * @param repositoryContentManager - link to repository content manager.
- */
- public static synchronized void
setRepositoryContentManager(OMRSRepositoryContentManager
repositoryContentManager)
- {
- OMRSRepositoryHelper.defaultRepositoryContentManager =
repositoryContentManager;
- }
-
-
- /**
- * Default constructor uses the default repository content manager.
Repository connectors should use the
- * repository helper from their superclass.
- */
- @Deprecated
- public OMRSRepositoryHelper()
- {
- this.repositoryContentManager = defaultRepositoryContentManager;
- }
-
-
- /**
- * Creates a repository helper linked to the supplied repository content
manager.
- *
- * @param repositoryContentManager - object associated with the local
repository.
- */
- public OMRSRepositoryHelper(OMRSRepositoryContentManager
repositoryContentManager)
- {
- this.repositoryContentManager = repositoryContentManager;
- }
-
-
- /*
- * ========================
- * OMRSTypeDefHelper
- */
-
- /**
- * Return the list of typedefs active in the local repository.
- *
- * @return TypeDef gallery
- */
- public TypeDefGallery getActiveTypeDefGallery()
- {
- final String methodName = "getActiveTypeDefGallery";
-
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getActiveTypeDefGallery();
- }
-
-
- /**
- * Return the list of typedefs known by the local repository.
- *
- * @return TypeDef gallery
- */
- public TypeDefGallery getKnownTypeDefGallery()
- {
- final String methodName = "getKnownTypeDefGallery";
-
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getKnownTypeDefGallery();
- }
-
-
- /**
- * Return the TypeDef identified by the name supplied by the caller. This
is used in the connectors when
- * validating the actual types of the repository with the known open
metadata types - looking specifically
- * for types of the same name but with different content.
- *
- * @param sourceName - source of the request (used for logging)
- * @param typeDefName - unique name for the TypeDef
- * @return TypeDef object or null if TypeDef is not known.
- */
- public TypeDef getTypeDefByName(String sourceName,
- String typeDefName)
- {
- final String methodName = "getTypeDefByName";
-
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getTypeDefByName(sourceName,
typeDefName);
- }
-
-
- /**
- * Return the AttributeTypeDef identified by the name supplied by the
caller. This is used in the connectors when
- * validating the actual types of the repository with the known open
metadata types - looking specifically
- * for types of the same name but with different content.
- *
- * @param sourceName - source of the request (used for logging)
- * @param attributeTypeDefName - unique name for the TypeDef
- * @return AttributeTypeDef object or null if AttributeTypeDef is not
known.
- */
- public AttributeTypeDef getAttributeTypeDefByName(String sourceName,
- String
attributeTypeDefName)
- {
- final String methodName = "getAttributeTypeDefByName";
-
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getAttributeTypeDefByName(sourceName,
attributeTypeDefName);
- }
-
-
- /**
- * Return the TypeDefs identified by the name supplied by the caller. The
TypeDef name may have wild
- * card characters in it which is why the results are returned in a list.
- *
- * @param sourceName - source of the request (used for logging)
- * @param typeDefName - unique name for the TypeDef
- * @return TypeDef object or null if TypeDef is not known.
- */
- public TypeDefGallery getActiveTypesByWildCardName(String sourceName,
- String typeDefName)
- {
- final String methodName = "getActiveTypesByWildCardName";
-
- validateRepositoryContentManager(methodName);
-
- return
repositoryContentManager.getActiveTypesByWildCardName(sourceName, typeDefName);
- }
-
-
- /**
- * Return the TypeDef identified by the guid supplied by the caller. This
call is used when
- * retrieving a type that only the guid is known.
- *
- * @param sourceName - source of the request (used for logging)
- * @param parameterName - name of guid parameter
- * @param typeDefGUID - unique identifier for the TypeDef
- * @param methodName - calling method
- * @return TypeDef object
- * @throws TypeErrorException - unknown or invalid type
- */
- public TypeDef getTypeDef(String sourceName,
- String parameterName,
- String typeDefGUID,
- String methodName) throws TypeErrorException
- {
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getTypeDef(sourceName, parameterName,
typeDefGUID, methodName);
- }
-
-
- /**
- * Return the AttributeTypeDef identified by the guid and name supplied by
the caller. This call is used when
- * retrieving a type that only the guid is known.
- *
- * @param sourceName - source of the request (used for logging)
- * @param attributeTypeDefGUID - unique identifier for the AttributeTypeDef
- * @return TypeDef object
- * @throws TypeErrorException - unknown or invalid type
- */
- public AttributeTypeDef getAttributeTypeDef(String sourceName,
- String attributeTypeDefGUID,
- String methodName) throws
TypeErrorException
- {
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getAttributeTypeDef(sourceName,
attributeTypeDefGUID, methodName);
- }
-
-
- /**
- * Return the TypeDef identified by the guid and name supplied by the
caller. This call is used when
- * retrieving a type that should exist. For example, retrieving the type
of a metadata instance.
- *
- * @param sourceName - source of the request (used for logging)
- * @param guidParameterName - name of guid parameter
- * @param nameParameterName - name of type name parameter
- * @param typeDefGUID - unique identifier for the TypeDef
- * @param typeDefName - unique name for the TypeDef
- * @param methodName - calling method
- * @return TypeDef object
- * @throws TypeErrorException - unknown or invalid type
- */
- public TypeDef getTypeDef(String sourceName,
- String guidParameterName,
- String nameParameterName,
- String typeDefGUID,
- String typeDefName,
- String methodName) throws TypeErrorException
- {
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getTypeDef(sourceName,
- guidParameterName,
- nameParameterName,
- typeDefGUID,
- typeDefName,
- methodName);
- }
-
-
- /**
- * Return the AttributeTypeDef identified by the guid and name supplied by
the caller. This call is used when
- * retrieving a type that should exist. For example, retrieving the type
definition of a metadata instance's
- * property.
- *
- * @param sourceName - source of the request (used for logging)
- * @param attributeTypeDefGUID - unique identifier for the AttributeTypeDef
- * @param attributeTypeDefName - unique name for the AttributeTypeDef
- * @param methodName - calling method
- * @return TypeDef object
- * @throws TypeErrorException - unknown or invalid type
- */
- public AttributeTypeDef getAttributeTypeDef(String sourceName,
- String attributeTypeDefGUID,
- String attributeTypeDefName,
- String methodName) throws
TypeErrorException
- {
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getAttributeTypeDef(sourceName,
-
attributeTypeDefGUID,
-
attributeTypeDefName,
- methodName);
- }
-
-
- /**
- * Returns an updated TypeDef that has had the supplied patch applied. It
throws an exception if any part of
- * the patch is incompatible with the original TypeDef. For example, if
there is a mismatch between
- * the type or version that either represents.
- *
- * @param sourceName - source of the TypeDef (used for logging)
- * @param typeDefPatch - patch to apply
- * @param originalTypeDef - typeDef to patch
- * @return updated TypeDef
- * @throws PatchErrorException - the patch is either badly
formatted, or does not apply to the supplied TypeDef
- * @throws InvalidParameterException - the TypeDefPatch is null.
- */
- public TypeDef applyPatch(String sourceName,
- TypeDef originalTypeDef,
- TypeDefPatch typeDefPatch) throws
PatchErrorException,
-
InvalidParameterException
- {
- final String methodName = "applyPatch";
-
- validateRepositoryContentManager(methodName);
-
- TypeDef clonedTypeDef = null;
- TypeDef updatedTypeDef = null;
-
- /*
- * Begin with simple validation of the typeDef patch.
- */
- if (typeDefPatch != null)
- {
- // TODO invalid parameter exception
- }
-
- long newVersion = typeDefPatch.getUpdateToVersion();
- if (newVersion <= typeDefPatch.getApplyToVersion())
- {
- // TODO PatchError
- }
-
- TypeDefPatchAction patchAction = typeDefPatch.getAction();
- if (patchAction == null)
- {
- // TODO patch error
- }
-
-
- /*
- * Is the version compatible?
- */
- if (originalTypeDef.getVersion() != typeDefPatch.getApplyToVersion())
- {
- // TODO throw PatchException - incompatible versions
- }
-
- /*
- * OK to perform the update. Need to create a new TypeDef object.
TypeDef is an abstract class
- * so need to use the TypeDefCategory to create a new object of the
correct type.
- */
- TypeDefCategory category = originalTypeDef.getCategory();
- if (category == null)
- {
- // TODO Throw PatchError - base type is messed up
- }
-
- try
- {
- switch (category)
- {
- case ENTITY_DEF:
- clonedTypeDef = new EntityDef((EntityDef) originalTypeDef);
- break;
-
- case RELATIONSHIP_DEF:
- clonedTypeDef = new RelationshipDef((RelationshipDef)
originalTypeDef);
- break;
-
- case CLASSIFICATION_DEF:
- clonedTypeDef = new ClassificationDef((ClassificationDef)
originalTypeDef);
- break;
- }
- }
- catch (ClassCastException castError)
- {
- // TODO Throw PatchError - base type is messed up
- }
-
- /*
- * Now we have a new TypeDef - just need to make the changes. The
Action
- */
- if (clonedTypeDef != null)
- {
- switch (patchAction)
- {
- case ADD_ATTRIBUTES:
- updatedTypeDef =
this.patchTypeDefAttributes(clonedTypeDef, typeDefPatch.getTypeDefAttributes());
- break;
-
- case ADD_OPTIONS:
- updatedTypeDef =
this.patchTypeDefNewOptions(clonedTypeDef, typeDefPatch.getTypeDefOptions());
- break;
-
- case UPDATE_OPTIONS:
- updatedTypeDef =
this.patchTypeDefUpdateOptions(clonedTypeDef, typeDefPatch.getTypeDefOptions());
- break;
-
- case DELETE_OPTIONS:
- updatedTypeDef =
this.patchTypeDefDeleteOptions(clonedTypeDef, typeDefPatch.getTypeDefOptions());
- break;
-
- case ADD_EXTERNAL_STANDARDS:
- updatedTypeDef =
this.patchTypeDefAddExternalStandards(clonedTypeDef,
-
typeDefPatch.getExternalStandardMappings(),
-
typeDefPatch.getTypeDefAttributes());
- break;
-
- case UPDATE_EXTERNAL_STANDARDS:
- updatedTypeDef =
this.patchTypeDefUpdateExternalStandards(clonedTypeDef,
-
typeDefPatch.getExternalStandardMappings(),
-
typeDefPatch.getTypeDefAttributes());
- break;
-
- case DELETE_EXTERNAL_STANDARDS:
- updatedTypeDef =
this.patchTypeDefDeleteExternalStandards(clonedTypeDef,
-
typeDefPatch.getExternalStandardMappings(),
-
typeDefPatch.getTypeDefAttributes());
- break;
-
- case UPDATE_DESCRIPTIONS:
- updatedTypeDef =
this.patchTypeDefNewDescriptions(clonedTypeDef,
-
typeDefPatch.getDescription(),
-
typeDefPatch.getDescriptionGUID(),
-
typeDefPatch.getTypeDefAttributes());
- break;
- }
- }
-
-
- if (updatedTypeDef != null)
- {
- updatedTypeDef.setVersion(typeDefPatch.getUpdateToVersion());
- updatedTypeDef.setVersionName(typeDefPatch.getNewVersionName());
- }
-
- return updatedTypeDef;
- }
-
-
- /**
- * Add the supplied attributes to the properties definition for the cloned
typedef.
- *
- * @param clonedTypeDef - TypeDef object to update
- * @param typeDefAttributes - new attributes to add.
- * @return updated TypeDef
- * @throws PatchErrorException - problem adding attributes
- */
- private TypeDef patchTypeDefAttributes(TypeDef clonedTypeDef,
- List<TypeDefAttribute>
typeDefAttributes) throws PatchErrorException
- {
- List<TypeDefAttribute> propertyDefinitions =
clonedTypeDef.getPropertiesDefinition();
-
- if (propertyDefinitions == null)
- {
- propertyDefinitions = new ArrayList<>();
- }
-
- for (TypeDefAttribute newAttribute : typeDefAttributes)
- {
- if (newAttribute != null)
- {
- String attributeName =
newAttribute.getAttributeName();
- AttributeTypeDef attributeType =
newAttribute.getAttributeType();
-
- if ((attributeName != null) && (attributeType != null))
- {
- if (propertyDefinitions.contains(newAttribute))
- {
- // TODO Patch error - Duplicate Attribute
- }
- else
- {
- propertyDefinitions.add(newAttribute);
- }
- }
- else
- {
- // TODO Patch Error - Invalid Attribute in patch
- }
- }
- }
-
- if (propertyDefinitions.size() > 0)
- {
- clonedTypeDef.setPropertiesDefinition(propertyDefinitions);
- }
- else
- {
- clonedTypeDef.setPropertiesDefinition(null);
- }
-
- return clonedTypeDef;
- }
-
-
- /**
- * @param clonedTypeDef - TypeDef object to update
- * @param typeDefOptions - new options to add
- * @return updated TypeDef
- * @throws PatchErrorException - problem adding options
- */
- private TypeDef patchTypeDefNewOptions(TypeDef clonedTypeDef,
- Map<String, String> typeDefOptions)
throws PatchErrorException
- {
- // TODO
- return null;
- }
-
-
- /**
- * @param clonedTypeDef - TypeDef object to update
- * @param typeDefOptions - options to update
- * @return updated TypeDef
- * @throws PatchErrorException - problem updating options
- */
- private TypeDef patchTypeDefUpdateOptions(TypeDef clonedTypeDef,
- Map<String, String>
typeDefOptions) throws PatchErrorException
- {
- // TODO
- return null;
- }
-
-
- /**
- * @param clonedTypeDef - TypeDef object to update
- * @param typeDefOptions - options to delete
- * @return updated TypeDef
- * @throws PatchErrorException - problem deleting options
- */
- private TypeDef patchTypeDefDeleteOptions(TypeDef clonedTypeDef,
- Map<String, String>
typeDefOptions) throws PatchErrorException
- {
- // TODO
- return null;
- }
-
-
- /**
- * Add new mappings to external standards to the TypeDef.
- *
- * @param clonedTypeDef - TypeDef object to update
- * @param externalStandardMappings - new mappings to add
- * @return updated TypeDef
- * @throws PatchErrorException - problem adding mapping(s)
- */
- private TypeDef patchTypeDefAddExternalStandards(TypeDef clonedTypeDef,
-
List<ExternalStandardMapping> externalStandardMappings,
- List<TypeDefAttribute>
typeDefAttributes) throws PatchErrorException
- {
- // TODO
- return null;
- }
-
-
- /**
- * Update the supplied mappings from the TypeDef.
- *
- * @param clonedTypeDef - TypeDef object to update
- * @param externalStandardMappings - mappings to update
- * @return updated TypeDef
- * @throws PatchErrorException - problem updating mapping(s)
- */
- private TypeDef patchTypeDefUpdateExternalStandards(TypeDef clonedTypeDef,
-
List<ExternalStandardMapping> externalStandardMappings,
- List<TypeDefAttribute>
typeDefAttributes) throws PatchErrorException
- {
- // TODO
- return null;
- }
-
-
- /**
- * Delete the supplied mappings from the TypeDef.
- *
- * @param clonedTypeDef - TypeDef object to update
- * @param externalStandardMappings - list of mappings to delete
- * @return updated TypeDef
- * @throws PatchErrorException - problem deleting mapping(s)
- */
- private TypeDef patchTypeDefDeleteExternalStandards(TypeDef clonedTypeDef,
-
List<ExternalStandardMapping> externalStandardMappings,
- List<TypeDefAttribute>
typeDefAttributes) throws PatchErrorException
- {
- // TODO
- return null;
- }
-
-
- /**
- * Update the descriptions for the TypeDef or any of its attributes. If
the description values are null, they are
- * not changes in the TypeDef. This means there is no way to clear a
description - just update it for a better one.
- *
- * @param clonedTypeDef - TypeDef object to update
- * @param description - new description
- * @param descriptionGUID - new unique identifier for glossary term that
provides detailed description of TypeDef
- * @return updated TypeDef
- * @throws PatchErrorException - problem adding new description
- */
- private TypeDef patchTypeDefNewDescriptions(TypeDef clonedTypeDef,
- String description,
- String descriptionGUID,
- List<TypeDefAttribute>
typeDefAttributes) throws PatchErrorException
- {
- if (description != null)
- {
- clonedTypeDef.setDescription(description);
- }
- if (descriptionGUID != null)
- {
- clonedTypeDef.setDescriptionGUID(descriptionGUID);
- }
-
- if (typeDefAttributes != null)
- {
- List<TypeDefAttribute> propertiesDefinition =
clonedTypeDef.getPropertiesDefinition();
-
- if (propertiesDefinition == null)
- {
- // TODO throw patch error - attempting to Patch TypeDef with
no properties
- }
-
- for (TypeDefAttribute patchTypeDefAttribute : typeDefAttributes)
- {
- if (patchTypeDefAttribute != null)
- {
- String patchTypeDefAttributeName =
patchTypeDefAttribute.getAttributeName();
-
- if (patchTypeDefAttributeName != null)
- {
- for (TypeDefAttribute existingProperty :
propertiesDefinition)
- {
- if (existingProperty != null)
- {
- if
(patchTypeDefAttributeName.equals(existingProperty.getAttributeName()))
- {
-
- }
- }
- else
- {
- // TODO throw Patch Error because basic Type
is messed up
- }
- }
- }
- else
- {
- // TODO throw Patch Error null attribute name
- }
- }
- else
- {
- // TODO throw Patch Error null attribute included
- }
- }
- }
-
- return clonedTypeDef;
- }
-
- /*
- * ======================
- * OMRSInstanceHelper
- */
-
- /**
- * Return an entity with the header and type information filled out. The
caller only needs to add properties
- * and classifications to complete the set up of the entity.
- *
- * @param sourceName - source of the request (used for logging)
- * @param metadataCollectionId - unique identifier for the home metadata
collection
- * @param provenanceType - origin of the entity
- * @param userName - name of the creator
- * @param typeName - name of the type
- * @return partially filled out entity - needs classifications and
properties
- * @throws TypeErrorException - the type name is not recognized.
- */
- public EntityDetail getSkeletonEntity(String sourceName,
- String metadataCollectionId,
- InstanceProvenanceType
provenanceType,
- String userName,
- String typeName) throws
TypeErrorException
- {
- final String methodName = "getSkeletonEntity";
-
- validateRepositoryContentManager(methodName);
-
- EntityDetail entity = new EntityDetail();
- String guid = UUID.randomUUID().toString();
-
- entity.setInstanceProvenanceType(provenanceType);
- entity.setMetadataCollectionId(metadataCollectionId);
- entity.setCreateTime(new Date());
- entity.setGUID(guid);
- entity.setVersion(1L);
-
- entity.setType(repositoryContentManager.getInstanceType(sourceName,
TypeDefCategory.ENTITY_DEF, typeName, methodName));
- entity.setStatus(repositoryContentManager.getInitialStatus(sourceName,
typeName, methodName));
- entity.setCreatedBy(userName);
-
entity.setInstanceURL(repositoryContentManager.getEntityURL(sourceName, guid));
-
- return entity;
- }
-
-
- /**
- * Return a classification with the header and type information filled
out. The caller only needs to add properties
- * and possibility origin information if it is propagated to complete the
set up of the classification.
- *
- * @param sourceName - source of the request (used for logging)
- * @param userName - name of the creator
- * @param classificationTypeName - name of the classification type
- * @param entityTypeName - name of the type for the entity that
this classification is to be attached to.
- * @return partially filled out classification - needs properties and
possibly origin information
- * @throws TypeErrorException - the type name is not recognized as a
classification type.
- */
- public Classification getSkeletonClassification(String sourceName,
- String userName,
- String
classificationTypeName,
- String entityTypeName)
throws TypeErrorException
- {
- final String methodName = "getSkeletonClassification";
-
- validateRepositoryContentManager(methodName);
-
-
- if (repositoryContentManager.isValidTypeCategory(sourceName,
-
TypeDefCategory.CLASSIFICATION_DEF,
-
classificationTypeName,
- methodName))
- {
- if
(repositoryContentManager.isValidClassificationForEntity(sourceName,
-
classificationTypeName,
-
entityTypeName,
-
methodName))
- {
- Classification classification = new Classification();
-
- classification.setName(classificationTypeName);
- classification.setCreateTime(new Date());
- classification.setCreatedBy(userName);
- classification.setVersion(1L);
-
classification.setType(repositoryContentManager.getInstanceType(sourceName,
-
TypeDefCategory.CLASSIFICATION_DEF,
-
classificationTypeName,
-
methodName));
-
classification.setStatus(repositoryContentManager.getInitialStatus(sourceName,
-
classificationTypeName,
-
methodName));
-
- return classification;
- }
- else
- {
- OMRSErrorCode errorCode =
OMRSErrorCode.INVALID_CLASSIFICATION_FOR_ENTITY;
- String errorMessage = errorCode.getErrorMessageId()
- +
errorCode.getFormattedErrorMessage(classificationTypeName, entityTypeName);
-
- throw new TypeErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.UNKNOWN_CLASSIFICATION;
- String errorMessage = errorCode.getErrorMessageId()
- +
errorCode.getFormattedErrorMessage(classificationTypeName);
-
- throw new TypeErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
- }
-
-
- /**
- * Return a relationship with the header and type information filled out.
The caller only needs to add properties
- * to complete the set up of the relationship.
- *
- * @param sourceName - source of the request (used for logging)
- * @param metadataCollectionId - unique identifier for the home metadata
collection
- * @param provenanceType - origin type of the relationship
- * @param userName - name of the creator
- * @param typeName - name of the relationship's type
- * @return partially filled out relationship - needs properties
- * @throws TypeErrorException - the type name is not recognized as a
relationship type.
- */
- public Relationship getSkeletonRelationship(String sourceName,
- String metadataCollectionId,
- InstanceProvenanceType
provenanceType,
- String userName,
- String typeName) throws
TypeErrorException
- {
- final String methodName = "getSkeletonRelationship";
-
- validateRepositoryContentManager(methodName);
-
- Relationship relationship = new Relationship();
- String guid = UUID.randomUUID().toString();
-
- relationship.setInstanceProvenanceType(provenanceType);
- relationship.setMetadataCollectionId(metadataCollectionId);
- relationship.setCreateTime(new Date());
- relationship.setGUID(guid);
- relationship.setVersion(1L);
-
-
relationship.setType(repositoryContentManager.getInstanceType(sourceName,
-
TypeDefCategory.RELATIONSHIP_DEF,
- typeName,
-
methodName));
-
relationship.setStatus(repositoryContentManager.getInitialStatus(sourceName,
typeName, methodName));
- relationship.setCreatedBy(userName);
-
relationship.setInstanceURL(repositoryContentManager.getRelationshipURL(sourceName,
guid));
-
- return relationship;
- }
-
-
- /**
- * Return a relationship with the header and type information filled out.
The caller only needs to add properties
- * to complete the set up of the relationship.
- *
- * @param sourceName - source of the request (used for logging)
- * @param typeDefSummary - details of the new type
- * @return instance type
- * @throws TypeErrorException - the type name is not recognized as a
relationship type.
- */
- public InstanceType getNewInstanceType(String sourceName,
- TypeDefSummary typeDefSummary)
throws TypeErrorException
- {
- final String methodName = "getNewInstanceType";
-
- validateRepositoryContentManager(methodName);
-
- return repositoryContentManager.getInstanceType(sourceName,
-
typeDefSummary.getCategory(),
-
typeDefSummary.getName(),
- methodName);
- }
-
-
- /**
- * Return a filled out entity. It just needs to add the classifications.
- *
- * @param sourceName - source of the request (used for logging)
- * @param metadataCollectionId - unique identifier for the home metadata
collection
- * @param provenanceType - origin of the entity
- * @param userName - name of the creator
- * @param typeName - name of the type
- * @param properties - properties for the entity
- * @param classifications - list of classifications for the entity
- * @return an entity that is filled out
- * @throws TypeErrorException - the type name is not recognized as an
entity type
- */
- public EntityDetail getNewEntity(String sourceName,
- String metadataCollectionId,
- InstanceProvenanceType provenanceType,
- String userName,
- String typeName,
- InstanceProperties properties,
- List<Classification> classifications)
throws TypeErrorException
- {
- EntityDetail entity = this.getSkeletonEntity(sourceName,
- metadataCollectionId,
- provenanceType,
- userName,
- typeName);
-
- entity.setProperties(properties);
- entity.setClassifications(classifications);
-
- return entity;
- }
-
-
- /**
- * Return a filled out relationship - just needs the entity proxies added.
- *
- * @param sourceName - source of the request (used for logging)
- * @param metadataCollectionId - unique identifier for the home metadata
collection
- * @param provenanceType - origin of the relationship
- * @param userName - name of the creator
- * @param typeName - name of the type
- * @param properties - properties for the relationship
- * @return a relationship that is filled out
- * @throws TypeErrorException - the type name is not recognized as a
relationship type
- */
- public Relationship getNewRelationship(String sourceName,
- String metadataCollectionId,
- InstanceProvenanceType
provenanceType,
- String userName,
- String typeName,
- InstanceProperties properties)
throws TypeErrorException
- {
- Relationship relationship = this.getSkeletonRelationship(sourceName,
-
metadataCollectionId,
-
provenanceType,
- userName,
- typeName);
-
- relationship.setProperties(properties);
-
- return relationship;
- }
-
-
- /**
- * Return a classification with the header and type information filled
out. The caller only needs to add properties
- * to complete the set up of the classification.
- *
- * @param sourceName - source of the request (used for logging)
- * @param userName - name of the creator
- * @param typeName - name of the type
- * @param entityTypeName - name of the type for the entity that this
classification is to be attached to.
- * @param properties - properties for the classification
- * @return partially filled out classification - needs properties and
possibly origin information
- * @throws TypeErrorException - the type name is not recognized as a
classification type.
- */
- public Classification getNewClassification(String sourceName,
- String userName,
- String typeName,
- String entityTypeName,
- ClassificationOrigin
classificationOrigin,
- String classificationOriginGUID,
- InstanceProperties properties)
throws TypeErrorException
- {
- Classification classification =
this.getSkeletonClassification(sourceName,
-
userName,
-
typeName,
-
entityTypeName);
-
- classification.setClassificationOrigin(classificationOrigin);
- classification.setClassificationOriginGUID(classificationOriginGUID);
- classification.setProperties(properties);
-
- return classification;
- }
-
-
- /**
- * Add a classification to an existing entity.
- *
- * @param sourceName - source of the request (used for logging)
- * @param entity - entity to update
- * @param newClassification - classification to update
- * @param methodName - calling method
- * @return updated entity
- */
- public EntityDetail addClassificationToEntity(String sourceName,
- EntityDetail entity,
- Classification
newClassification,
- String methodName)
- {
- EntityDetail updatedEntity = new EntityDetail(entity);
-
- if (newClassification != null)
- {
- /*
- * Duplicate classifications are not allowed so a hash map is used
to remove duplicates.
- */
- HashMap<String, Classification> entityClassificationsMap = new
HashMap<>();
- List<Classification> entityClassifications =
updatedEntity.getClassifications();
-
- if (entityClassifications != null)
- {
- for (Classification existingClassification :
entityClassifications)
- {
- if (existingClassification != null)
- {
-
entityClassificationsMap.put(existingClassification.getName(),
existingClassification);
- }
- }
- }
-
- entityClassificationsMap.put(newClassification.getName(),
newClassification);
-
- if (entityClassificationsMap.isEmpty())
- {
- updatedEntity.setClassifications(null);
- }
- else
- {
- entityClassifications = new
ArrayList<>(entityClassificationsMap.values());
-
- updatedEntity.setClassifications(entityClassifications);
- }
-
- return updatedEntity;
- }
- else
- {
- final String thisMethodName = "addClassificationToEntity";
-
- OMRSErrorCode errorCode =
OMRSErrorCode.NULL_CLASSIFICATION_CREATED;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(sourceName,
-
thisMethodName,
-
methodName);
-
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
- }
-
-
- /**
- * Return the names classification from an existing entity.
- *
- * @param sourceName - source of the request (used for logging)
- * @param entity - entity to update
- * @param classificationName - classification to retrieve
- * @param methodName - calling method
- * @return located classification
- * @throws ClassificationErrorException - the classification is not
attached to the entity
- */
- public Classification getClassificationFromEntity(String sourceName,
- EntityDetail entity,
- String
classificationName,
- String methodName)
throws ClassificationErrorException
- {
- final String thisMethodName = "getClassificationFromEntity";
-
- if ((entity == null) || (classificationName == null))
- {
- OMRSErrorCode errorCode = OMRSErrorCode.VALIDATION_LOGIC_ERROR;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(sourceName,
-
thisMethodName,
-
methodName);
-
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
-
- List<Classification> entityClassifications =
entity.getClassifications();
-
- if (entityClassifications != null)
- {
- for (Classification entityClassification : entityClassifications)
- {
- if (classificationName.equals(entityClassification.getName()))
- {
- return entityClassification;
- }
- }
- }
-
- OMRSErrorCode errorCode = OMRSErrorCode.ENTITY_NOT_CLASSIFIED;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(methodName,
-
sourceName,
-
classificationName,
-
entity.getGUID());
- throw new ClassificationErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
-
-
- /**
- * Replace an existing classification with a new one
- *
- * @param sourceName - source of the request (used for logging)
- * @param userName - name of the editor
- * @param entity - entity to update
- * @param newClassification - classification to update
- * @param methodName - calling method
- * @return updated entity
- */
- public EntityDetail updateClassificationInEntity(String sourceName,
- String userName,
- EntityDetail entity,
- Classification
newClassification,
- String methodName)
- {
- if (newClassification != null)
- {
- Classification updatedClassification = new
Classification(newClassification);
-
- updatedClassification = incrementVersion(userName,
newClassification, updatedClassification);
-
- return this.addClassificationToEntity(sourceName, entity,
updatedClassification, methodName);
- }
- else
- {
- final String thisMethodName = "updateClassificationInEntity";
-
- OMRSErrorCode errorCode =
OMRSErrorCode.NULL_CLASSIFICATION_CREATED;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(sourceName,
-
thisMethodName,
-
methodName);
-
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
- }
-
-
- /**
- * Return a oldClassification with the header and type information filled
out. The caller only needs to add properties
- * to complete the set up of the oldClassification.
- *
- * @param sourceName - source of the request (used for logging)
- * @param entity - entity to update
- * @param oldClassificationName - classification to remove
- * @param methodName - calling method
- * @return updated entity
- * @throws ClassificationErrorException - the entity was not classified
with this classification
- */
- public EntityDetail deleteClassificationFromEntity(String sourceName,
- EntityDetail entity,
- String
oldClassificationName,
- String methodName)
throws ClassificationErrorException
- {
- EntityDetail updatedEntity = new EntityDetail(entity);
-
- if (oldClassificationName != null)
- {
- /*
- * Duplicate classifications are not allowed so a hash map is used
to remove duplicates.
- */
- HashMap<String, Classification> entityClassificationsMap = new
HashMap<>();
- List<Classification> entityClassifications =
updatedEntity.getClassifications();
-
- if (entityClassifications != null)
- {
- for (Classification existingClassification :
entityClassifications)
- {
- if (existingClassification != null)
- {
-
entityClassificationsMap.put(existingClassification.getName(),
existingClassification);
- }
- }
- }
-
- Classification oldClassification =
entityClassificationsMap.remove(oldClassificationName);
-
- if (oldClassification == null)
- {
- OMRSErrorCode errorCode = OMRSErrorCode.ENTITY_NOT_CLASSIFIED;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(methodName,
-
sourceName,
-
oldClassificationName,
-
entity.getGUID());
- throw new
ClassificationErrorException(errorCode.getHTTPErrorCode(),
-
this.getClass().getName(),
- methodName,
- errorMessage,
-
errorCode.getSystemAction(),
-
errorCode.getUserAction());
- }
-
- if (entityClassificationsMap.isEmpty())
- {
- entity.setClassifications(null);
- }
- else
- {
- entityClassifications = new
ArrayList<>(entityClassificationsMap.values());
-
- updatedEntity.setClassifications(entityClassifications);
- }
-
- return updatedEntity;
- }
- else
- {
- final String thisMethodName = "deleteClassificationFromEntity";
-
- OMRSErrorCode errorCode = OMRSErrorCode.NULL_CLASSIFICATION_NAME;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(sourceName,
-
thisMethodName,
-
methodName);
-
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
- }
-
-
- /**
- * Merge two sets of instance properties.
- *
- * @param sourceName - source of the request (used for logging)
- * @param existingProperties - current set of properties
- * @param newProperties - properties to add/update
- * @return merged properties
- */
- public InstanceProperties mergeInstanceProperties(String
sourceName,
- InstanceProperties
existingProperties,
- InstanceProperties
newProperties)
- {
- InstanceProperties mergedProperties;
-
- if (existingProperties == null)
- {
- mergedProperties = newProperties;
- }
- else
- {
- mergedProperties = existingProperties;
-
- if (newProperties != null)
- {
- Iterator<String> newPropertyNames =
newProperties.getPropertyNames();
-
- while (newPropertyNames.hasNext())
- {
- String newPropertyName = newPropertyNames.next();
-
- mergedProperties.setProperty(newPropertyName,
newProperties.getPropertyValue(newPropertyName));
- }
- }
- }
-
- return mergedProperties;
- }
-
-
- /**
- * Changes the control information to reflect an update in an instance.
- *
- * @param userId - user making the change.
- * @param originalInstance - original instance before the change
- * @param updatedInstance - new version of the instance that needs
updating
- */
- public Relationship incrementVersion(String userId,
- InstanceAuditHeader originalInstance,
- Relationship updatedInstance)
- {
- updatedInstance.setUpdatedBy(userId);
- updatedInstance.setUpdateTime(new Date());
-
- long currentVersion = originalInstance.getVersion();
- updatedInstance.setVersion(currentVersion++);
-
- return updatedInstance;
- }
-
-
- /**
- * Changes the control information to reflect an update in an instance.
- *
- * @param userId - user making the change.
- * @param originalInstance - original instance before the change
- * @param updatedInstance - new version of the instance that needs
updating
- */
- public Classification incrementVersion(String userId,
- InstanceAuditHeader
originalInstance,
- Classification updatedInstance)
- {
- updatedInstance.setUpdatedBy(userId);
- updatedInstance.setUpdateTime(new Date());
-
- long currentVersion = originalInstance.getVersion();
- updatedInstance.setVersion(currentVersion++);
-
- return updatedInstance;
- }
-
-
- /**
- * Changes the control information to reflect an update in an instance.
- *
- * @param userId - user making the change.
- * @param originalInstance - original instance before the change
- * @param updatedInstance - new version of the instance that needs
updating
- */
- public EntityDetail incrementVersion(String userId,
- InstanceAuditHeader originalInstance,
- EntityDetail updatedInstance)
- {
- updatedInstance.setUpdatedBy(userId);
- updatedInstance.setUpdateTime(new Date());
-
- long currentVersion = originalInstance.getVersion();
- updatedInstance.setVersion(currentVersion++);
-
- return updatedInstance;
- }
-
-
- /**
- * Generate an entity proxy from an entity and its TypeDef.
- *
- * @param sourceName - source of the request (used for logging)
- * @param entity - entity instance
- * @return - new entity proxy
- * @throws RepositoryErrorException - logic error in the repository -
corrupted entity
- */
- public EntityProxy getNewEntityProxy(String sourceName,
- EntityDetail entity) throws
RepositoryErrorException
- {
- final String methodName = "getNewEntityProxy";
- final String parameterName = "entity";
-
- validateRepositoryContentManager(methodName);
-
- if (entity != null)
- {
- InstanceType type = entity.getType();
-
- if (type != null)
- {
- try
- {
- TypeDef typeDef =
repositoryContentManager.getTypeDef(sourceName,
-
parameterName,
-
parameterName,
-
type.getTypeDefGUID(),
-
type.getTypeDefName(),
-
methodName);
-
- EntityProxy entityProxy = new
EntityProxy(entity);
- InstanceProperties entityProperties =
entity.getProperties();
- List<TypeDefAttribute> propertiesDefinition =
typeDef.getPropertiesDefinition();
- InstanceProperties uniqueAttributes = new
InstanceProperties();
-
- for (TypeDefAttribute typeDefAttribute :
propertiesDefinition)
- {
- if (typeDefAttribute != null)
- {
- String propertyName =
typeDefAttribute.getAttributeName();
-
- if ((typeDefAttribute.isUnique()) && (propertyName
!= null))
- {
- InstancePropertyValue propertyValue =
entityProperties.getPropertyValue(propertyName);
-
- if (propertyValue != null)
- {
- uniqueAttributes.setProperty(propertyName,
propertyValue);
- }
- }
- }
- }
-
- if (uniqueAttributes.getPropertyCount() > 0)
- {
- entityProxy.setUniqueProperties(uniqueAttributes);
- }
-
- return entityProxy;
- }
- catch (TypeErrorException error)
- {
- OMRSErrorCode errorCode =
OMRSErrorCode.REPOSITORY_LOGIC_ERROR;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(sourceName,
-
methodName,
-
error.getErrorMessage());
-
- throw new
RepositoryErrorException(errorCode.getHTTPErrorCode(),
-
this.getClass().getName(),
- methodName,
- errorMessage,
-
errorCode.getSystemAction(),
-
errorCode.getUserAction());
- }
- }
- }
-
- return null;
- }
-
-
- /**
- * Return boolean true if entity is linked by this relationship.
- *
- * @param sourceName - name of source requesting help
- * @param entityGUID - unique identifier of entity
- * @param relationship - relationship to test
- * @return boolean indicating whether the entity is mentioned in the
relationship
- */
- public boolean relatedEntity(String sourceName,
- String entityGUID,
- Relationship relationship)
- {
- if (relationship != null)
- {
- EntityProxy entityOneProxy = relationship.getEntityOneProxy();
- EntityProxy entityTwoProxy = relationship.getEntityTwoProxy();
-
- if (entityOneProxy != null)
- {
- if (entityGUID.equals(entityOneProxy.getGUID()))
- {
- return true;
- }
- }
-
- if (entityTwoProxy != null)
- {
- if (entityGUID.equals(entityTwoProxy.getGUID()))
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
-
- /**
- * Return the requested property or null if property is not found. If the
property is not
- * a string property then a logic exception is thrown
- *
- * @param sourceName - source of call
- * @param propertyName - name of requested property
- * @param properties - properties from the instance.
- * @param methodName - method of caller
- * @return string property value or null
- */
- public String getStringProperty(String sourceName,
- String propertyName,
- InstanceProperties properties,
- String methodName)
- {
- final String thisMethodName = "getStringProperty";
-
- if (properties != null)
- {
- InstancePropertyValue instancePropertyValue =
properties.getPropertyValue(propertyName);
-
- try
- {
- if (instancePropertyValue.getInstancePropertyCategory() ==
InstancePropertyCategory.PRIMITIVE)
- {
- PrimitivePropertyValue primitivePropertyValue =
(PrimitivePropertyValue) instancePropertyValue;
-
- if (primitivePropertyValue.getPrimitiveDefCategory() ==
PrimitiveDefCategory.OM_PRIMITIVE_TYPE_STRING)
- {
- return
primitivePropertyValue.getPrimitiveValue().toString();
- }
- }
- }
- catch (Throwable error)
- {
- throwHelperLogicError(sourceName, methodName, thisMethodName);
- }
- }
-
- return null;
- }
-
-
- /**
- * Return the requested property or null if property is not found. If the
property is not
- * a string property then a logic exception is thrown
- *
- * @param sourceName - source of call
- * @param propertyName - name of requested property
- * @param properties - properties from the instance.
- * @param methodName - method of caller
- * @return string property value or null
- */
- public InstanceProperties getMapProperty(String sourceName,
- String propertyName,
- InstanceProperties properties,
- String methodName)
- {
- final String thisMethodName = "getMapProperty";
-
- if (properties != null)
- {
- InstancePropertyValue instancePropertyValue =
properties.getPropertyValue(propertyName);
-
- try
- {
- if (instancePropertyValue.getInstancePropertyCategory() ==
InstancePropertyCategory.MAP)
- {
- MapPropertyValue mapPropertyValue = (MapPropertyValue)
instancePropertyValue;
-
- return mapPropertyValue.getMapValues();
- }
- }
- catch (Throwable error)
- {
- throwHelperLogicError(sourceName, methodName, thisMethodName);
- }
- }
-
- return null;
- }
-
-
- /**
- * Return the requested property or 0 if property is not found. If the
property is not
- * a int property then a logic exception is thrown
- *
- * @param sourceName - source of call
- * @param propertyName - name of requested property
- * @param properties - properties from the instance.
- * @param methodName - method of caller
- * @return string property value or null
- */
- public int getIntProperty(String sourceName,
- String propertyName,
- InstanceProperties properties,
- String methodName)
- {
- final String thisMethodName = "getIntProperty";
-
- if (properties != null)
- {
- InstancePropertyValue instancePropertyValue =
properties.getPropertyValue(propertyName);
-
- try
- {
- if (instancePropertyValue.getInstancePropertyCategory() ==
InstancePropertyCategory.PRIMITIVE)
- {
- PrimitivePropertyValue primitivePropertyValue =
(PrimitivePropertyValue) instancePropertyValue;
-
- if (primitivePropertyValue.getPrimitiveDefCategory() ==
PrimitiveDefCategory.OM_PRIMITIVE_TYPE_INT)
- {
- return
Integer.valueOf(primitivePropertyValue.getPrimitiveValue().toString());
- }
- }
- }
- catch (Throwable error)
- {
- throwHelperLogicError(sourceName, methodName, thisMethodName);
- }
- }
-
- return 0;
- }
-
-
- /**
- * Return the requested property or false if property is not found. If
the property is not
- * a boolean property then a logic exception is thrown
- *
- * @param sourceName - source of call
- * @param propertyName - name of requested property
- * @param properties - properties from the instance.
- * @param methodName - method of caller
- * @return string property value or null
- */
- public boolean getBooleanProperty(String sourceName,
- String propertyName,
- InstanceProperties properties,
- String methodName)
- {
- final String thisMethodName = "getBooleanProperty";
-
- if (properties != null)
- {
- InstancePropertyValue instancePropertyValue =
properties.getPropertyValue(propertyName);
-
- try
- {
- if (instancePropertyValue.getInstancePropertyCategory() ==
InstancePropertyCategory.PRIMITIVE)
- {
- PrimitivePropertyValue primitivePropertyValue =
(PrimitivePropertyValue) instancePropertyValue;
-
- if (primitivePropertyValue.getPrimitiveDefCategory() ==
PrimitiveDefCategory.OM_PRIMITIVE_TYPE_BOOLEAN)
- {
- return
Boolean.valueOf(primitivePropertyValue.getPrimitiveValue().toString());
- }
- }
- }
- catch (Throwable error)
- {
- throwHelperLogicError(sourceName, methodName, thisMethodName);
- }
- }
-
- return false;
- }
-
-
- /**
- * Add the supplied property to an instance properties object. If the
instance property object
- * supplied is null, a new instance properties object is created.
- *
- * @param sourceName - name of caller
- * @param properties - properties object to add property to - may be null.
- * @param propertyName - name of property
- * @param propertyValue - value of property
- * @param methodName - calling method name
- * @return instance properties object.
- */
- public InstanceProperties addStringPropertyToInstance(String
sourceName,
- InstanceProperties
properties,
- String
propertyName,
- String
propertyValue,
- String
methodName)
- {
- InstanceProperties resultingProperties;
-
- if (properties == null)
- {
- resultingProperties = new InstanceProperties();
- }
- else
- {
- resultingProperties = properties;
- }
-
-
- PrimitivePropertyValue primitivePropertyValue = new
PrimitivePropertyValue();
-
-
primitivePropertyValue.setPrimitiveDefCategory(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_STRING);
- primitivePropertyValue.setPrimitiveValue(propertyValue);
-
- resultingProperties.setProperty(propertyName, primitivePropertyValue);
-
- return resultingProperties;
- }
-
-
- /**
- * Add the supplied property to an instance properties object. If the
instance property object
- * supplied is null, a new instance properties object is created.
- *
- * @param sourceName - name of caller
- * @param properties - properties object to add property to - may be null.
- * @param propertyName - name of property
- * @param propertyValue - value of property
- * @param methodName - calling method name
- * @return instance properties object.
- */
- public InstanceProperties addIntPropertyToInstance(String
sourceName,
- InstanceProperties
properties,
- String
propertyName,
- int
propertyValue,
- String
methodName)
- {
- InstanceProperties resultingProperties;
-
- if (properties == null)
- {
- resultingProperties = new InstanceProperties();
- }
- else
- {
- resultingProperties = properties;
- }
-
-
- PrimitivePropertyValue primitivePropertyValue = new
PrimitivePropertyValue();
-
-
primitivePropertyValue.setPrimitiveDefCategory(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_INT);
- primitivePropertyValue.setPrimitiveValue(propertyValue);
-
- resultingProperties.setProperty(propertyName, primitivePropertyValue);
-
- return resultingProperties;
- }
-
-
- /**
- * Add the supplied property to an instance properties object. If the
instance property object
- * supplied is null, a new instance properties object is created.
- *
- * @param sourceName - name of caller
- * @param properties - properties object to add property to - may be null.
- * @param propertyName - name of property
- * @param propertyValue - value of property
- * @param methodName - calling method name
- * @return instance properties object.
- */
- public InstanceProperties addBooleanPropertyToInstance(String
sourceName,
- InstanceProperties
properties,
- String
propertyName,
- boolean
propertyValue,
- String
methodName)
- {
- InstanceProperties resultingProperties;
-
- if (properties == null)
- {
- resultingProperties = new InstanceProperties();
- }
- else
- {
- resultingProperties = properties;
- }
-
-
- PrimitivePropertyValue primitivePropertyValue = new
PrimitivePropertyValue();
-
-
primitivePropertyValue.setPrimitiveDefCategory(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_BOOLEAN);
- primitivePropertyValue.setPrimitiveValue(propertyValue);
-
- resultingProperties.setProperty(propertyName, primitivePropertyValue);
-
- return resultingProperties;
- }
-
-
- /**
- * Add the supplied property to an instance properties object. If the
instance property object
- * supplied is null, a new instance properties object is created.
- *
- * @param sourceName - name of caller
- * @param properties - properties object to add property to - may be null.
- * @param propertyName - name of property
- * @param ordinal - numeric value of property
- * @param symbolicName - String value of property
- * @param description - String description of property value
- * @param methodName - calling method name
- * @return instance properties object.
- */
- public InstanceProperties addEnumPropertyToInstance(String
sourceName,
- InstanceProperties
properties,
- String
propertyName,
- int
ordinal,
- String
symbolicName,
- String
description,
- String
methodName)
- {
- InstanceProperties resultingProperties;
-
- if (properties == null)
- {
- resultingProperties = new InstanceProperties();
- }
- else
- {
- resultingProperties = properties;
- }
-
-
- EnumPropertyValue enumPropertyValue = new EnumPropertyValue();
-
- enumPropertyValue.setOrdinal(ordinal);
- enumPropertyValue.setSymbolicName(symbolicName);
- enumPropertyValue.setDescription(description);
-
- resultingProperties.setProperty(propertyName, enumPropertyValue);
-
- return resultingProperties;
- }
-
-
- /**
- * Throws a logic error exception when the repository helper is called
with invalid parameters.
- * Normally this means the repository helper methods have been called in
the wrong order.
- *
- * @param sourceName - name of the calling repository or service
- * @param originatingMethodName - method that called the repository
validator
- * @param localMethodName - local method that deleted the error
- */
- private void throwHelperLogicError(String sourceName,
- String originatingMethodName,
- String localMethodName)
- {
- OMRSErrorCode errorCode = OMRSErrorCode.HELPER_LOGIC_ERROR;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage(sourceName,
-
localMethodName,
-
originatingMethodName);
-
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- localMethodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
-
-
- /**
- * Throw a logic error exception if this object does not have a repository
content manager.
- * This would occur if if is being used in an environment where the OMRS
has not been properly
- * initialized.
- *
- * @param methodName - name of calling method.
- */
- private void validateRepositoryContentManager(String methodName)
- {
- if (repositoryContentManager == null)
- {
- OMRSErrorCode errorCode =
OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() +
errorCode.getFormattedErrorMessage();
-
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
- }
-}