From 0eeade2f4e513cb0d651d457c558f7d72671d0f2 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Wed, 18 Nov 2020 02:32:15 +0100 Subject: [PATCH] FIX buggy job loading during queries --- .../org/caosdb/server/jobs/core/ExecuteQuery.java | 4 ++++ .../org/caosdb/server/jobs/core/RetrieveAllJob.java | 4 ++++ .../org/caosdb/server/transaction/Transaction.java | 12 +----------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/caosdb/server/jobs/core/ExecuteQuery.java b/src/main/java/org/caosdb/server/jobs/core/ExecuteQuery.java index b6583f02..7f5444b3 100644 --- a/src/main/java/org/caosdb/server/jobs/core/ExecuteQuery.java +++ b/src/main/java/org/caosdb/server/jobs/core/ExecuteQuery.java @@ -22,6 +22,7 @@ */ package org.caosdb.server.jobs.core; +import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.Message; import org.caosdb.server.jobs.FlagJob; import org.caosdb.server.jobs.JobAnnotation; @@ -51,5 +52,8 @@ public class ExecuteQuery extends FlagJob { getContainer().addMessage(new Message(e.getMessage())); } getContainer().addMessage(queryInstance); + for (EntityInterface entity : getContainer()) { + getTransaction().getSchedule().addAll(loadJobs(entity, getTransaction())); + } } } diff --git a/src/main/java/org/caosdb/server/jobs/core/RetrieveAllJob.java b/src/main/java/org/caosdb/server/jobs/core/RetrieveAllJob.java index 1ca43cec..603d861a 100644 --- a/src/main/java/org/caosdb/server/jobs/core/RetrieveAllJob.java +++ b/src/main/java/org/caosdb/server/jobs/core/RetrieveAllJob.java @@ -23,6 +23,7 @@ package org.caosdb.server.jobs.core; import org.caosdb.server.database.backend.transaction.RetrieveAll; +import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.jobs.FlagJob; import org.caosdb.server.jobs.JobAnnotation; import org.caosdb.server.jobs.JobExecutionTime; @@ -37,6 +38,9 @@ public class RetrieveAllJob extends FlagJob { value = "ENTITY"; } execute(new RetrieveAll(getContainer(), value)); + for (EntityInterface entity : getContainer()) { + getTransaction().getSchedule().addAll(loadJobs(entity, getTransaction())); + } } } } diff --git a/src/main/java/org/caosdb/server/transaction/Transaction.java b/src/main/java/org/caosdb/server/transaction/Transaction.java index 6fb28c6f..b0f87105 100644 --- a/src/main/java/org/caosdb/server/transaction/Transaction.java +++ b/src/main/java/org/caosdb/server/transaction/Transaction.java @@ -105,17 +105,7 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra // additionally load datatype job if (e.hasValue()) { - boolean found = false; - for (final Job j : loadJobs) { - - if (CheckDatatypePresent.class.isInstance(j) - && ((CheckDatatypePresent) j).getEntity() == e) { - found = true; - } - } - if (!found) { - this.schedule.add(new CheckDatatypePresent().init(Mode.MUST, e, this)); - } + this.schedule.add(new CheckDatatypePresent().init(Mode.MUST, e, this)); } // load pickup job if necessary -- GitLab