From baf56de63e8743a613186a6cc427077418db70e3 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Mon, 2 Aug 2021 12:26:16 +0200
Subject: [PATCH] WIP: multi-retrieve

---
 pom.xml                                         |  2 +-
 .../grpc/EntityTransactionServiceImpl.java      | 17 +++++++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/pom.xml b/pom.xml
index f3ab3fc5..95345d95 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.caosdb</groupId>
   <artifactId>caosdb-server</artifactId>
-  <version>0.5.0-GRPC0.0.7</version>
+  <version>0.5.0-GRPC0.0.8</version>
   <packaging>jar</packaging>
   <name>CaosDB Server</name>
   <scm>
diff --git a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
index 43d52ba5..cfec8646 100644
--- a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
+++ b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
@@ -218,6 +218,19 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
         final RetrieveEntity entity = new RetrieveEntity(getId(id));
         container.add(entity);
 
+      } catch (final NumberFormatException e) {
+        // We handle this after the retrieval
+      }
+    }
+
+    final Retrieve transaction = new Retrieve(container);
+    transaction.execute();
+
+    for (final TransactionRequest sub_request : request.getRequestsList()) {
+      final String id = sub_request.getRetrieveRequest().getId();
+      try {
+        final EntityInterface entity = container.getEntityById(getId(id));
+
         builder.addResponses(
             TransactionResponse.newBuilder()
                 .setRetrieveResponse(RetrieveResponse.newBuilder().setEntity(convert(entity))));
@@ -230,10 +243,6 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
                     RetrieveResponse.newBuilder().setEntity(entityDoesNotExist(id))));
       }
     }
-
-    final Retrieve transaction = new Retrieve(container);
-    transaction.execute();
-
     return builder.build();
   }
 
-- 
GitLab