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 dde055049a76b2d45ca7fb66ae3396cec2b5f89c..8ce0e0e2e2e5c84116fe1eb8df1c3bdf322de022 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 e82f1185d44bca9126ad7e19da5fe756060a4888..aabd490b0fb8a6b5e801f6132113726a9361d258 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 9b1baa5b9e02d2ce87d7b603b624a475a0472435..1e601cb2116c92ae3aa31aaca4be01b429f9e826 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 1c8c6778100539b3f6eb8076bf06e346bbbe856d..eca97ce64c7f235fe5b7ec6d26e003301bb53bff 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