520613 - [REQU-79] Consistent relationships
Signed-off-by: Matthias Koller <m.koller@peak-solution.de>
diff --git a/src/main/java/org/eclipse/mdm/api/base/model/Core.java b/src/main/java/org/eclipse/mdm/api/base/model/Core.java
index edaa8c6..f45f66a 100644
--- a/src/main/java/org/eclipse/mdm/api/base/model/Core.java
+++ b/src/main/java/org/eclipse/mdm/api/base/model/Core.java
@@ -228,7 +228,22 @@
* @return The related entity is returned or null of not defined.
*/
public <T extends Entity> T get(Class<T> entityClass) {
- return entityClass.cast(current.get(entityClass.getSimpleName()));
+ return get(entityClass.getSimpleName(), entityClass);
+ }
+
+ /**
+ * Returns related entity identified by given entity class.
+ *
+ * @param <T>
+ * The desired entity type.
+ * @param relationName
+ * The relation name the entity is referenced by.
+ * @param entityClass
+ * Used as identifier.
+ * @return The related entity is returned or null of not defined.
+ */
+ public <T extends Entity> T get(String relationName, Class<T> entityClass) {
+ return entityClass.cast(current.get(relationName));
}
/**
@@ -238,10 +253,21 @@
* The new related entity.
*/
public void set(Entity entity) {
- String key = entity.getClass().getSimpleName();
- Entity old = current.put(key, entity);
+ set(entity.getClass().getSimpleName(), entity);
+ }
+
+ /**
+ * Replaces a related entity with the given one.
+ *
+ * @param name
+ * The name of the relation the entity is referenced by.
+ * @param entity
+ * The new related entity.
+ */
+ public void set(String name, Entity entity) {
+ Entity old = current.put(name, entity);
if (old != null) {
- removed.put(key, old);
+ removed.put(name, old);
}
}
@@ -253,9 +279,21 @@
*/
public void remove(Class<? extends Entity> entityClass) {
String key = entityClass.getSimpleName();
- Entity old = current.remove(key);
+ remove(key, entityClass);
+ }
+
+ /**
+ * Removes a related entity for given relation name and entity class.
+ *
+ * @param name
+ * The name of the relation the entity is referenced by.
+ * @param entityClass
+ * Used as identifier.
+ */
+ public void remove(String name, Class<? extends Entity> entityClass) {
+ Entity old = current.remove(name);
if (old != null) {
- removed.put(key, old);
+ removed.put(name, old);
}
}