diff --git a/src/main/java/org/caosdb/server/grpc/EntityTransactionImpl.java b/src/main/java/org/caosdb/server/grpc/EntityTransactionImpl.java index e03fd6333b75caf422b47043a8b5bdc195f7c2a9..2ccba8ae455dc5812d0287348bdf9a10ce39dfc8 100644 --- a/src/main/java/org/caosdb/server/grpc/EntityTransactionImpl.java +++ b/src/main/java/org/caosdb/server/grpc/EntityTransactionImpl.java @@ -1,18 +1,44 @@ package org.caosdb.server.grpc; -import io.grpc.stub.StreamObserver; +import java.util.UUID; +import org.apache.shiro.SecurityUtils; import org.caosdb.grpc.Entity; import org.caosdb.grpc.EntityTransactionServiceGrpc.EntityTransactionServiceImplBase; +import org.caosdb.server.entity.EntityInterface; +import org.caosdb.server.entity.container.RetrieveContainer; +import org.caosdb.server.transaction.Retrieve; +import org.caosdb.server.utils.EntityStatus; +import io.grpc.stub.StreamObserver; public class EntityTransactionImpl extends EntityTransactionServiceImplBase { @Override public void retrieve(Entity request, StreamObserver<Entity> responseObserver) { - Entity response = - Entity.newBuilder(request) - .setName("EntityName") - .setDescription("EntityDescription") - .build(); + String requested_entity_id = request.getEid(); + + RetrieveContainer container = new RetrieveContainer(SecurityUtils.getSubject(), System.currentTimeMillis(), UUID.randomUUID().toString(), null); + container.add(Integer.parseInt(requested_entity_id)); + Retrieve retrieve = new Retrieve(container); + try { + retrieve.execute(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + EntityInterface retrieved_entity = retrieve.getContainer().get(0); + + Entity response; + if (retrieved_entity.getEntityStatus() == EntityStatus.VALID) { + response = + Entity.newBuilder(request) + + + .setName(retrieved_entity.getName()) + .setDescription(retrieved_entity.getDescription()) + .build(); + } else { + response = Entity.newBuilder(request).setDescription("DOES NOT EXIST").build(); + } responseObserver.onNext(response); responseObserver.onCompleted();