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/02/16 09:52:43 UTC
[27/30] atlas git commit: ATLAS-2246: OMRS Connector API plus REST
and IGC Connector skeleton - 15th February 2018
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/archivemanager/opentypes/OpenMetadataTypesArchive.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/archivemanager/opentypes/OpenMetadataTypesArchive.java b/omrs/src/main/java/org/apache/atlas/omrs/archivemanager/opentypes/OpenMetadataTypesArchive.java
new file mode 100644
index 0000000..b8aa172
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/archivemanager/opentypes/OpenMetadataTypesArchive.java
@@ -0,0 +1,5657 @@
+/*
+ * 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.archivemanager.opentypes;
+
+
+import org.apache.atlas.omrs.archivemanager.OMRSArchiveBuilder;
+import org.apache.atlas.omrs.archivemanager.properties.OpenMetadataArchive;
+import org.apache.atlas.omrs.archivemanager.properties.OpenMetadataArchiveType;
+import org.apache.atlas.omrs.ffdc.OMRSErrorCode;
+import org.apache.atlas.omrs.ffdc.exception.OMRSLogicErrorException;
+import org.apache.atlas.omrs.metadatacollection.properties.instances.InstanceStatus;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * OpenMetadataTypesArchive builds an open metadata archive containing all of the standard open metadata types.
+ * These types have hardcoded dates and guids so that however many times this archive is rebuilt, it will
+ * produce the same content.
+ * <p>
+ * Details of the open metadata types are documented on the wiki:
+ * <a href="https://cwiki.apache.org/confluence/display/ATLAS/Building+out+the+Open+Metadata+Typesystem">Building out the Open Metadata Typesystem</a>
+ * </p>
+ * <p>
+ * There are 8 areas, each covering a different topic area of metadata. The module breaks down the process of creating
+ * the models into the areas and then the individual models to simplify the maintenance of this class
+ * </p>
+ */
+public class OpenMetadataTypesArchive
+{
+ /*
+ * This is the header information for the archive.
+ */
+ private static final String archiveGUID = "bce3b0a0-662a-4f87-b8dc-844078a11a6e";
+ private static final String archiveName = "Open Metadata Types";
+ private static final String archiveDescription = "Standard types for open metadata repositories.";
+ private static final OpenMetadataArchiveType archiveType = OpenMetadataArchiveType.CONTENT_PACK;
+ private static final String originatorName = "Apache Atlas (OMRS)";
+ private static final Date creationDate = new Date(1516313040008L);
+
+ /*
+ * Specific values for initializing TypeDefs
+ */
+ private static final long versionNumber = 1L;
+ private static final String versionName = "1.0";
+
+
+
+ private OMRSArchiveBuilder archiveBuilder;
+
+
+ /**
+ * Default constructor sets up the archive builder. This in turn sets up the header for the archive.
+ */
+ public OpenMetadataTypesArchive()
+ {
+ OMRSArchiveBuilder newArchiveBuilder = new OMRSArchiveBuilder(archiveGUID,
+ archiveName,
+ archiveDescription,
+ archiveType,
+ originatorName,
+ creationDate,
+ null);
+ this.archiveBuilder = newArchiveBuilder;
+ }
+
+
+ /**
+ * Return the unique identifier for this archive.
+ *
+ * @return String guid
+ */
+ public String getArchiveGUID()
+ {
+ return archiveGUID;
+ }
+
+ /**
+ * Returns the open metadata type archive containing all of the standard open metadata types.
+ *
+ * @return populated open metadata archive object
+ */
+ public OpenMetadataArchive getOpenMetadataArchive()
+ {
+ final String methodName = "getOpenMetadataArchive()";
+
+ if (this.archiveBuilder != null)
+ {
+ /*
+ * Call each of the methods to systematically add the contents of the archive.
+ */
+ this.addStandardPrimitiveDefs();
+ this.addArea0Types();
+ this.addArea1Types();
+ this.addArea2Types();
+ this.addArea3Types();
+ this.addArea4Types();
+ this.addArea5Types();
+ this.addArea6Types();
+ this.addArea7Types();
+
+ /*
+ * The completed archive is ready to be packaged up and returned
+ */
+ return this.archiveBuilder.getOpenMetadataArchive();
+ }
+ else
+ {
+ /*
+ * This is a logic error since it means the creation of the archive builder threw an exception
+ * in the constructor and so this object should not be used.
+ */
+ OMRSErrorCode errorCode = OMRSErrorCode.ARCHIVE_UNAVAILABLE;
+ String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage();
+
+ throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
+ this.getClass().getName(),
+ methodName,
+ errorMessage,
+ errorCode.getSystemAction(),
+ errorCode.getUserAction());
+ }
+ }
+
+
+ /*
+ * ========================================
+ * Attribute types
+ */
+
+
+ /**
+ * Add the standard primitive types to the archive builder.
+ */
+ private void addStandardPrimitiveDefs()
+ {
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_BOOLEAN));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_BYTE));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_CHAR));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_SHORT));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_INT));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_LONG));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_FLOAT));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_DOUBLE));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_BIGINTEGER));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_BIGDECIMAL));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_STRING));
+ this.archiveBuilder.addPrimitiveDef(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_DATE));
+ }
+
+
+ /**
+ * Set up an individual primitive definition
+ *
+ * @param primitiveDefCategory - category of the primitive def defines the unique
+ * information about this primitive type.
+ * @return initialized PrimitiveDef object ready for the archive
+ */
+ private PrimitiveDef getPrimitiveDef(PrimitiveDefCategory primitiveDefCategory)
+ {
+ PrimitiveDef primitiveDef = new PrimitiveDef(primitiveDefCategory);
+
+ primitiveDef.setGUID(primitiveDefCategory.getGUID());
+ primitiveDef.setName(primitiveDefCategory.getName());
+
+ return primitiveDef;
+ }
+
+
+ /**
+ * Create a CollectionDef. A new CollectionDef is required for each combination of primitive types
+ * used to initialize the collection. Each CollectionDef has its own unique identifier (guid) and
+ * its name is a combination of the collection type and the primitives use to initialize it.
+ *
+ * @param guid - unique identifier for the CollectionDef
+ * @param name - unique name for the CollectionDef
+ * @param collectionDefCategory - category of the collection.
+ * @return Filled out CollectionDef
+ */
+ private CollectionDef getCollectionDef(String guid,
+ String name,
+ CollectionDefCategory collectionDefCategory)
+ {
+ CollectionDef collectionDef = new CollectionDef(collectionDefCategory);
+
+ collectionDef.setGUID(guid);
+ collectionDef.setName(name);
+
+ return collectionDef;
+ }
+
+
+ /**
+ * Create an EnumDef that has no valid values defined. These are added by the caller.
+ *
+ * @param guid - unique identifier for the CollectionDef
+ * @param name - unique name for the CollectionDef
+ * @param description - short default description of the enum type
+ * @param descriptionGUID - guid of the glossary term describing this enum type
+ * @return basic EnumDef without valid values
+ */
+ private EnumDef getEmptyEnumDef(String guid,
+ String name,
+ String description,
+ String descriptionGUID)
+ {
+ EnumDef enumDef = new EnumDef();
+
+ enumDef.setGUID(guid);
+ enumDef.setName(name);
+ enumDef.setDescription(description);
+ enumDef.setDescriptionGUID(descriptionGUID);
+ enumDef.setDefaultValue(null);
+
+ return enumDef;
+ }
+
+
+ /**
+ * Create an EnumElementDef that carries one of the valid values for an Enum.
+ *
+ * @param ordinal - code number
+ * @param value - name
+ * @param description - short description
+ * @param descriptionGUID - guid of the glossary term describing this enum element
+ * @return Fully filled out EnumElementDef
+ */
+ private EnumElementDef getEnumElementDef(int ordinal,
+ String value,
+ String description,
+ String descriptionGUID)
+ {
+ EnumElementDef enumElementDef = new EnumElementDef();
+
+ enumElementDef.setOrdinal(ordinal);
+ enumElementDef.setValue(value);
+ enumElementDef.setDescription(description);
+ enumElementDef.setDescriptionGUID(descriptionGUID);
+
+ return enumElementDef;
+ }
+
+
+ /**
+ * Sets up a default EntityDef. Calling methods can override the default values. This EntityDef
+ * has no attribute defined.
+ *
+ * @param guid - unique identifier for the entity
+ * @param name - name of the entity
+ * @param superType - Super type for this entity (null for top-level)
+ * @param description - short description of the entity
+ * @param descriptionGUID - guid of the glossary term describing this entity type
+ * @return Initialized EntityDef
+ */
+ EntityDef getDefaultEntityDef(String guid,
+ String name,
+ TypeDefLink superType,
+ String description,
+ String descriptionGUID)
+ {
+ EntityDef entityDef = new EntityDef();
+
+ /*
+ * Set up the parameters supplied by the caller.
+ */
+ entityDef.setGUID(guid);
+ entityDef.setName(name);
+ entityDef.setSuperType(superType);
+ entityDef.setDescription(description);
+ entityDef.setDescriptionGUID(descriptionGUID);
+
+ /*
+ * Set up the defaults
+ */
+ entityDef.setOrigin(archiveGUID);
+ entityDef.setCreatedBy(originatorName);
+ entityDef.setCreateTime(creationDate);
+ entityDef.setVersion(versionNumber);
+ entityDef.setVersionName(versionName);
+
+ /*
+ * Set default valid instance statuses
+ */
+ ArrayList<InstanceStatus> validInstanceStatusList = new ArrayList<>();
+ validInstanceStatusList.add(InstanceStatus.ACTIVE);
+ validInstanceStatusList.add(InstanceStatus.DELETED);
+ entityDef.setValidInstanceStatusList(validInstanceStatusList);
+
+ return entityDef;
+ }
+
+
+ /**
+ * Return an attribute with the supplied name and description that is of type String. It is set up to be optional,
+ * indexable (useful for searches) but the value does not need to be unique.
+ * These are the typical values used for most open metadata attribute.
+ * They can be changed by the caller once the TypeDefAttribute is returned.
+ *
+ * @param attributeName - name of the attribute
+ * @param attributeDescription - short description for the attribute
+ * @param attributeDescriptionGUID - guid of the glossary term that describes this attribute.
+ * @return Optional TypeDefAttribute of type string
+ */
+ TypeDefAttribute getStringTypeDefAttribute(String attributeName,
+ String attributeDescription,
+ String attributeDescriptionGUID)
+ {
+ TypeDefAttribute attribute = new TypeDefAttribute();
+
+ attribute.setAttributeName(attributeName);
+ attribute.setAttributeDescription(attributeDescription);
+ attribute.setAttributeDescriptionGUID(attributeDescriptionGUID);
+ attribute.setAttributeType(getPrimitiveDef(PrimitiveDefCategory.OM_PRIMITIVE_TYPE_STRING));
+ attribute.setAttributeCardinality(AttributeCardinality.AT_MOST_ONE);
+ attribute.setValuesMinCount(0);
+ attribute.setValuesMaxCount(1);
+ attribute.setIndexable(true);
+ attribute.setUnique(false);
+ attribute.setDefaultValue(null);
+ attribute.setExternalStandardMappings(null);
+
+ return attribute;
+ }
+
+
+ /**
+ * Returns a basic RelationshipDef without any attributes or ends set up.
+ * The caller is responsible for adding the attributes and ends definition.
+ *
+ * @param guid - unique identifier for the relationship
+ * @param name - name of the relationship
+ * @param superType - Super type for this relationship (null for top-level)
+ * @param description - short default description of the relationship
+ * @param descriptionGUID - guid of the glossary term that describes this relationship
+ * @param relationshipCategory - is this an association, aggregation or composition?
+ * @param propagationRule - should classifications propagate over this relationship?
+ * @return RelationshipDef with no ends defined.
+ */
+ private RelationshipDef getBasicRelationshipDef(String guid,
+ String name,
+ TypeDefLink superType,
+ String description,
+ String descriptionGUID,
+ RelationshipCategory relationshipCategory,
+ ClassificationPropagationRule propagationRule)
+ {
+ RelationshipDef relationshipDef = new RelationshipDef();
+
+ /*
+ * Set up the parameters supplied by the caller.
+ */
+ relationshipDef.setGUID(guid);
+ relationshipDef.setName(name);
+ relationshipDef.setSuperType(superType);
+ relationshipDef.setDescription(description);
+ relationshipDef.setDescriptionGUID(descriptionGUID);
+
+ /*
+ * Set up the defaults
+ */
+ relationshipDef.setOrigin(archiveGUID);
+ relationshipDef.setCreatedBy(originatorName);
+ relationshipDef.setCreateTime(creationDate);
+ relationshipDef.setVersion(versionNumber);
+ relationshipDef.setVersionName(versionName);
+
+ /*
+ * Set default valid instance statuses
+ */
+ ArrayList<InstanceStatus> validInstanceStatusList = new ArrayList<>();
+ validInstanceStatusList.add(InstanceStatus.ACTIVE);
+ validInstanceStatusList.add(InstanceStatus.DELETED);
+ relationshipDef.setValidInstanceStatusList(validInstanceStatusList);
+
+ /*
+ * Set up the category of relationship
+ */
+ relationshipDef.setRelationshipCategory(relationshipCategory);
+
+ if ((relationshipCategory == RelationshipCategory.AGGREGATION) ||
+ (relationshipCategory == RelationshipCategory.COMPOSITION))
+ {
+ /*
+ * By convention, end 1 is the container end in the open metadata model.
+ */
+ relationshipDef.setRelationshipContainerEnd(RelationshipContainerEnd.END1);
+ }
+ else
+ {
+ relationshipDef.setRelationshipContainerEnd(RelationshipContainerEnd.NOT_APPLICABLE);
+ }
+
+ /*
+ * Use the supplied propagation rule.
+ */
+ relationshipDef.setPropagationRule(propagationRule);
+
+ return relationshipDef;
+ }
+
+
+ /**
+ * Returns a RelationshipEndDef object that sets up details of an entity at one end of a relationship.
+ *
+ * @param entityType - details of the type of entity connected to this end.
+ * @param attributeName - name of the attribute that the entity at the other end uses to refer to this entity.
+ * @param attributeDescription - description of this attribute
+ * @param attributeDescriptionGUID - unique identifier of the glossary term describing this attribute.
+ * @param attributeCardinality - cardinality of this end of the relationship.
+ * @return the definition of one end of a Relationship.
+ */
+ private RelationshipEndDef getRelationshipEndDef(TypeDefLink entityType,
+ String attributeName,
+ String attributeDescription,
+ String attributeDescriptionGUID,
+ AttributeCardinality attributeCardinality)
+ {
+ RelationshipEndDef relationshipEndDef = new RelationshipEndDef();
+
+ relationshipEndDef.setEntityType(entityType);
+ relationshipEndDef.setAttributeName(attributeName);
+ relationshipEndDef.setAttributeDescription(attributeDescription);
+ relationshipEndDef.setAttributeDescriptionGUID(attributeDescriptionGUID);
+ relationshipEndDef.setAttributeCardinality(attributeCardinality);
+
+ return relationshipEndDef;
+ }
+
+
+ /**
+ * Returns a basic ClassificationDef without any attributes. The caller is responsible for adding the
+ * attribute definitions.
+ *
+ * @param guid - unique identifier for the classification
+ * @param name - name of the classification
+ * @param superType - Super type for this classification (null for top-level)
+ * @param description - short description of the classification
+ * @param descriptionGUID - unique identifier of the glossary term that describes this classification.
+ * @param validEntityDefs - which entities can this classification be linked to.
+ * @param propagatable - can the classification propagate over relationships?
+ * @return ClassificationDef with no attributes defined.
+ */
+ private ClassificationDef getClassificationDef(String guid,
+ String name,
+ TypeDefLink superType,
+ String description,
+ String descriptionGUID,
+ ArrayList<TypeDefLink> validEntityDefs,
+ boolean propagatable)
+ {
+ ClassificationDef classificationDef = new ClassificationDef();
+
+ /*
+ * Set up the parameters supplied by the caller.
+ */
+ classificationDef.setGUID(guid);
+ classificationDef.setName(name);
+ classificationDef.setSuperType(superType);
+ classificationDef.setDescription(description);
+ classificationDef.setDescriptionGUID(descriptionGUID);
+
+ /*
+ * Set up the defaults
+ */
+ classificationDef.setOrigin(archiveGUID);
+ classificationDef.setCreatedBy(originatorName);
+ classificationDef.setCreateTime(creationDate);
+ classificationDef.setVersion(versionNumber);
+ classificationDef.setVersionName(versionName);
+
+ /*
+ * Set default valid instance statuses
+ */
+ ArrayList<InstanceStatus> validInstanceStatusList = new ArrayList<>();
+ validInstanceStatusList.add(InstanceStatus.ACTIVE);
+ validInstanceStatusList.add(InstanceStatus.DELETED);
+ classificationDef.setValidInstanceStatusList(validInstanceStatusList);
+
+ /*
+ * Set up the supplied validEntityTypes and propagatable flag.
+ */
+ classificationDef.setValidEntityDefs(validEntityDefs);
+ classificationDef.setPropagatable(propagatable);
+
+ return classificationDef;
+ }
+
+
+ /*
+ * ========================================
+ * AREA 0 - common types and infrastructure
+ */
+
+ /**
+ * Add the list of area 0 types
+ */
+ private void addArea0Types()
+ {
+ this.add0010BaseModel();
+ this.add0015LinkedMediaTypes();
+ this.add0017ExternalIdentifiers();
+ this.add0020PropertyFacets();
+ this.add0025Locations();
+ this.add0030HostsAndPlatforms();
+ this.add0035ComplexHosts();
+ this.add0040SoftwareServers();
+ this.add0045ServersAndAssets();
+ this.add0070NetworksAndGateways();
+ this.add0090CloudPlatformsAndServices();
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+ /**
+ * 0010 Base Model defines the core entities that have been inherited from the original Apache Atlas model.
+ * It defines an initial set of asset types that need to be governed (more assets are defined in Area 2).
+ */
+ private void add0010BaseModel()
+ {
+ this.archiveBuilder.addEntityDef(getReferenceableEntity());
+ this.archiveBuilder.addEntityDef(getAssetEntity());
+ this.archiveBuilder.addEntityDef(getInfrastructureEntity());
+ this.archiveBuilder.addEntityDef(getProcessEntity());
+ this.archiveBuilder.addEntityDef(getDataSetEntity());
+
+ this.archiveBuilder.addRelationshipDef(getProcessInputRelationship());
+ this.archiveBuilder.addRelationshipDef(getProcessOutputRelationship());
+ }
+
+
+ /**
+ * The Referenceable entity is the superclass of all of the governed open metadata entities. It specifies that
+ * these entities have a unique identifier called "qualifiedName".
+ *
+ * @return Referenceable EntityDef
+ */
+ private EntityDef getReferenceableEntity()
+ {
+ /*
+ * Build the Entity
+ */
+ final String guid = "005c7c14-ac84-4136-beed-959401b041f8";
+ final String name = "Referenceable";
+ final String description = "An open metadata entity that has a unique identifier.";
+ final String descriptionGUID = null;
+
+ EntityDef entityDef = getDefaultEntityDef(guid,
+ name,
+ null,
+ description,
+ descriptionGUID);
+
+ /*
+ * Build the attributes
+ */
+ ArrayList<TypeDefAttribute> properties = new ArrayList<>();
+ TypeDefAttribute property;
+
+ final String attributeName = "qualifiedName";
+ final String attributeDescription = "Unique identifier for the entity.";
+ final String attributeDescriptionGUID = null;
+
+
+ property = getStringTypeDefAttribute(attributeName, attributeDescription, attributeDescriptionGUID);
+ property.setUnique(true);
+ properties.add(property);
+
+ entityDef.setPropertiesDefinition(properties);
+
+ return entityDef;
+ }
+
+
+ /**
+ * The Asset entity is the root entity for the assets that open metadata and governance is governing.
+ *
+ * @return Asset EntityDef
+ */
+ private EntityDef getAssetEntity()
+ {
+ /*
+ * Build the Entity
+ */
+ final String guid = "896d14c2-7522-4f6c-8519-757711943fe6";
+ final String name = "Asset";
+ final String description = "The description of an asset that needs to be catalogued and governed.";
+ final String descriptionGUID = null;
+ final String superTypeName = "Referenceable";
+
+ EntityDef entityDef = getDefaultEntityDef(guid,
+ name,
+ this.archiveBuilder.getEntityDef(superTypeName),
+ description,
+ descriptionGUID);
+
+ /*
+ * Build the attributes
+ */
+ ArrayList<TypeDefAttribute> properties = new ArrayList<>();
+ TypeDefAttribute property;
+
+ final String attribute1Name = "name";
+ final String attribute1Description = "Display name for the asset.";
+ final String attribute1DescriptionGUID = null;
+ final String attribute2Name = "description";
+ final String attribute2Description = "Description of the asset.";
+ final String attribute2DescriptionGUID = null;
+ final String attribute3Name = "owner";
+ final String attribute3Description = "User name of the person or process that owns the asset.";
+ final String attribute3DescriptionGUID = null;
+
+
+ property = getStringTypeDefAttribute(attribute1Name, attribute1Description, attribute1DescriptionGUID);
+ properties.add(property);
+ property = getStringTypeDefAttribute(attribute2Name, attribute2Description, attribute2DescriptionGUID);
+ properties.add(property);
+ property = getStringTypeDefAttribute(attribute3Name, attribute3Description, attribute3DescriptionGUID);
+ properties.add(property);
+
+ entityDef.setPropertiesDefinition(properties);
+
+ return entityDef;
+ }
+
+
+ /**
+ * The Infrastructure entity describes an asset that is physical infrastructure or part of the software
+ * platform that supports the data and process assets.
+ *
+ * @return Infrastructure EntityDef
+ */
+ private EntityDef getInfrastructureEntity()
+ {
+ /*
+ * Build the Entity
+ */
+ final String guid = "c19746ac-b3ec-49ce-af4b-83348fc55e07";
+ final String name = "Infrastructure";
+ final String description = "Physical infrastructure or software platform.";
+ final String descriptionGUID = null;
+ final String superTypeName = "Asset";
+
+ EntityDef entityDef = getDefaultEntityDef(guid,
+ name,
+ this.archiveBuilder.getEntityDef(superTypeName),
+ description,
+ descriptionGUID);
+
+ return entityDef;
+ }
+
+
+ /**
+ * The Process entity describes a well-defined sequence of activities performed by people or software components.
+ *
+ * @return Process EntityDef
+ */
+ private EntityDef getProcessEntity()
+ {
+ /*
+ * Build the Entity
+ */
+ final String guid = "d8f33bd7-afa9-4a11-a8c7-07dcec83c050";
+ final String name = "Process";
+ final String description = "Well-defined sequence of activities performed by people or software components.";
+ final String descriptionGUID = null;
+ final String superTypeName = "Asset";
+
+ EntityDef entityDef = getDefaultEntityDef(guid,
+ name,
+ this.archiveBuilder.getEntityDef(superTypeName),
+ description,
+ descriptionGUID);
+
+ return entityDef;
+ }
+
+
+ /**
+ * The DataSet entity describes a collection of related data.
+ *
+ * @return DataSet EntityDef
+ */
+ private EntityDef getDataSetEntity()
+ {
+ /*
+ * Build the Entity
+ */
+ final String guid = "1449911c-4f44-4c22-abc0-7540154feefb";
+ final String name = "DataSet";
+ final String description = "Collection of related data.";
+ final String descriptionGUID = null;
+ final String superTypeName = "Asset";
+
+ EntityDef entityDef = getDefaultEntityDef(guid,
+ name,
+ this.archiveBuilder.getEntityDef(superTypeName),
+ description,
+ descriptionGUID);
+
+ return entityDef;
+ }
+
+
+ /**
+ * The ProcessInput relationship describes the data set(s) that are passed into a process.
+ *
+ * @return ProcessInput RelationshipDef
+ */
+ private RelationshipDef getProcessInputRelationship()
+ {
+ /*
+ * Build the relationship
+ */
+ final String guid = "9a6583c4-7419-4d5a-a6e5-26b0033fa349";
+ final String name = "ProcessInput";
+ final String description = "The DataSets passed into a Process.";
+ final String descriptionGUID = null;
+ final RelationshipCategory relationshipCategory = RelationshipCategory.AGGREGATION;
+ final ClassificationPropagationRule classificationPropagationRule = ClassificationPropagationRule.NONE;
+
+ RelationshipDef relationshipDef = getBasicRelationshipDef(guid,
+ name,
+ null,
+ description,
+ descriptionGUID,
+ relationshipCategory,
+ classificationPropagationRule);
+
+ RelationshipEndDef relationshipEndDef;
+
+ /*
+ * Set up end 1.
+ */
+ final String end1EntityType = "Process";
+ final String end1AttributeName = "consumedByProcess";
+ final String end1AttributeDescription = "Processes that consume this DataSet";
+ final String end1AttributeDescriptionGUID = null;
+ final AttributeCardinality end1Cardinality = AttributeCardinality.ANY_NUMBER_UNORDERED;
+
+ relationshipEndDef = getRelationshipEndDef(this.archiveBuilder.getEntityDef(end1EntityType),
+ end1AttributeName,
+ end1AttributeDescription,
+ end1AttributeDescriptionGUID,
+ end1Cardinality);
+ relationshipDef.setEndDef1(relationshipEndDef);
+
+
+ /*
+ * Set up end 2.
+ */
+ final String end2EntityType = "DataSet";
+ final String end2AttributeName = "processInputData";
+ final String end2AttributeDescription = "DataSets consumed by this Process";
+ final String end2AttributeDescriptionGUID = null;
+ final AttributeCardinality end2Cardinality = AttributeCardinality.ANY_NUMBER_UNORDERED;
+
+ relationshipEndDef = getRelationshipEndDef(this.archiveBuilder.getEntityDef(end2EntityType),
+ end2AttributeName,
+ end2AttributeDescription,
+ end2AttributeDescriptionGUID,
+ end2Cardinality);
+ relationshipDef.setEndDef2(relationshipEndDef);
+
+
+ return relationshipDef;
+ }
+
+
+ /**
+ * The ProcessOutput relationship describes the data set(s) that are produced by a process.
+ *
+ * @return ProcessOutput RelationshipDef
+ */
+ private RelationshipDef getProcessOutputRelationship()
+ {
+ /*
+ * Build the relationship
+ */
+ final String guid = "8920eada-9b05-4368-b511-b8506a4bef4b";
+ final String name = "ProcessOutput";
+ final String description = "The DataSets produced by a Process.";
+ final String descriptionGUID = null;
+ final RelationshipCategory relationshipCategory = RelationshipCategory.AGGREGATION;
+ final ClassificationPropagationRule classificationPropagationRule = ClassificationPropagationRule.NONE;
+
+ RelationshipDef relationshipDef = getBasicRelationshipDef(guid,
+ name,
+ null,
+ description,
+ descriptionGUID,
+ relationshipCategory,
+ classificationPropagationRule);
+
+ RelationshipEndDef relationshipEndDef;
+
+ /*
+ * Set up end 1.
+ */
+ final String end1EntityType = "Process";
+ final String end1AttributeName = "producedByProcess";
+ final String end1AttributeDescription = "Processes that produce this DataSet";
+ final String end1AttributeDescriptionGUID = null;
+ final AttributeCardinality end1Cardinality = AttributeCardinality.ANY_NUMBER_UNORDERED;
+
+ relationshipEndDef = getRelationshipEndDef(this.archiveBuilder.getEntityDef(end1EntityType),
+ end1AttributeName,
+ end1AttributeDescription,
+ end1AttributeDescriptionGUID,
+ end1Cardinality);
+ relationshipDef.setEndDef1(relationshipEndDef);
+
+
+ /*
+ * Set up end 2.
+ */
+ final String end2EntityType = "DataSet";
+ final String end2AttributeName = "processOutputData";
+ final String end2AttributeDescription = "DataSets produced by this Process";
+ final String end2AttributeDescriptionGUID = null;
+ final AttributeCardinality end2Cardinality = AttributeCardinality.ANY_NUMBER_UNORDERED;
+
+ relationshipEndDef = getRelationshipEndDef(this.archiveBuilder.getEntityDef(end2EntityType),
+ end2AttributeName,
+ end2AttributeDescription,
+ end2AttributeDescriptionGUID,
+ end2Cardinality);
+ relationshipDef.setEndDef2(relationshipEndDef);
+
+
+ return relationshipDef;
+ }
+
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0015 Linked Media Types describe different media (like images and documents) that enhance the description
+ * of an entity. Media entities can be added to any Referenceable entities.
+ */
+ private void add0015LinkedMediaTypes()
+ {
+ this.archiveBuilder.addEnumDef(getMediaUsageEnum());
+
+ this.archiveBuilder.addEntityDef(getExternalReferenceEntity());
+ this.archiveBuilder.addEntityDef(getRelatedMediaEntity());
+
+ this.archiveBuilder.addRelationshipDef(getExternalReferenceLinkRelationship());
+ this.archiveBuilder.addRelationshipDef(getMediaReferenceRelationship());
+ }
+
+ private EnumDef getMediaUsageEnum()
+ {
+ final String guid = "c6861a72-7485-48c9-8040-876f6c342b61";
+ final String name = "MediaUsage";
+ final String description = "Defines how a related media reference should be used.";
+ final String descriptionGUID = null;
+
+ EnumDef enumDef = getEmptyEnumDef(guid, name, description, descriptionGUID);
+
+ ArrayList<EnumElementDef> elementDefs = new ArrayList();
+ EnumElementDef elementDef;
+
+ final int element1Ordinal = 0;
+ final String element1Value = "Icon";
+ final String element1Description = "Provides a small image to represent the asset in tree views and graphs.";
+ final String element1DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element1Ordinal, element1Value, element1Description, element1DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element2Ordinal = 1;
+ final String element2Value = "Thumbnail";
+ final String element2Description = "Provides a small image about the asset that can be used in lists.";
+ final String element2DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element2Ordinal, element2Value, element2Description, element2DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element3Ordinal = 2;
+ final String element3Value = "Illustration";
+ final String element3Description = "Illustrates how the asset works or what it contains. It is complementary to the asset's description.";
+ final String element3DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element3Ordinal, element3Value, element3Description, element3DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element4Ordinal = 3;
+ final String element4Value = "Usage Guidance";
+ final String element4Description = "Provides guidance to a person on how to use the asset.";
+ final String element4DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element4Ordinal, element4Value, element4Description, element4DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element5Ordinal = 99;
+ final String element5Value = "Other";
+ final String element5Description = "Another usage.";
+ final String element5DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element5Ordinal, element5Value, element5Description, element5DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ enumDef.setElementDefs(elementDefs);
+
+ return enumDef;
+ }
+
+ private EntityDef getExternalReferenceEntity()
+ {
+ final String guid = "af536f20-062b-48ef-9c31-1ddd05b04c56";
+ final String name = "ExternalReference";
+ final String description = "A link to more information.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getRelatedMediaEntity()
+ {
+ final String guid = "747f8b86-fe7c-4c9b-ba75-979e093cc307";
+ final String name = "RelatedMedia";
+ final String description = "Images, video or sound media.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getExternalReferenceLinkRelationship()
+ {
+ final String guid = "7d818a67-ab45-481c-bc28-f6b1caf12f06";
+ final String name = "ExternalReferenceLink";
+ final String description = "Link to more information.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getMediaReferenceRelationship()
+ {
+ final String guid = "1353400f-b0ab-4ab9-ab09-3045dd8a7140";
+ final String name = "MediaReference";
+ final String description = "Link to related media such as images, videos and audio.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0017 External Identifiers define identifiers used to identify this entity in other systems.
+ */
+ private void add0017ExternalIdentifiers()
+ {
+ this.archiveBuilder.addEnumDef(getKeyPatternEnum());
+
+ this.archiveBuilder.addEntityDef(getExternalIdEntity());
+
+ this.archiveBuilder.addRelationshipDef(getExternalIdScopeRelationship());
+ this.archiveBuilder.addRelationshipDef(getExternalIdLinkRelationship());
+ }
+
+ private EnumDef getKeyPatternEnum()
+ {
+ final String guid = "8904df8f-1aca-4de8-9abd-1ef2aadba300";
+ final String name = "KeyPattern";
+ final String description = "Defines the type of identifier used for an asset.";
+ final String descriptionGUID = null;
+
+ EnumDef enumDef = getEmptyEnumDef(guid, name, description, descriptionGUID);
+
+ ArrayList<EnumElementDef> elementDefs = new ArrayList();
+ EnumElementDef elementDef;
+
+ final int element1Ordinal = 0;
+ final String element1Value = "Local Key";
+ final String element1Description = "Unique key allocated and used within the scope of a single system.";
+ final String element1DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element1Ordinal, element1Value, element1Description, element1DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element2Ordinal = 1;
+ final String element2Value = "Recycled Key";
+ final String element2Description = "Key allocated and used within the scope of a single system that is periodically reused for different records.";
+ final String element2DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element2Ordinal, element2Value, element2Description, element2DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element3Ordinal = 2;
+ final String element3Value = "Natural Key";
+ final String element3Description = "Key derived from an attribute of the entity, such as email address, passport number.";
+ final String element3DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element3Ordinal, element3Value, element3Description, element3DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element4Ordinal = 3;
+ final String element4Value = "Mirror Key";
+ final String element4Description = "Key value copied from another system.";
+ final String element4DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element4Ordinal, element4Value, element4Description, element4DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element5Ordinal = 4;
+ final String element5Value = "Aggregate Key";
+ final String element5Description = "Key formed by combining keys from multiple systems.";
+ final String element5DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element5Ordinal, element5Value, element5Description, element5DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element6Ordinal = 5;
+ final String element6Value = "Caller's Key";
+ final String element6Description = "Key from another system can bey used if system name provided.";
+ final String element6DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element6Ordinal, element6Value, element6Description, element6DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element7Ordinal = 6;
+ final String element7Value = "Stable Key";
+ final String element7Description = "Key value will remain active even if records are merged.";
+ final String element7DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element7Ordinal, element7Value, element7Description, element7DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element8Ordinal = 99;
+ final String element8Value = "Other";
+ final String element8Description = "Another key pattern.";
+ final String element8DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element8Ordinal, element8Value, element8Description, element8DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ return enumDef;
+ }
+
+ private EntityDef getExternalIdEntity()
+ {
+ final String guid = "7c8f8c2c-cc48-429e-8a21-a1f1851ccdb0";
+ final String name = "ExternalId";
+ final String description = "Alternative identifier used in another system.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getExternalIdScopeRelationship()
+ {
+ final String guid = "8c5b1415-2d1f-4190-ba6c-1fdd47f03269";
+ final String name = "ExternalIdScope";
+ final String description = "Places where an external identifier is recognized.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getExternalIdLinkRelationship()
+ {
+ final String guid = "28ab0381-c662-4b6d-b787-5d77208de126";
+ final String name = "ExternalIdLink";
+ final String description = "Link between an external identifier and an asset.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0020 Property Facets define blocks of properties that are unique to a particular vendor or service.
+ */
+ private void add0020PropertyFacets()
+ {
+ this.archiveBuilder.addEntityDef(getPropertyFacetEntity());
+
+ this.archiveBuilder.addRelationshipDef(getReferenceableFacetRelationship());
+ }
+
+ private EntityDef getPropertyFacetEntity()
+ {
+ final String guid = "6403a704-aad6-41c2-8e08-b9525c006f85";
+ final String name = "PropertyFacet";
+ final String description = "Additional properties that support a particular vendor or service.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getReferenceableFacetRelationship()
+ {
+ final String guid = "58c87647-ada9-4c90-a3c3-a40ace46b1f7";
+ final String name = "ReferenceableFacet";
+ final String description = "Link between a property facet and the element it relates to.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0025 Locations define entities that describe physical, logical and cyber locations for Assets.
+ */
+ private void add0025Locations()
+ {
+ this.archiveBuilder.addEntityDef(getLocationEntity());
+
+ this.archiveBuilder.addRelationshipDef(getNestedLocationRelationship());
+ this.archiveBuilder.addRelationshipDef(getAdjacentLocationRelationship());
+ this.archiveBuilder.addRelationshipDef(getAssetLocationRelationship());
+
+ this.archiveBuilder.addClassificationDef(getMobileAssetClassification());
+ this.archiveBuilder.addClassificationDef(getFixedLocationClassification());
+ this.archiveBuilder.addClassificationDef(getSecureLocationClassification());
+ this.archiveBuilder.addClassificationDef(getCyberLocationClassification());
+ }
+
+ private EntityDef getLocationEntity()
+ {
+ final String guid = "3e09cb2b-5f15-4fd2-b004-fe0146ad8628";
+ final String name = "Location";
+ final String description = "A physical place, digital location or area.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getNestedLocationRelationship()
+ {
+ final String guid = "f82a96c2-95a3-4223-88c0-9cbf2882b772";
+ final String name = "NestedLocation";
+ final String description = "Link between two locations to show one is nested inside another.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAdjacentLocationRelationship()
+ {
+ final String guid = "017d0518-fc25-4e5e-985e-491d91e61e17";
+ final String name = "AdjacentLocation";
+ final String description = "Link between two locations that are next to one another.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAssetLocationRelationship()
+ {
+ final String guid = "bc236b62-d0e6-4c5c-93a1-3a35c3dba7b1";
+ final String name = "AssetLocation";
+ final String description = "Location of an Asset.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getMobileAssetClassification()
+ {
+ final String guid = "b25fb90d-8fa2-4aa9-b884-ff0a6351a697";
+ final String name = "MobileAsset";
+ final String description = "An asset not restricted to a single physical location.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getFixedLocationClassification()
+ {
+ final String guid = "bc111963-80c7-444f-9715-946c03142dd2";
+ final String name = "FixedLocation";
+ final String description = "A location linked to a physical place.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getSecureLocationClassification()
+ {
+ final String guid = "e7b563c0-fcdd-4ba7-a046-eecf5c4638b8";
+ final String name = "SecureLocation";
+ final String description = "A location that protects the assets in its care.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getCyberLocationClassification()
+ {
+ final String guid = "f9ec3633-8ac8-480b-aa6d-5e674b9e1b17";
+ final String name = "CyberLocation";
+ final String description = "A digital location.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0030 Hosts and Platforms describe the Software and Hardware platforms hosting Assets.
+ */
+ private void add0030HostsAndPlatforms()
+ {
+ this.archiveBuilder.addEnumDef(getEndiannessEnum());
+
+ this.archiveBuilder.addEntityDef(getITInfrastructureEntity());
+ this.archiveBuilder.addEntityDef(getHostEntity());
+ this.archiveBuilder.addEntityDef(getOperatingPlatformEntity());
+
+ this.archiveBuilder.addRelationshipDef(getHostLocationRelationship());
+ this.archiveBuilder.addRelationshipDef(getHostOperatingPlatformRelationship());
+ }
+
+ private EnumDef getEndiannessEnum()
+ {
+ final String guid = "e5612c3a-49bd-4148-8f67-cfdf145d5fd8";
+ final String name = "Endianness";
+ final String description = "Defines the sequential order in which bytes are arranged into larger numerical values when stored in memory or when transmitted over digital links.";
+ final String descriptionGUID = null;
+
+ EnumDef enumDef = getEmptyEnumDef(guid, name, description, descriptionGUID);
+
+ ArrayList<EnumElementDef> elementDefs = new ArrayList();
+ EnumElementDef elementDef;
+
+ final int element1Ordinal = 0;
+ final String element1Value = "Big Endian";
+ final String element1Description = "Bits or bytes order from the big end.";
+ final String element1DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element1Ordinal, element1Value, element1Description, element1DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element2Ordinal = 1;
+ final String element2Value = "Little Endian";
+ final String element2Description = "Bits or bytes ordered from the little end.";
+ final String element2DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element2Ordinal, element2Value, element2Description, element2DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ return enumDef;
+ }
+
+ private EntityDef getITInfrastructureEntity()
+ {
+ final String guid = "151e6dd1-54a0-4b7f-a072-85caa09d1dda";
+ final String name = "ITInfrastructure";
+ final String description = "Hardware and base software that supports an IT system.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getHostEntity()
+ {
+ final String guid = "1abd16db-5b8a-4fd9-aee5-205db3febe99";
+ final String name = "Host";
+ final String description = "Named IT infrastructure system that supports multiple software servers.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getOperatingPlatformEntity()
+ {
+ final String guid = "bd96a997-8d78-42f6-adf7-8239bc98501c";
+ final String name = "OperatingPlatform";
+ final String description = "Characteristics of the operating system in use within a host.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getHostLocationRelationship()
+ {
+ final String guid = "f3066075-9611-4886-9244-32cc6eb07ea9";
+ final String name = "HostLocation";
+ final String description = "Defines the location of a host.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getHostOperatingPlatformRelationship()
+ {
+ final String guid = "b9179df5-6e23-4581-a8b0-2919e6322b12";
+ final String name = "HostOperatingPlatform";
+ final String description = "Identifies the operating platform for a host.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0035 Complex Hosts describe virtualization and clustering options for Hosts.
+ */
+ private void add0035ComplexHosts()
+ {
+ this.archiveBuilder.addEntityDef(getHostClusterEntity());
+ this.archiveBuilder.addEntityDef(getVirtualContainerEntity());
+
+ this.archiveBuilder.addRelationshipDef(getHostClusterMemberRelationship());
+ this.archiveBuilder.addRelationshipDef(getDeployedVirtualContainerRelationship());
+ }
+
+ private EntityDef getHostClusterEntity()
+ {
+ final String guid = "9794f42f-4c9f-4fe6-be84-261f0a7de890";
+ final String name = "HostCluster";
+ final String description = "A group of hosts operating together to provide a scalable platform.";
+ final String descriptionGUID = null;
+ // TODO
+ return null;
+ }
+
+ private EntityDef getVirtualContainerEntity()
+ {
+ final String guid = "e2393236-100f-4ac0-a5e6-ce4e96c521e7";
+ final String name = "VirtualContainer";
+ final String description = "Container-based virtual host.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getHostClusterMemberRelationship()
+ {
+ final String guid = "1a1c3933-a583-4b0c-9e42-c3691296a8e0";
+ final String name = "HostClusterMember";
+ final String description = "Identifies a host as a member of a host cluster.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getDeployedVirtualContainerRelationship()
+ {
+ final String guid = "4b981d89-e356-4d9b-8f17-b3a8d5a86676";
+ final String name = "DeployedVirtualContainer";
+ final String description = "Identifies the real host where a virtual container is deployed to.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0040 Software Servers describe the structure of a software server and its capabilities.
+ */
+ private void add0040SoftwareServers()
+ {
+ this.archiveBuilder.addEnumDef(getOperationalStatusEnum());
+
+ this.archiveBuilder.addEntityDef(getSoftwareServerEntity());
+ this.archiveBuilder.addEntityDef(getEndpointEntity());
+ this.archiveBuilder.addEntityDef(getSoftwareServerCapabilityEntity());
+
+ this.archiveBuilder.addRelationshipDef(getServerDeploymentRelationship());
+ this.archiveBuilder.addRelationshipDef(getServerSupportedCapabilityRelationship());
+ this.archiveBuilder.addRelationshipDef(getServerEndpointRelationship());
+ }
+
+
+ private EnumDef getOperationalStatusEnum()
+ {
+ final String guid = "24e1e33e-9250-4a6c-8b07-05c7adec3a1d";
+ final String name = "OperationalStatus";
+ final String description = "Defines whether a component is operational.";
+ final String descriptionGUID = null;
+
+ EnumDef enumDef = getEmptyEnumDef(guid, name, description, descriptionGUID);
+
+ ArrayList<EnumElementDef> elementDefs = new ArrayList();
+ EnumElementDef elementDef;
+
+ final int element1Ordinal = 0;
+ final String element1Value = "Disabled";
+ final String element1Description = "The component is not operational.";
+ final String element1DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element1Ordinal, element1Value, element1Description, element1DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ final int element2Ordinal = 1;
+ final String element2Value = "Enabled";
+ final String element2Description = "The component is operational.";
+ final String element2DescriptionGUID = null;
+
+ elementDef = getEnumElementDef(element2Ordinal, element2Value, element2Description, element2DescriptionGUID);
+ elementDefs.add(elementDef);
+
+ return enumDef;
+ }
+
+
+ private EntityDef getSoftwareServerEntity()
+ {
+ final String guid = "aa7c7884-32ce-4991-9c41-9778f1fec6aa";
+ final String name = "SoftwareServer";
+ final String description = "Software services to support a runtime environment for applications and data stores.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+
+ private EntityDef getEndpointEntity()
+ {
+ final String guid = "dbc20663-d705-4ff0-8424-80c262c6b8e7";
+ final String name = "Endpoint";
+ final String description = "Description of the network address and related information needed to call a software service.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+
+ private EntityDef getSoftwareServerCapabilityEntity()
+ {
+ final String guid = "fe30a033-8f86-4d17-8986-e6166fa24177";
+ final String name = "SoftwareServerCapability";
+ final String description = "A software capability such as an application, that is deployed to a software server.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+
+ private RelationshipDef getServerDeploymentRelationship()
+ {
+ final String guid = "d909eb3b-5205-4180-9f63-122a65b30738";
+ final String name = "ServerDeployment";
+ final String description = "Defines the host that a software server is deployed to.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getServerSupportedCapabilityRelationship()
+ {
+ final String guid = "8b7d7da5-0668-4174-a43b-8f8c6c068dd0";
+ final String name = "ServerSupportedCapability";
+ final String description = "Identifies a software capability that is deployed to a software server.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getServerEndpointRelationship()
+ {
+ final String guid = "2b8bfab4-8023-4611-9833-82a0dc95f187";
+ final String name = "ServerEndpoint";
+ final String description = "Defines an endpoint associated with a server.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0045 Servers and Assets defines the relationships between SoftwareServers and Assets.
+ */
+ private void add0045ServersAndAssets()
+ {
+ this.archiveBuilder.addEnumDef(getServerAssetUseTypeEnum());
+
+ this.archiveBuilder.addRelationshipDef(getServerAssetUseRelationship());
+ }
+
+
+ private EnumDef getServerAssetUseTypeEnum()
+ {
+ final String guid = "09439481-9489-467c-9ae5-178a6e0b6b5a";
+ final String name = "ServerAssetUse";
+ final String description = "Defines how a server capability may use an asset.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getServerAssetUseRelationship()
+ {
+ final String guid = "92b75926-8e9a-46c7-9d98-89009f622397";
+ final String name = "AssetServerUse";
+ final String description = "Defines that a server capability is using an asset.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0070 Networks and Gateways provide a very simple network model.
+ */
+ private void add0070NetworksAndGateways()
+ {
+ this.archiveBuilder.addEntityDef(getNetworkEntity());
+ this.archiveBuilder.addEntityDef(getNetworkGatewayEntity());
+
+ this.archiveBuilder.addRelationshipDef(getHostNetworkRelationship());
+ this.archiveBuilder.addRelationshipDef(getNetworkGatewayLinkRelationship());
+ }
+
+ private EntityDef getNetworkEntity()
+ {
+ final String guid = "e0430f59-f021-411a-9d81-883e1ff3f6f6";
+ final String name = "ITInfrastructure";
+ final String description = "Hardware and base software that supports an IT system.";
+ final String descriptionGUID = null;
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getNetworkGatewayEntity()
+ {
+ final String guid = "9bbae94d-e109-4c96-b072-4f97123f04fd";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getHostNetworkRelationship()
+ {
+ final String guid = "f2bd7401-c064-41ac-862c-e5bcdc98fa1e";
+
+ // TODO
+ return null;
+ }
+
+
+ private RelationshipDef getNetworkGatewayLinkRelationship()
+ {
+ final String guid = "5bece460-1fa6-41fb-a29f-fdaf65ec8ce3";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+ /**
+ * 0090 Cloud Platforms and Services provides classifications for infrastructure to allow cloud platforms
+ * and services to be identified.
+ */
+ private void add0090CloudPlatformsAndServices()
+ {
+ this.archiveBuilder.addClassificationDef(getCloudProviderClassification());
+ this.archiveBuilder.addClassificationDef(getCloudPlatformClassification());
+ this.archiveBuilder.addClassificationDef(getCloudServiceClassification());
+ }
+
+ private ClassificationDef getCloudProviderClassification()
+ {
+ final String guid = "a2bfdd08-d0a8-49db-bc97-7f2406281046";
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getCloudPlatformClassification()
+ {
+ final String guid = "1b8f8511-e606-4f65-86d3-84891706ad12";
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getCloudServiceClassification()
+ {
+ final String guid = "337e7b1a-ad4b-4818-aa3e-0ff3307b2fbe";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * ========================================
+ * AREA 1 - collaboration
+ */
+
+ private void addArea1Types()
+ {
+ this.add0110Actors();
+ this.add0120Collections();
+ this.add0130Projects();
+ this.add0135Meetings();
+ this.add0140Communities();
+ this.add0150Feedback();
+ this.add0160Notes();
+ }
+
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+ /**
+ * 0110 Actors describe the people and their relationships who are using the Assets.
+ */
+ private void add0110Actors()
+ {
+ this.archiveBuilder.addEnumDef(getCrowdSourcingRoleEnum());
+ this.archiveBuilder.addEnumDef(getContactMethodTypeEnum());
+
+ this.archiveBuilder.addEntityDef(getActorProfileEntity());
+ this.archiveBuilder.addEntityDef(getTeamEntity());
+ this.archiveBuilder.addEntityDef(getPersonEntity());
+ this.archiveBuilder.addEntityDef(getUserIdentityEntity());
+ this.archiveBuilder.addEntityDef(getContactDetailsEntity());
+
+ this.archiveBuilder.addRelationshipDef(getContactThroughRelationship());
+ this.archiveBuilder.addRelationshipDef(getLeadershipRelationship());
+ this.archiveBuilder.addRelationshipDef(getPeerRelationship());
+ this.archiveBuilder.addRelationshipDef(getProfileIdentityRelationship());
+ this.archiveBuilder.addRelationshipDef(getContributorRelationship());
+ }
+
+ private EnumDef getCrowdSourcingRoleEnum()
+ {
+ final String guid = "0ded50c2-17cc-4ecf-915e-908e66dbb27f";
+
+ // TODO
+ return null;
+ }
+
+ private EnumDef getContactMethodTypeEnum()
+ {
+ final String guid = "30e7d8cd-df01-46e8-9247-a24c5650910d";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getActorProfileEntity()
+ {
+ final String guid = "5a2f38dc-d69d-4a6f-ad26-ac86f118fa35";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getTeamEntity()
+ {
+ final String guid = "36db26d5-aba2-439b-bc15-d62d373c5db6";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getPersonEntity()
+ {
+ final String guid = "ac406bf8-e53e-49f1-9088-2af28bbbd285";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getUserIdentityEntity()
+ {
+ final String guid = "fbe95779-1f3c-4ac6-aa9d-24963ff16282";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getContactDetailsEntity()
+ {
+ final String guid = "79296df8-645a-4ef7-a011-912d1cdcf75a";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getContactThroughRelationship()
+ {
+ final String guid = "6cb9af43-184e-4dfa-854a-1572bcf0fe75";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getLeadershipRelationship()
+ {
+ final String guid = "5ebc4fb2-b62a-4269-8f18-e9237a2119ca";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getPeerRelationship()
+ {
+ final String guid = "4a316abe-bccd-4d11-ad5a-4bfb4079b80b";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getProfileIdentityRelationship()
+ {
+ final String guid = "01664609-e777-4079-b543-6baffe910ff1";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getContributorRelationship()
+ {
+ final String guid = "4db83564-b200-4956-94a4-c95a5c30e65a";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0120 Collections defines how to group related Referenceables together
+ */
+ private void add0120Collections()
+ {
+ this.archiveBuilder.addEnumDef(getOrderByEnum());
+
+ this.archiveBuilder.addEntityDef(getCollectionEntity());
+
+ this.archiveBuilder.addRelationshipDef(getCollectionMembershipRelationship());
+ this.archiveBuilder.addRelationshipDef(getActorCollectionRelationship());
+
+ this.archiveBuilder.addClassificationDef(getFolderClassification());
+ this.archiveBuilder.addClassificationDef(getSetClassification());
+ }
+
+
+ private EnumDef getOrderByEnum()
+ {
+ final String guid = "1d412439-4272-4a7e-a940-1065f889fc56";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getCollectionEntity()
+ {
+ final String guid = "347005ba-2b35-4670-b5a7-12c9ebed0cf7";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getCollectionMembershipRelationship()
+ {
+ final String guid = "5cabb76a-e25b-4bb5-8b93-768bbac005af";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getActorCollectionRelationship()
+ {
+ final String guid = "73cf5658-6a73-4ebc-8f4d-44fdfac0b437";
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getFolderClassification()
+ {
+ final String guid = "3c0fa687-8a63-4c8e-8bda-ede9c78be6c7";
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getSetClassification()
+ {
+ final String guid = "3947f08d-7412-4022-81fc-344a20dfbb26";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0130 Projects describes the structure of a project and related collections.
+ */
+ private void add0130Projects()
+ {
+ this.archiveBuilder.addEntityDef(getProjectEntity());
+
+ this.archiveBuilder.addRelationshipDef(getProjectHierarchyRelationship());
+ this.archiveBuilder.addRelationshipDef(getProjectDependencyRelationship());
+ this.archiveBuilder.addRelationshipDef(getProjectTeamRelationship());
+ this.archiveBuilder.addRelationshipDef(getProjectResourcesRelationship());
+ this.archiveBuilder.addRelationshipDef(getProjectScopeRelationship());
+
+ this.archiveBuilder.addClassificationDef(getTaskClassification());
+ this.archiveBuilder.addClassificationDef(getCampaignClassification());
+ }
+
+ private EntityDef getProjectEntity()
+ {
+ final String guid = "0799569f-0c16-4a1f-86d9-e2e89568f7fd";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getProjectHierarchyRelationship()
+ {
+ final String guid = "8f1134f6-b9fe-4971-bc57-6e1b8b302b55";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getProjectDependencyRelationship()
+ {
+ final String guid = "5b6a56f1-68e2-4e10-85f0-fda47a4263fd";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getProjectTeamRelationship()
+ {
+ final String guid = "746875af-2e41-4d1f-864b-35265df1d5dc";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getProjectResourcesRelationship()
+ {
+ final String guid = "03d25e7b-1c5b-4352-a472-33aa0ddcad4d";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getProjectScopeRelationship()
+ {
+ final String guid = "bc63ac45-b4d0-4fba-b583-92859de77dd8";
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getTaskClassification()
+ {
+ final String guid = "2312b668-3670-4845-a140-ef88d5a6db0c";
+
+ // TODO
+ return null;
+ }
+
+ private ClassificationDef getCampaignClassification()
+ {
+ final String guid = "41437629-8609-49ef-8930-8c435c912572";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0135 Meetings defines how to record meetings and todos.
+ */
+ private void add0135Meetings()
+ {
+ this.archiveBuilder.addEnumDef(getToDoEnum());
+
+ this.archiveBuilder.addEntityDef(getMeetingEntity());
+ this.archiveBuilder.addEntityDef(getToDoEntity());
+
+ this.archiveBuilder.addRelationshipDef(getMeetingOnReferenceableRelationship());
+ this.archiveBuilder.addRelationshipDef(getTodoOnReferenceableRelationship());
+ this.archiveBuilder.addRelationshipDef(getProjectMeetingRelationship());
+ }
+
+
+ private EnumDef getToDoEnum()
+ {
+ final String guid = "7197ea39-334d-403f-a70b-d40231092df7";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getMeetingEntity()
+ {
+ final String guid = "6bf90c79-32f4-47ad-959c-8fff723fe744";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getToDoEntity()
+ {
+ final String guid = "93dbc58d-c826-4bc2-b36f-195148d46f86";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getMeetingOnReferenceableRelationship()
+ {
+ final String guid = "a05f918e-e7e2-419d-8016-5b37406df63a";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getTodoOnReferenceableRelationship()
+ {
+ final String guid = "aca1277b-bf1c-42f5-9b3b-fbc2c9047325";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getProjectMeetingRelationship()
+ {
+ final String guid = "af2b5fab-8f83-4a2b-b749-1e6219f61f79";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0140 Communities describe communities of people who have similar interests.
+ */
+ private void add0140Communities()
+ {
+ this.archiveBuilder.addEnumDef(getCommunityMembershipTypeEnum());
+
+ this.archiveBuilder.addEntityDef(getCommunityEntity());
+
+ this.archiveBuilder.addRelationshipDef(getCommunityMembershipRelationship());
+ this.archiveBuilder.addRelationshipDef(getCommunityResourcesRelationship());
+ }
+
+
+ private EnumDef getCommunityMembershipTypeEnum()
+ {
+ final String guid = "b0ef45bf-d12b-4b6f-add6-59c14648d750";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getCommunityEntity()
+ {
+ final String guid = "fbd42379-f6c3-4f08-b6f7-378565cda993";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getCommunityMembershipRelationship()
+ {
+ final String guid = "7c7da1a3-01b3-473e-972e-606eff0cb112";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getCommunityResourcesRelationship()
+ {
+ final String guid = "484d4fb9-4927-4926-8e6d-03e6c9885254";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0150 Feedback provides all of the collaborative feedback and attachments that can be made by the user
+ * community of the Assets.
+ */
+ private void add0150Feedback()
+ {
+ this.archiveBuilder.addEnumDef(getStarRatingEnum());
+ this.archiveBuilder.addEnumDef(getCommentTypeEnum());
+
+ this.archiveBuilder.addEntityDef(getRatingEntity());
+ this.archiveBuilder.addEntityDef(getCommentEntity());
+ this.archiveBuilder.addEntityDef(getLikeEntity());
+ this.archiveBuilder.addEntityDef(getInformalTagEntity());
+ this.archiveBuilder.addEntityDef(getPrivateTagEntity());
+
+ this.archiveBuilder.addRelationshipDef(getAttachRatingRelationship());
+ this.archiveBuilder.addRelationshipDef(getAttachedCommentRelationship());
+ this.archiveBuilder.addRelationshipDef(getAttachedLikeRelationship());
+ this.archiveBuilder.addRelationshipDef(getAcceptedAnswerRelationship());
+ this.archiveBuilder.addRelationshipDef(getAttachedTagRelationship());
+ }
+
+
+ private EnumDef getStarRatingEnum()
+ {
+ final String guid = "77fea3ef-6ec1-4223-8408-38567e9d3c93";
+
+ // TODO
+ return null;
+ }
+
+ private EnumDef getCommentTypeEnum()
+ {
+ final String guid = "06d5032e-192a-4f77-ade1-a4b97926e867";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getRatingEntity()
+ {
+ final String guid = "7299d721-d17f-4562-8286-bcd451814478";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getCommentEntity()
+ {
+ final String guid = "1a226073-9c84-40e4-a422-fbddb9b84278";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getLikeEntity()
+ {
+ final String guid = "deaa5ca0-47a0-483d-b943-d91c76744e01";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getInformalTagEntity()
+ {
+ final String guid = "ba846a7b-2955-40bf-952b-2793ceca090a";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getPrivateTagEntity()
+ {
+ final String guid = "9b3f5443-2475-4522-bfda-8f1f17e9a6c3";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAttachRatingRelationship()
+ {
+ final String guid = "0aaad9e9-9cc5-4ad8-bc2e-c1099bab6344";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAttachedCommentRelationship()
+ {
+ final String guid = "0d90501b-bf29-4621-a207-0c8c953bdac9";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAttachedLikeRelationship()
+ {
+ final String guid = "e2509715-a606-415d-a995-61d00503dad4";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAcceptedAnswerRelationship()
+ {
+ final String guid = "ecf1a3ca-adc5-4747-82cf-10ec590c5c69";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAttachedTagRelationship()
+ {
+ final String guid = "4b1641c4-3d1a-4213-86b2-d6968b6c65ab";
+
+ // TODO
+ return null;
+ }
+
+
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+
+ /**
+ * 0160 Notes describes notelogs and notes within them. Notes are kept but the owners/stewards working on the
+ * Assets.
+ */
+ private void add0160Notes()
+ {
+ this.archiveBuilder.addEntityDef(getNoteEntryEntity());
+ this.archiveBuilder.addEntityDef(getNoteLogEntity());
+
+ this.archiveBuilder.addRelationshipDef(getAttachedNoteLogRelationship());
+ this.archiveBuilder.addRelationshipDef(getAttachedNoteLogEntryRelationship());
+ }
+
+ private EntityDef getNoteEntryEntity()
+ {
+ final String guid = "2a84d94c-ac6f-4be1-a72a-07dcec7b1fe3";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getNoteLogEntity()
+ {
+ final String guid = "646727c7-9ad4-46fa-b660-265489ad96c6";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAttachedNoteLogRelationship()
+ {
+ final String guid = "4f798c0c-6769-4a2d-b489-d2714d89e0a4";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getAttachedNoteLogEntryRelationship()
+ {
+ final String guid = "38edecc6-f385-4574-8144-524a44e3e712";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * ========================================
+ * AREA 2 - connectors and assets
+ */
+
+ /**
+ * Area 2 covers the different types of Assets and the Connection information used by the Open Connector Framework
+ * (OCF).
+ */
+ private void addArea2Types()
+ {
+ this.add0201ConnectorsAndConnections();
+ this.add0205ConnectionLinkage();
+ this.add0210DataStores();
+ this.add0211DataSets();
+ this.add0212DeployedAPIs();
+ this.add0215SoftwareComponents();
+ this.add0217AutomatedProcesses();
+ this.add0220FilesAndFolders();
+ this.add0221DocumentStores();
+ this.add0222GraphStores();
+ this.add0223EventsAndLogs();
+ this.add0224Databases();
+ this.add0225MetadataRepositories();
+ this.add0227Keystores();
+ this.add0230CodeTables();
+ this.add0235InfomationView();
+ this.add0237InformationSet();
+ this.add0239Reports();
+ this.add0240ApplicationsAndProcesses();
+ this.add0250DataProcessingEngines();
+ this.add0260Transformations();
+ this.add0265AnalyticsAssets();
+ this.add0270IoTAssets();
+ this.add0280ModelAssets();
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+ /**
+ * 0201 Connectors and Connections defines the details of the Connection that describes the connector type
+ * and endpoint for a specific connector instance.
+ */
+ void add0201ConnectorsAndConnections()
+ {
+ this.archiveBuilder.addEntityDef(getConnectionEntity());
+ this.archiveBuilder.addEntityDef(getConnectorTypeEntity());
+
+ this.archiveBuilder.addRelationshipDef(getConnectionEndpointRelationship());
+ this.archiveBuilder.addRelationshipDef(getConnectionConnectorTypeRelationship());
+ }
+
+ private EntityDef getConnectionEntity()
+ {
+ final String guid = "114e9f8f-5ff3-4c32-bd37-a7eb42712253";
+
+ // TODO
+ return null;
+ }
+
+ private EntityDef getConnectorTypeEntity()
+ {
+ final String guid = "954421eb-33a6-462d-a8ca-b5709a1bd0d4";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getConnectionEndpointRelationship()
+ {
+ final String guid = "887a7132-d6bc-4b92-a483-e80b60c86fb2";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getConnectionConnectorTypeRelationship()
+ {
+ final String guid = "e542cfc1-0b4b-42b9-9921-f0a5a88aaf96";
+
+ // TODO
+ return null;
+ }
+
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ */
+
+ /**
+ * 0205 Connection Links defines the relationship between the connection and an Asset, plus the nesting
+ * of connections for information virtualization support.
+ */
+ void add0205ConnectionLinkage()
+ {
+ this.archiveBuilder.addEntityDef(getVirtualConnectionEntity());
+
+ this.archiveBuilder.addRelationshipDef(getEmbeddedConnectionRelationship());
+ this.archiveBuilder.addRelationshipDef(getConnectionsToAssetRelationship());
+ }
+
+ private EntityDef getVirtualConnectionEntity()
+ {
+ final String guid = "82f9c664-e59d-484c-a8f3-17088c23a2f3";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getEmbeddedConnectionRelationship()
+ {
+ final String guid = "eb6dfdd2-8c6f-4f0d-a17d-f6ce4799f64f";
+
+ // TODO
+ return null;
+ }
+
+ private RelationshipDef getConnectionsToAssetRelationship()
+ {
+ final String guid = "e777d660-8dbe-453e-8b83-903771f054c0";
+
+ // TODO
+ return null;
+ }
+
+ /*
+ * -------------------------------------------------------------------------------------------------------
+ *
<TRUNCATED>