Added classification as relation to test and teststep

Change-Id: Ib2f08673670aa27da06988c328f7bc2c716a719d
Signed-off-by: Alexander Knoblauch <a.knoblauch@peak-solution.de>
diff --git a/src/main/java/org/eclipse/mdm/api/odsadapter/lookup/config/DefaultEntityConfigRepositoryLoader.java b/src/main/java/org/eclipse/mdm/api/odsadapter/lookup/config/DefaultEntityConfigRepositoryLoader.java
index 1b6c48b..82529f5 100644
--- a/src/main/java/org/eclipse/mdm/api/odsadapter/lookup/config/DefaultEntityConfigRepositoryLoader.java
+++ b/src/main/java/org/eclipse/mdm/api/odsadapter/lookup/config/DefaultEntityConfigRepositoryLoader.java
@@ -152,16 +152,29 @@
 		templateTestStepConfig.setComparator(Versionable.COMPARATOR);
 		entityConfigRepository.register(templateTestStepConfig);
 
-		// Status TestStep
-		// TODO check MIME type genration
-		// entityConfigRepository.register(create(new Key<>(Status.class,
-		// TestStep.class), "StatusTestStep", true));
+		// Status
+		entityConfigRepository.register(create(modelManager, new Key<>(Status.class), "Status", false));
+
+		// ProjectDomain
+		entityConfigRepository.register(create(modelManager, new Key<>(ProjectDomain.class), "ProjectDomain", false));
+
+		// Domain
+		entityConfigRepository.register(create(modelManager, new Key<>(Domain.class), "Domain", false));
+
+		// Classification
+		EntityConfig<Classification> classificationConfig = create(modelManager, new Key<>(Classification.class),
+				"Classification", false);
+		classificationConfig.addOptional(entityConfigRepository.findRoot(new Key<>(Status.class)));
+		classificationConfig.addOptional(entityConfigRepository.findRoot(new Key<>(ProjectDomain.class)));
+		classificationConfig.addOptional(entityConfigRepository.findRoot(new Key<>(Domain.class)));
+		entityConfigRepository.register(classificationConfig);
 
 		// TestStep
 		EntityConfig<TestStep> testStepConfig = create(modelManager, new Key<>(TestStep.class), "TestStep", true);
 		// testStepConfig.addMandatory(entityConfigRepository.findRoot(new
 		// Key<>(Status.class, TestStep.class)));
 		testStepConfig.addOptional(entityConfigRepository.findRoot(new Key<>(TemplateTestStep.class)));
+		testStepConfig.addOptional(entityConfigRepository.findRoot(new Key<>(Classification.class)));
 		testStepConfig.setComparator(Sortable.COMPARATOR);
 		entityConfigRepository.register(testStepConfig);
 
@@ -187,26 +200,14 @@
 		// testConfig.addMandatory(entityConfigRepository.findRoot(new
 		// Key<>(Status.class, Test.class)));
 		testConfig.addOptional(entityConfigRepository.findRoot(new Key<>(TemplateTest.class)));
+		testConfig.addOptional(entityConfigRepository.findRoot(new Key<>(Classification.class)));
 		entityConfigRepository.register(testConfig);
 
 		// ContextRoots
 		registerContextRoot(modelManager, ContextType.UNITUNDERTEST);
 		registerContextRoot(modelManager, ContextType.TESTSEQUENCE);
 		registerContextRoot(modelManager, ContextType.TESTEQUIPMENT);
-		
-		// Status
-		entityConfigRepository.register(create(modelManager, new Key<>(Status.class), "Status", false));
-		
-		// ProjectDomain
-		entityConfigRepository.register(create(modelManager, new Key<>(ProjectDomain.class), "ProjectDomain", false));
-		
-		// Domain
-		entityConfigRepository.register(create(modelManager, new Key<>(Domain.class), "Domain", false));
-		
-		// Domain
-		entityConfigRepository.register(create(modelManager, new Key<>(Classification.class), "Classification", false));
 
-		
 		LOGGER.debug("Entity configurations loaded in {} ms.", System.currentTimeMillis() - start);
 		return entityConfigRepository;
 	}
@@ -313,7 +314,7 @@
 	/**
 	 * Creates a new {@link EntityConfig}.
 	 *
-	 * @param <T>        The entity type.
+	 * @param            <T> The entity type.
 	 * @param key        Used as identifier.
 	 * @param typeName   Name of the associated {@link EntityType}.
 	 * @param appendName Flag indicates whether to append the entity types base name
diff --git a/src/main/java/org/eclipse/mdm/api/odsadapter/search/BaseEntitySearchQuery.java b/src/main/java/org/eclipse/mdm/api/odsadapter/search/BaseEntitySearchQuery.java
index 4f75079..cc2db44 100644
--- a/src/main/java/org/eclipse/mdm/api/odsadapter/search/BaseEntitySearchQuery.java
+++ b/src/main/java/org/eclipse/mdm/api/odsadapter/search/BaseEntitySearchQuery.java
@@ -89,9 +89,10 @@
 		EntityConfig<?> entityConfig = modelManager.getEntityConfig(new Key<>(entityClass));
 		EntityType source = entityConfig.getEntityType();
 
-		entityConfig.getOptionalConfigs().stream().map(EntityConfig::getEntityType).forEach(entityType -> {
-			joinTree.addNode(source, entityType, true, JoinType.OUTER);
-		});
+		entityConfig.getOptionalConfigs().stream().map(EntityConfig::getEntityType)
+				.filter(et -> !"Classification".equals(et.getName())).forEach(entityType -> {
+					joinTree.addNode(source, entityType, true, JoinType.OUTER);
+				});
 
 		entityConfig.getMandatoryConfigs().stream().map(EntityConfig::getEntityType).forEach(entityType -> {
 			joinTree.addNode(source, entityType, true, JoinType.INNER);
@@ -195,9 +196,10 @@
 		joinTree.addNode(modelManager.getEntityType(joinConfig.source), target, joinConfig.viaParent, JoinType.INNER);
 
 		// add target's optional dependencies
-		targetEntityConfig.getOptionalConfigs().stream().map(EntityConfig::getEntityType).forEach(entityType -> {
-			joinTree.addNode(target, entityType, true, JoinType.OUTER);
-		});
+		targetEntityConfig.getOptionalConfigs().stream().map(EntityConfig::getEntityType)
+				.filter(et -> !"Classification".equals(et.getName())).forEach(entityType -> {
+					joinTree.addNode(target, entityType, true, JoinType.OUTER);
+				});
 
 		// add target's mandatory dependencies
 		targetEntityConfig.getMandatoryConfigs().stream().map(EntityConfig::getEntityType).forEach(entityType -> {