From c4f1264958bc4524ec3b5112910ea9b98618c894 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Thu, 1 Sep 2022 16:23:31 +0200 Subject: [PATCH] WIP: entity-id --- .../backend/transaction/GetFileRecordByPath.java | 4 ++-- .../transaction/RetrieveSparseEntity.java | 5 +++++ .../server/resource/FileSystemResource.java | 16 ++++++---------- .../transaction/RetrieveSparseEntityByPath.java | 10 ++++++---- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java b/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java index dde05504..8ce0e0e2 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java @@ -42,12 +42,12 @@ public class GetFileRecordByPath extends CacheableBackendTransaction<String, Spa public GetFileRecordByPath(final String path) { super(cache); - this.path = path; + this.path = (path == null ? null : path.replaceFirst("^/", "")); } public static void removeCached(final String path) { if (path != null && cache != null) { - cache.remove(path); + cache.remove(path.replaceFirst("^/", "")); } } diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java index e82f1185..aabd490b 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java @@ -64,6 +64,11 @@ public class RetrieveSparseEntity extends CacheableBackendTransaction<String, Sp this.entity.getVersion().setId(version); } + public RetrieveSparseEntity(SparseEntity entity) { + this(new RetrieveEntity(new EntityID(entity.id))); + this.entity.getVersion().setId(entity.versionId); + } + @Override public SparseEntity executeNoCache() throws TransactionException { final RetrieveSparseEntityImpl t = getImplementation(RetrieveSparseEntityImpl.class); diff --git a/src/main/java/org/caosdb/server/resource/FileSystemResource.java b/src/main/java/org/caosdb/server/resource/FileSystemResource.java index 9b1baa5b..1e601cb2 100644 --- a/src/main/java/org/caosdb/server/resource/FileSystemResource.java +++ b/src/main/java/org/caosdb/server/resource/FileSystemResource.java @@ -30,14 +30,11 @@ import java.io.IOException; import org.caosdb.server.database.backend.implementation.MySQL.ConnectionException; import org.caosdb.server.database.exceptions.EntityDoesNotExistException; import org.caosdb.server.database.misc.TransactionBenchmark; -import org.caosdb.server.entity.Entity; -import org.caosdb.server.entity.FileProperties; +import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.Message; import org.caosdb.server.entity.Message.MessageType; -import org.caosdb.server.entity.RetrieveEntity; import org.caosdb.server.permissions.EntityPermission; import org.caosdb.server.transaction.RetrieveSparseEntityByPath; -import org.caosdb.server.transaction.Transaction; import org.caosdb.server.utils.FileUtils; import org.caosdb.server.utils.ServerMessages; import org.jdom2.Attribute; @@ -186,7 +183,7 @@ public class FileSystemResource extends AbstractCaosDBServerResource { } protected String getEntityID(final String path) throws Exception { - final Entity fileEnt = getEntity(path); + final EntityInterface fileEnt = getEntity(path); return fileEnt.getId().toString(); } @@ -197,13 +194,12 @@ public class FileSystemResource extends AbstractCaosDBServerResource { * @return * @throws Exception */ - private Entity getEntity(final String path) throws Exception { + private EntityInterface getEntity(final String path) throws Exception { final long t1 = System.currentTimeMillis(); - final Entity e = new RetrieveEntity(); - final FileProperties fp = new FileProperties(null, path, null); - e.setFileProperties(fp); - final Transaction<?> t = new RetrieveSparseEntityByPath(e); + final EntityInterface e; + final RetrieveSparseEntityByPath t = new RetrieveSparseEntityByPath(path); t.execute(); + e = t.getEntity(); final long t2 = System.currentTimeMillis(); getBenchmark().addMeasurement(this.getClass().getSimpleName() + ".getEntity", t2 - t1); return e; diff --git a/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java b/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java index 1c8c6778..eca97ce6 100644 --- a/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java +++ b/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java @@ -23,16 +23,18 @@ package org.caosdb.server.transaction; import org.caosdb.server.database.backend.transaction.GetFileRecordByPath; +import org.caosdb.server.database.backend.transaction.RetrieveSparseEntity; import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.container.TransactionContainer; public class RetrieveSparseEntityByPath extends Transaction<TransactionContainer> { private EntityInterface entity; + private String path; - public RetrieveSparseEntityByPath(final EntityInterface entity) { + public RetrieveSparseEntityByPath(String path) { super(new TransactionContainer()); - this.entity = entity; + this.path = path; } @Override @@ -57,9 +59,9 @@ public class RetrieveSparseEntityByPath extends Transaction<TransactionContainer @Override protected void transaction() throws Exception { - String path = entity.getFileProperties().getPath(); final GetFileRecordByPath r = execute(new GetFileRecordByPath(path), getAccess()); - entity.parseSparseEntity(r.getEntity()); + RetrieveSparseEntity e = execute(new RetrieveSparseEntity(r.getEntity()), getAccess()); + entity = e.getEntity(); } @Override -- GitLab