From 4bcc2870421fb328cdfe7db28aaa0583379fb257 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 10 Oct 2023 11:12:41 +0200
Subject: [PATCH] WIP: String IDs

---
 src/main/java/org/caosdb/server/entity/Entity.java            | 2 +-
 src/main/java/org/caosdb/server/entity/EntityInterface.java   | 4 ++++
 src/main/java/org/caosdb/server/jobs/LazyEntityResolver.java  | 2 ++
 .../java/org/caosdb/server/jobs/core/GenerateEntityId.java    | 2 +-
 src/main/java/org/caosdb/server/query/Query.java              | 2 +-
 5 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/caosdb/server/entity/Entity.java b/src/main/java/org/caosdb/server/entity/Entity.java
index 16dbbdd5..b27eaa28 100644
--- a/src/main/java/org/caosdb/server/entity/Entity.java
+++ b/src/main/java/org/caosdb/server/entity/Entity.java
@@ -654,7 +654,7 @@ public abstract class Entity extends AbstractObservable implements EntityInterfa
 
     // Parse ID. Generate error if it isn't an integer.
     if (element.getAttribute("id") != null && !element.getAttributeValue("id").equals("")) {
-      this.getId().setId(element.getAttributeValue("id"));
+      this.setId(element.getAttributeValue("id"));
     }
 
     // Parse NAME.
diff --git a/src/main/java/org/caosdb/server/entity/EntityInterface.java b/src/main/java/org/caosdb/server/entity/EntityInterface.java
index ba77b5c4..4a74920e 100644
--- a/src/main/java/org/caosdb/server/entity/EntityInterface.java
+++ b/src/main/java/org/caosdb/server/entity/EntityInterface.java
@@ -194,4 +194,8 @@ public interface EntityInterface
   public abstract boolean isReferenceList();
 
   public abstract SerializeFieldStrategy getSerializeFieldStrategy();
+
+  public default void setId(String id) {
+    getId().setId(id);
+  }
 }
diff --git a/src/main/java/org/caosdb/server/jobs/LazyEntityResolver.java b/src/main/java/org/caosdb/server/jobs/LazyEntityResolver.java
index a85b0ca0..9932962a 100644
--- a/src/main/java/org/caosdb/server/jobs/LazyEntityResolver.java
+++ b/src/main/java/org/caosdb/server/jobs/LazyEntityResolver.java
@@ -71,6 +71,8 @@ public class LazyEntityResolver extends EntityWrapper {
   public void resolveAll() {
     resolveParents();
     resolveProperties();
+    // release the transaction for the garbage collector
+    this.transaction = null;
   }
 
   @Override
diff --git a/src/main/java/org/caosdb/server/jobs/core/GenerateEntityId.java b/src/main/java/org/caosdb/server/jobs/core/GenerateEntityId.java
index 4bb23ab4..e3b21d9b 100644
--- a/src/main/java/org/caosdb/server/jobs/core/GenerateEntityId.java
+++ b/src/main/java/org/caosdb/server/jobs/core/GenerateEntityId.java
@@ -44,7 +44,7 @@ public class GenerateEntityId extends EntityJob {
         && getTransaction() instanceof WriteTransactionInterface
         && entity.getEntityStatus() == EntityStatus.QUALIFIED) {
       String id = ((WriteTransactionInterface) getTransaction()).generateId();
-      entity.getId().setId(id);
+      entity.setId(id);
     }
   }
 }
diff --git a/src/main/java/org/caosdb/server/query/Query.java b/src/main/java/org/caosdb/server/query/Query.java
index 038e4d18..0574cd1e 100644
--- a/src/main/java/org/caosdb/server/query/Query.java
+++ b/src/main/java/org/caosdb/server/query/Query.java
@@ -258,7 +258,7 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac
 
     public boolean isInternal() {
       try {
-        return Integer.parseInt(id) < 101;
+        return Integer.parseInt(id) < 100;
       } catch (NumberFormatException e) {
         return false;
       }
-- 
GitLab