You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by da...@apache.org on 2018/04/06 08:28:15 UTC
[11/31] atlas git commit: ATLAS-2122 OMAG Server Application and OMRS
APIs
http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryValidator.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryValidator.java b/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryValidator.java
index 6a73a9d..d012cc9 100644
--- a/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryValidator.java
+++ b/omrs/src/main/java/org/apache/atlas/omrs/localrepository/repositorycontentmanager/OMRSRepositoryValidator.java
@@ -18,25 +18,51 @@
package org.apache.atlas.omrs.localrepository.repositorycontentmanager;
import org.apache.atlas.omrs.ffdc.OMRSErrorCode;
-import org.apache.atlas.omrs.ffdc.exception.OMRSLogicErrorException;
-import org.apache.atlas.omrs.metadatacollection.properties.instances.EntityDetail;
-import org.apache.atlas.omrs.metadatacollection.properties.instances.InstanceType;
-import org.apache.atlas.omrs.metadatacollection.properties.instances.Relationship;
-import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDef;
-import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefCategory;
-import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+import org.apache.atlas.omrs.ffdc.exception.*;
+import org.apache.atlas.omrs.metadatacollection.properties.MatchCriteria;
+import org.apache.atlas.omrs.metadatacollection.properties.instances.*;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.*;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector;
+import sun.misc.Regexp;
+import javax.lang.model.type.UnknownTypeException;
import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
/**
* OMRSRepositoryValidator provides methods to validate TypeDefs and Instances returned from
- * an open metadata repository. An instance can be created by any OMRS component, or OMRS adapter and
- * it will connect to the local repository's content manager to access the local type definitions (TypeDefs)
- * and rules.
+ * an open metadata repository. It is typically used by OMRS repository connectors and
+ * repository event mappers.
*/
public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstanceValidator
{
- private static OMRSRepositoryContentManager repositoryContentManager = null;
+ private static OMRSRepositoryContentManager defaultRepositoryContentManager = null;
+
+ private OMRSRepositoryContentManager repositoryContentManager;
+
+
+ /**
+ * Default constructor - deprecated as a repository connector should get its repository validator
+ * from its superclass.
+ */
+ @Deprecated
+ public OMRSRepositoryValidator()
+ {
+ repositoryContentManager = defaultRepositoryContentManager;
+ }
+
+
+ /**
+ * Typical constructor used by the OMRS to create a repository validator for a repository connector.
+ *
+ * @param repositoryContentManager - holds details of valid types and provides the implementation of
+ * the repository validator methods
+ */
+ public OMRSRepositoryValidator(OMRSRepositoryContentManager repositoryContentManager)
+ {
+ this.repositoryContentManager = repositoryContentManager;
+ }
/**
* Set up the local repository's content manager. This maintains a cache of the local repository's type
@@ -62,23 +88,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "getLocalTypeDefs()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.getLocalTypeDefs();
- }
- else
- {
- 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());
- }
+ validateRepositoryContentManager(methodName);
+ return repositoryContentManager.getLocalTypeDefs();
}
@@ -99,27 +111,14 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
* @param sourceName - name of the caller
* @param typeDefSummaries - list of summary information about the TypeDefs.
*/
- public void validateAgainstLocalTypeDefs(String sourceName,
- ArrayList<TypeDefSummary> typeDefSummaries)
+ public void validateAgainstLocalTypeDefs(String sourceName,
+ List<TypeDefSummary> typeDefSummaries)
{
final String methodName = "validateAgainstLocalTypeDefs()";
- if (repositoryContentManager != null)
- {
- repositoryContentManager.validateAgainstLocalTypeDefs(sourceName, typeDefSummaries);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ repositoryContentManager.validateAgainstLocalTypeDefs(sourceName, typeDefSummaries);
}
@@ -134,26 +133,13 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
* @return boolean flag
*/
public boolean validateEnterpriseTypeDefs(String sourceName,
- ArrayList<TypeDef> typeDefs)
+ List<TypeDef> typeDefs)
{
final String methodName = "validateEnterpriseTypeDefs()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validateEnterpriseTypeDefs(sourceName, typeDefs);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validateEnterpriseTypeDefs(sourceName, typeDefs);
}
@@ -169,22 +155,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "isActiveType()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.isActiveType(sourceName, typeDefGUID, typeDefName);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.isActiveType(sourceName, typeDefGUID, typeDefName);
}
/**
@@ -199,22 +172,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "isOpenType()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.isOpenType(sourceName, typeDefGUID, typeDefName);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.isOpenType(sourceName, typeDefGUID, typeDefName);
}
@@ -230,22 +190,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "isKnownType()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.isKnownType(sourceName, typeDefGUID, typeDefName);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.isKnownType(sourceName, typeDefGUID, typeDefName);
}
@@ -263,24 +210,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "validTypeId()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validTypeId(sourceName,
- typeDefGUID,
- typeDefName);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validTypeId(sourceName, typeDefGUID, typeDefName);
}
@@ -293,35 +225,44 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
* @param category - category for the TypeDef
* @return boolean result
*/
- public boolean validTypeId(String sourceName,
- String typeDefGUID,
- String typeDefName,
- TypeDefCategory category)
+ public boolean validTypeDefId(String sourceName,
+ String typeDefGUID,
+ String typeDefName,
+ TypeDefCategory category)
{
- final String methodName = "validTypeId()";
+ final String methodName = "validTypeDefId()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validTypeId(sourceName,
- typeDefGUID,
- typeDefName,
- category);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validTypeDefId(sourceName, typeDefGUID, typeDefName, category);
+ }
+
+ /**
+ * Return boolean indicating whether the AttributeTypeDef identifiers are from a single known type or not.
+ *
+ * @param sourceName - source of the request (used for logging)
+ * @param attributeTypeDefGUID - unique identifier of the AttributeTypeDef
+ * @param attributeTypeDefName - unique name of the AttributeTypeDef
+ * @param category - category for the AttributeTypeDef
+ * @return boolean result
+ */
+ public boolean validAttributeTypeDefId(String sourceName,
+ String attributeTypeDefGUID,
+ String attributeTypeDefName,
+ AttributeTypeDefCategory category)
+ {
+ final String methodName = "validAttributeTypeDefId()";
+
+ validateRepositoryContentManager(methodName);
+
+ return repositoryContentManager.validAttributeTypeDefId(sourceName,
+ attributeTypeDefGUID,
+ attributeTypeDefName,
+ category);
}
+
/**
* Return boolean indicating whether the TypeDef identifiers are from a single known type or not.
*
@@ -332,37 +273,53 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
* @param category - category for the TypeDef
* @return boolean result
*/
- public boolean validTypeId(String sourceName,
- String typeDefGUID,
- String typeDefName,
- long typeDefVersion,
- TypeDefCategory category)
+ public boolean validTypeDefId(String sourceName,
+ String typeDefGUID,
+ String typeDefName,
+ long typeDefVersion,
+ TypeDefCategory category)
{
- final String methodName = "validTypeId()";
+ final String methodName = "validTypeDefId()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validTypeId(sourceName,
- typeDefGUID,
- typeDefName,
- typeDefVersion,
- category);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validTypeDefId(sourceName,
+ typeDefGUID,
+ typeDefName,
+ typeDefVersion,
+ category);
+ }
+
+
+ /**
+ * Return boolean indicating whether the TypeDef identifiers are from a single known type or not.
+ *
+ * @param sourceName - source of the request (used for logging)
+ * @param attributeTypeDefGUID - unique identifier of the TypeDef
+ * @param attributeTypeDefName - unique name of the TypeDef
+ * @param attributeTypeDefVersion - versionName of the type
+ * @param category - category for the TypeDef
+ * @return boolean result
+ */
+ public boolean validAttributeTypeDefId(String sourceName,
+ String attributeTypeDefGUID,
+ String attributeTypeDefName,
+ long attributeTypeDefVersion,
+ AttributeTypeDefCategory category)
+ {
+ final String methodName = "validAttributeTypeDefId()";
+
+ validateRepositoryContentManager(methodName);
+
+ return repositoryContentManager.validAttributeTypeDefId(sourceName,
+ attributeTypeDefGUID,
+ attributeTypeDefName,
+ attributeTypeDefVersion,
+ category);
}
+
/**
* Return boolean indicating whether the supplied TypeDef is valid or not.
*
@@ -373,24 +330,29 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
public boolean validTypeDef(String sourceName,
TypeDef typeDef)
{
- final String methodName = "validTypeDef()";
+ final String methodName = "validTypeDef()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validTypeDef(sourceName, typeDef);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validTypeDef(sourceName, typeDef);
+ }
+
+
+ /**
+ * Return boolean indicating whether the supplied AttributeTypeDef is valid or not.
+ *
+ * @param sourceName - source of the request (used for logging)
+ * @param attributeTypeDef - TypeDef to test
+ * @return boolean result
+ */
+ public boolean validAttributeTypeDef(String sourceName,
+ AttributeTypeDef attributeTypeDef)
+ {
+ final String methodName = "validAttributeTypeDef()";
+
+ validateRepositoryContentManager(methodName);
+
+ return repositoryContentManager.validAttributeTypeDef(sourceName, attributeTypeDef);
}
@@ -406,22 +368,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "validTypeDefSummary()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validTypeDefSummary(sourceName, typeDefSummary);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validTypeDefSummary(sourceName, typeDefSummary);
}
@@ -437,22 +386,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "validEntity()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validEntity(sourceName, entity);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validEntity(sourceName, entity);
}
@@ -468,22 +404,9 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "validRelationship()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validRelationship(sourceName, relationship);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
- errorCode.getUserAction());
- }
+ return repositoryContentManager.validRelationship(sourceName, relationship);
}
@@ -505,25 +428,2403 @@ public class OMRSRepositoryValidator implements OMRSTypeDefValidator, OMRSInstan
{
final String methodName = "validInstanceId()";
- if (repositoryContentManager != null)
- {
- return repositoryContentManager.validInstanceId(sourceName,
- typeDefGUID,
- typeDefName,
- category,
- instanceGUID);
- }
- else
- {
- OMRSErrorCode errorCode = OMRSErrorCode.LOCAL_REPOSITORY_CONFIGURATION_ERROR;
- String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+ validateRepositoryContentManager(methodName);
- throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
- this.getClass().getName(),
- methodName,
- errorMessage,
- errorCode.getSystemAction(),
+ return repositoryContentManager.validInstanceId(sourceName,
+ typeDefGUID,
+ typeDefName,
+ category,
+ instanceGUID);
+ }
+
+ /* ==============================================================
+ * Simple parameter validation methods needed by all repositories
+ * ==============================================================
+ */
+
+
+ /**
+ * Validate that the supplied user Id is not null.
+ *
+ * @param userId - userId passed on call to this metadata collection
+ * @param methodName - name of method requesting the validation.
+ * @throws UserNotAuthorizedException - the userId is invalid
+ */
+ public void validateUserId(String repositoryName,
+ String userId,
+ String methodName) throws UserNotAuthorizedException
+ {
+ if ("".equals(userId))
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_USER_ID;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage("userId", methodName, repositoryName);
+
+ throw new UserNotAuthorizedException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a TypeDef's identifiers are not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param guidParameterName - name of the parameter that passed the guid.
+ * @param nameParameterName - name of the parameter that passed the name.
+ * @param guid - unique identifier for a type or an instance passed on the request
+ * @param name - name of TypeDef.
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid provided
+ */
+ public void validateTypeDefIds(String repositoryName,
+ String guidParameterName,
+ String nameParameterName,
+ String guid,
+ String name,
+ String methodName) throws InvalidParameterException
+ {
+ if (guid == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_TYPEDEF_IDENTIFIER;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(guidParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ else if (name == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_TYPEDEF_NAME;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(nameParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that an AttributeTypeDef's identifiers are not null and are recognized.
+ *
+ * @param repositoryName - name of the repository.
+ * @param guidParameterName - name of the parameter that passed the guid.
+ * @param nameParameterName - name of the parameter that passed the name.
+ * @param guid - unique identifier for a type or an instance passed on the request
+ * @param name - name of TypeDef.
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid, or name provided
+ */
+ public void validateAttributeTypeDefIds(String repositoryName,
+ String guidParameterName,
+ String nameParameterName,
+ String guid,
+ String name,
+ String methodName) throws InvalidParameterException
+ {
+ if (guid == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_ATTRIBUTE_TYPEDEF_IDENTIFIER;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(guidParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ else if (name == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_ATTRIBUTE_TYPEDEF_NAME;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(nameParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that type's identifier is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param guidParameterName - name of the parameter that passed the guid.
+ * @param guid - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid provided
+ */
+ public void validateTypeGUID(String repositoryName,
+ String guidParameterName,
+ String guid,
+ String methodName) throws InvalidParameterException
+ {
+ if (guid == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_TYPEDEF_IDENTIFIER;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(guidParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ public void validateTypeDefPatch(String repositoryName,
+ TypeDefPatch patch,
+ String methodName) throws InvalidParameterException, PatchErrorException
+ {
+ if (patch == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_TYPEDEF_PATCH;
+ String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that if a type's identifier is passed then it is valid.
+ *
+ * @param repositoryName - name of the repository.
+ * @param guidParameterName - name of the parameter that passed the guid.
+ * @param guid - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws TypeErrorException - invalid provided
+ */
+ public void validateInstanceTypeGUID(String repositoryName,
+ String guidParameterName,
+ String guid,
+ String methodName) throws TypeErrorException
+ {
+ if (guid == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.BAD_TYPEDEF_ID_FOR_INSTANCE;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(guidParameterName,
+ methodName,
+ repositoryName);
+
+ throw new TypeErrorException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that type's name is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param nameParameterName - name of the parameter that passed the name.
+ * @param name - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no name provided
+ */
+ public void validateTypeName(String repositoryName,
+ String nameParameterName,
+ String name,
+ String methodName) throws InvalidParameterException
+ {
+ if (name == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_TYPEDEF_NAME;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(nameParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a TypeDef's category is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param nameParameterName - name of the parameter that passed the name.
+ * @param category - category of TypeDef
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no name provided
+ */
+ public void validateTypeDefCategory(String repositoryName,
+ String nameParameterName,
+ TypeDefCategory category,
+ String methodName) throws InvalidParameterException
+ {
+ if (category == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_TYPEDEF_CATEGORY;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(nameParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a AttributeTypeDef's category is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param nameParameterName - name of the parameter that passed the name.
+ * @param category - category of TypeDef
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no name provided
+ */
+ public void validateAttributeTypeDefCategory(String repositoryName,
+ String nameParameterName,
+ AttributeTypeDefCategory category,
+ String methodName) throws InvalidParameterException
+ {
+ if (category == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_ATTRIBUTE_TYPEDEF_CATEGORY;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(nameParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate the content of a new TypeDef is valid.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the typeDef.
+ * @param typeDef - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no typeDef provided
+ * @throws InvalidTypeDefException - invalid typeDef provided
+ */
+ public void validateTypeDef(String repositoryName,
+ String parameterName,
+ TypeDef typeDef,
+ String methodName) throws InvalidParameterException, InvalidTypeDefException
+ {
+ if (typeDef == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_TYPEDEF;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+
+ validateTypeDefIds(repositoryName,
+ parameterName + ".getGUID",
+ parameterName + ".getName",
+ typeDef.getGUID(),
+ typeDef.getName(),
+ methodName);
+
+ validateTypeDefCategory(repositoryName,
+ parameterName + ".getCategory",
+ typeDef.getCategory(),
+ methodName);
+
+
+ }
+
+
+ /**
+ * Validate the content of a new TypeDef is known.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the typeDef.
+ * @param typeDef - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws TypeDefNotKnownException - no recognized typeDef provided
+ */
+ public void validateKnownTypeDef(String repositoryName,
+ String parameterName,
+ TypeDef typeDef,
+ String methodName) throws TypeDefNotKnownException
+ {
+ final String thisMethodName = "validateKnownTypeDef";
+
+ validateRepositoryContentManager(thisMethodName);
+
+ if (! repositoryContentManager.isKnownType(repositoryName, typeDef.getGUID(), typeDef.getName()))
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.TYPEDEF_NOT_KNOWN;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(typeDef.getName(),
+ typeDef.getGUID(),
+ parameterName,
+ methodName,
+ repositoryName);
+
+ throw new TypeDefNotKnownException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+
+ }
+ }
+
+
+ /**
+ * Validate the content of a new TypeDef is known.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the typeDef.
+ * @param typeDef - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws TypeDefKnownException - the TypeDef is already defined
+ * @throws TypeDefConflictException - the TypeDef is already defined - but differently
+ */
+ public void validateUnknownTypeDef(String repositoryName,
+ String parameterName,
+ TypeDef typeDef,
+ String methodName) throws TypeDefKnownException,
+ TypeDefConflictException
+ {
+ final String thisMethodName = "validateUnknownTypeDef";
+
+ validateRepositoryContentManager(thisMethodName);
+
+ if (repositoryContentManager.isKnownType(repositoryName, typeDef.getGUID(), typeDef.getName()))
+ {
+ // todo validate that the existing typeDef matches the new one.
+
+ OMRSErrorCode errorCode = OMRSErrorCode.TYPEDEF_ALREADY_DEFINED;
+ String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(typeDef.getName(),
+ typeDef.getGUID(),
+ repositoryName);
+
+ throw new TypeDefKnownException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+
+ }
+ }
+
+
+ /**
+ * Validate the content of a new TypeDef is known.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the typeDef.
+ * @param attributeTypeDef - unique identifier for an attribute type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws TypeDefKnownException - the TypeDef is already defined
+ * @throws TypeDefConflictException - the TypeDef is already defined - but differently
+ */
+ public void validateUnknownAttributeTypeDef(String repositoryName,
+ String parameterName,
+ AttributeTypeDef attributeTypeDef,
+ String methodName) throws TypeDefKnownException,
+ TypeDefConflictException
+ {
+ final String thisMethodName = "validateUnknownTypeDef";
+
+ validateRepositoryContentManager(thisMethodName);
+
+ if (repositoryContentManager.isKnownType(repositoryName,
+ attributeTypeDef.getGUID(),
+ attributeTypeDef.getName()))
+ {
+ // todo validate that the existing typeDef matches the new one.
+
+ OMRSErrorCode errorCode = OMRSErrorCode.ATTRIBUTE_TYPEDEF_ALREADY_DEFINED;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(attributeTypeDef.getName(),
+ attributeTypeDef.getGUID(),
+ repositoryName);
+
+ throw new TypeDefKnownException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+
+ }
+ }
+
+
+ /**
+ * Validate the content of a TypeDef associated with a metadata instance.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the typeDef.
+ * @param typeDef - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws TypeErrorException - no typeDef provided
+ * @throws RepositoryErrorException - the TypeDef from the repository is in error.
+ */
+ public void validateTypeDefForInstance(String repositoryName,
+ String parameterName,
+ TypeDef typeDef,
+ String methodName) throws TypeErrorException,
+ RepositoryErrorException
+ {
+ if (typeDef == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_TYPEDEF;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new TypeErrorException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+
+ try
+ {
+ validateTypeDefIds(repositoryName,
+ parameterName + ".getGUID",
+ parameterName + ".getName",
+ typeDef.getGUID(),
+ typeDef.getName(),
+ methodName);
+
+ validateTypeDefCategory(repositoryName,
+ parameterName + ".getCategory",
+ typeDef.getCategory(),
+ methodName);
+ }
+ catch (Throwable error)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.BAD_TYPEDEF;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new RepositoryErrorException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that the supplied TypeDef GUID and name matches the type associated with a metadata instance.
+ *
+ * @param repositoryName - name of the repository.
+ * @param typeDefGUID - the supplied typeDef GUID.
+ * @param typeDefName - the supplied typeDef name.
+ * @param instance - instance retrieved from the store with the supplied instance guid
+ * @param methodName - method making this call
+ * @throws InvalidParameterException - incompatibility detected between the TypeDef and the instance's type
+ * @throws RepositoryErrorException - the instance from the repository is in error.
+ */
+ public void validateTypeForInstanceDelete(String repositoryName,
+ String typeDefGUID,
+ String typeDefName,
+ InstanceHeader instance,
+ String methodName) throws InvalidParameterException,
+ RepositoryErrorException
+ {
+ /*
+ * Just make sure the instance has a type :)
+ */
+ this.validateInstanceType(repositoryName, instance);
+
+
+ /*
+ * Both the GUID and the name must match
+ */
+ if ((! typeDefGUID.equals(instance.getType().getTypeDefGUID())) ||
+ (! typeDefName.equals(instance.getType().getTypeDefName())))
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.BAD_TYPEDEF_IDS_FOR_DELETE;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(typeDefName,
+ typeDefGUID,
+ methodName,
+ instance.getGUID(),
+ repositoryName);
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+
+ }
+
+
+ /**
+ * Validate the content of a new AttributeTypeDef.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the attributeTypeDef.
+ * @param attributeTypeDef - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no attributeTypeDef provided
+ * @throws InvalidTypeDefException - bad attributeTypeDef provided
+ */
+ public void validateAttributeTypeDef(String repositoryName,
+ String parameterName,
+ AttributeTypeDef attributeTypeDef,
+ String methodName) throws InvalidParameterException,
+ InvalidTypeDefException
+ {
+ if (attributeTypeDef == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_ATTRIBUTE_TYPEDEF;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+
+ validateAttributeTypeDefIds(repositoryName,
+ parameterName + ".getGUID",
+ parameterName + ".getName",
+ attributeTypeDef.getGUID(),
+ attributeTypeDef.getName(),
+ methodName);
+
+ validateAttributeTypeDefCategory(repositoryName,
+ parameterName + ".getCategory",
+ attributeTypeDef.getCategory(),
+ methodName);
+ }
+
+
+ /**
+ * Validate that type's name is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the name.
+ * @param gallery - typeDef gallery
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no name provided
+ */
+ public void validateTypeDefGallery(String repositoryName,
+ String parameterName,
+ TypeDefGallery gallery,
+ String methodName) throws InvalidParameterException
+ {
+ if (gallery == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_TYPEDEF_GALLERY;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that the type's name is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @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.
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no name provided
+ */
+ public void validateExternalId(String repositoryName,
+ String standard,
+ String organization,
+ String identifier,
+ String methodName) throws InvalidParameterException
+ {
+ if ((standard == null) && (organization == null) || (identifier == null))
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_EXTERNAL_ID;
+
+ String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that an entity's identifier is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param guidParameterName - name of the parameter that passed the guid.
+ * @param guid - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid provided
+ */
+ public void validateGUID(String repositoryName,
+ String guidParameterName,
+ String guid,
+ String methodName) throws InvalidParameterException
+ {
+ if (guid == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_GUID;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(guidParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a home metadata collection identifier is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param guidParameterName - name of the parameter that passed the guid.
+ * @param guid - unique identifier for a type or an instance passed on the request
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid provided
+ */
+ public void validateHomeMetadataGUID(String repositoryName,
+ String guidParameterName,
+ String guid,
+ String methodName) throws InvalidParameterException
+ {
+ if (guid == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_HOME_METADATA_COLLECTION_ID;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(guidParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a classification name is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the guid.
+ * @param classificationName - unique name for a classification type
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - classification name is null
+ */
+ public void validateClassificationName(String repositoryName,
+ String parameterName,
+ String classificationName,
+ String methodName) throws InvalidParameterException
+ {
+ if (classificationName == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_CLASSIFICATION_NAME;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a classification is valid for the entity.
+ *
+ * @param repositoryName - name of the repository.
+ * @param classificationName - unique name for a classification type
+ * @param propertiesParameterName - name of the parameter that passed the properties.
+ * @param classificationProperties - properties to test
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - classification name is null
+ * @throws TypeErrorException - the classification is invalid for this entity
+ */
+ public void validateClassificationProperties(String repositoryName,
+ String classificationName,
+ String propertiesParameterName,
+ InstanceProperties classificationProperties,
+ String methodName) throws PropertyErrorException,
+ TypeErrorException
+ {
+ if (repositoryContentManager != null)
+ {
+ TypeDef classificationTypeDef = repositoryContentManager.getTypeDefByName(repositoryName, classificationName);
+
+ if (classificationTypeDef != null)
+ {
+ validatePropertiesForType(repositoryName, propertiesParameterName, classificationTypeDef, classificationProperties, methodName);
+ }
+ else
+ {
+ /*
+ * Logic error as the type should be valid
+ */
+ final String thisMethodName = "validateClassificationProperties";
+
+ throwValidatorLogicError(repositoryName, methodName, thisMethodName);
+ }
+ }
+ else
+ {
+ 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());
+ }
+ }
+
+
+ /**
+ * Validate that a classification is valid for the entity.
+ *
+ * @param repositoryName - name of the repository.
+ * @param classificationParameterName - name of the parameter that passed the guid.
+ * @param classificationName - unique name for a classification type
+ * @param entityTypeName - name of entity type
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - classification name is null
+ * @throws ClassificationErrorException - the classification is invalid for this entity
+ */
+ public void validateClassification(String repositoryName,
+ String classificationParameterName,
+ String classificationName,
+ String entityTypeName,
+ String methodName) throws InvalidParameterException,
+ ClassificationErrorException
+ {
+ this.validateClassificationName(repositoryName, classificationParameterName, classificationName, methodName);
+
+ if (repositoryContentManager != null)
+ {
+ if (! repositoryContentManager.isValidClassificationForEntity(repositoryName, classificationName, entityTypeName))
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.INVALID_CLASSIFICATION_FOR_ENTITY;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(repositoryName,
+ classificationName,
+ entityTypeName);
+
+ throw new ClassificationErrorException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+ else
+ {
+ 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());
+ }
+ }
+
+
+ /**
+ * Validate that a classification is valid for the entity.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the guid.
+ * @param classifications - list of classifications
+ * @param entityTypeName - name of entity type
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - classification name is null
+ * @throws ClassificationErrorException - the classification is invalid for this entity
+ * @throws PropertyErrorException - the classification's properties are invalid for its type
+ * @throws TypeErrorException - the classification's type is invalid
+ */
+ public void validateClassificationList(String repositoryName,
+ String parameterName,
+ List<Classification> classifications,
+ String entityTypeName,
+ String methodName) throws InvalidParameterException,
+ ClassificationErrorException,
+ PropertyErrorException,
+ TypeErrorException
+ {
+ if (classifications != null)
+ {
+ for (Classification classification : classifications)
+ {
+ if (classification != null)
+ {
+ if (repositoryContentManager != null)
+ {
+ this.validateClassification(repositoryName,
+ parameterName,
+ classification.getName(),
+ entityTypeName,
+ methodName);
+
+
+ this.validatePropertiesForType(repositoryName,
+ parameterName,
+ repositoryContentManager.getTypeDefByName(repositoryName,
+ classification.getName()),
+ classification.getProperties(),
+ methodName);
+ }
+ else
+ {
+ 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());
+ }
+
+ }
+ else
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_CLASSIFICATION_NAME;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Validate that a TypeDef match criteria set of properties is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the match criteria.
+ * @param matchCriteria - match criteria properties
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid provided
+ */
+ public void validateMatchCriteria(String repositoryName,
+ String parameterName,
+ TypeDefProperties matchCriteria,
+ String methodName) throws InvalidParameterException
+ {
+ if (matchCriteria == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_MATCH_CRITERIA;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a metadata instance match criteria and set of properties are either both null or
+ * both not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param matchCriteriaParameterName - name of the parameter that passed the match criteria.
+ * @param matchPropertiesParameterName - name of the parameter that passed the match criteria.
+ * @param matchCriteria - match criteria enum
+ * @param matchProperties - match properties
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid provided
+ */
+ public void validateMatchCriteria(String repositoryName,
+ String matchCriteriaParameterName,
+ String matchPropertiesParameterName,
+ MatchCriteria matchCriteria,
+ InstanceProperties matchProperties,
+ String methodName) throws InvalidParameterException
+ {
+ if ((matchCriteria == null) && (matchProperties == null))
+ {
+ return;
+ }
+
+ if (matchCriteria == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_MATCH_CRITERIA;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(matchCriteriaParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+
+ if (matchProperties == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_MATCH_CRITERIA;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(matchPropertiesParameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that a search criteria is not null.
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the parameter that passed the search criteria.
+ * @param searchCriteria - match criteria properties
+ * @param methodName - method receiving the call
+ * @throws InvalidParameterException - no guid provided
+ */
+ public void validateSearchCriteria(String repositoryName,
+ String parameterName,
+ String searchCriteria,
+ String methodName) throws InvalidParameterException
+ {
+ if ((searchCriteria == null) || ("".equals(searchCriteria)))
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_SEARCH_CRITERIA;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new InvalidParameterException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /**
+ * Validate that the properties for a metadata instance match its TypeDef
+ *
+ * @param repositoryName - name of the repository.
+ * @param parameterName - name of the properties parameter.
+ * @param typeDef - type information to validate against.
+ * @param properties - proposed properties
+ * @param methodName - method receiving the call
+ * @throws RepositoryErrorException - no typeDef provided
+ * @throws PropertyErrorException - invalid property
+ */
+ public void validatePropertiesForType(String repositoryName,
+ String parameterName,
+ TypeDef typeDef,
+ InstanceProperties properties,
+ String methodName) throws PropertyErrorException,
+ TypeErrorException
+ {
+ if (typeDef == null)
+ {
+ /*
+ * Logic error as the type should be valid
+ */
+ final String thisMethodName = "validatePropertiesForType";
+
+ throwValidatorLogicError(repositoryName, methodName, thisMethodName);
+ }
+
+ if (properties == null)
+ {
+ /*
+ * No properties to evaluate so return
+ */
+ return;
+ }
+
+
+ String typeDefCategoryName = null;
+ String typeDefName = typeDef.getName();
+
+ if (typeDef.getCategory() != null)
+ {
+ typeDefCategoryName = typeDef.getCategory().getTypeName();
+ }
+
+ List<TypeDefAttribute> typeDefAttributes = typeDef.getPropertiesDefinition();
+
+ if (typeDefAttributes == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NO_PROPERTIES_FOR_TYPE;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(typeDefCategoryName,
+ typeDefName,
+ repositoryName);
+
+ throw new PropertyErrorException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+
+ /*
+ * Need to step through each of the proposed properties and validate that the name and value are
+ * present and they match the typeDef
+ */
+ Iterator propertyList = properties.getPropertyNames();
+
+ while (propertyList.hasNext())
+ {
+ String propertyName = propertyList.next().toString();
+
+ if (propertyName == null)
+ {
+ OMRSErrorCode errorCode = OMRSErrorCode.NULL_PROPERTY_NAME_FOR_INSTANCE;
+ String errorMessage = errorCode.getErrorMessageId()
+ + errorCode.getFormattedErrorMessage(parameterName,
+ methodName,
+ repositoryName);
+
+ throw new PropertyErrorException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+
+ AttributeTypeDefCategory propertyDefinitionType = null;
+ boolean recognizedProperty = false;
+
+ for (TypeDefAttribute typeDefAttribute : typeDefAttributes)
+ {
+ if (typeDefAttribute != null)
+
<TRUNCATED>