From 5131163cb600c330ae1ead18d3fa1a70d767fd49 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <timm.fitschen@ds.mpg.de>
Date: Tue, 11 Dec 2018 00:23:37 +0100
Subject: [PATCH] BUG: resolve names

---
 .../server/entity/container/TransactionContainer.java      | 7 +++++++
 .../java/caosdb/server/jobs/core/CheckDatatypePresent.java | 7 +++++--
 .../java/caosdb/server/jobs/core/CheckNamePresent.java     | 1 +
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/main/java/caosdb/server/entity/container/TransactionContainer.java b/src/main/java/caosdb/server/entity/container/TransactionContainer.java
index 58cdb8d9..ff799a4d 100644
--- a/src/main/java/caosdb/server/entity/container/TransactionContainer.java
+++ b/src/main/java/caosdb/server/entity/container/TransactionContainer.java
@@ -158,6 +158,13 @@ public class TransactionContainer extends Container<Entity> implements ToElement
     return this.owner;
   }
 
+  /**
+   * Get the first entity from this container which has this name.
+   *
+   * <p>Return null if no matching is in this container.
+   *
+   * @param name
+   */
   public EntityInterface getEntityByName(final String name) {
     for (final EntityInterface e : this) {
       if (e.hasName() && e.getName().equals(name)) {
diff --git a/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java b/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java
index 7948900d..69d36f42 100644
--- a/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java
+++ b/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java
@@ -48,10 +48,11 @@ public final class CheckDatatypePresent extends EntityJob {
   @Override
   public final void run() {
     try {
-      resolveId(getEntity());
 
       // inherit datatype
       if (!getEntity().hasDatatype()) {
+        resolveId(getEntity());
+
         inheritDatatypeFromAbstractEntity();
 
         // still no data type ??? try to get it from parent...
@@ -199,7 +200,9 @@ public final class CheckDatatypePresent extends EntityJob {
     if (!entity.hasId() && entity.hasName()) {
       try {
         entity.setId(retrieveValidIDByName(entity.getName()));
-        entity.setEntityStatus(EntityStatus.VALID);
+        if (entity.getEntityStatus() != EntityStatus.UNQUALIFIED) {
+          entity.setEntityStatus(EntityStatus.VALID);
+        }
       } catch (final EntityDoesNotExistException exc) {
         entity.addError(ServerMessages.ENTITY_DOES_NOT_EXIST);
       } catch (final EntityWasNotUniqueException exc) {
diff --git a/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java b/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java
index 813c7dc8..d63a9cc5 100644
--- a/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java
+++ b/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java
@@ -42,6 +42,7 @@ public class CheckNamePresent extends EntityJob {
           break;
         case SHOULD:
           getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_NAME);
+          break;
         default:
           break;
       }
-- 
GitLab