diff --git a/conf/core/jobs.csv b/conf/core/jobs.csv index a604e63b736ee5af04889d8ec0af356f76b7a119..71fd6422039c78f3f2ff81ed71e761356763c520 100644 --- a/conf/core/jobs.csv +++ b/conf/core/jobs.csv @@ -21,92 +21,92 @@ # # Five columns: -# DOMAIN_ID, ENTITY_ID, TRANSACTION, JOB, MODE +# DOMAIN_ID, ENTITY_ID, TRANSACTION, JOB, JOB_FAILURE_SEVERITY # general rules -0,0,INSERT,CheckPropValid,MUST -0,0,INSERT,CheckParValid,MUST -0,0,INSERT,CheckParOblPropPresent,MUST -0,0,INSERT,CheckValueParsable,MUST -0,0,UPDATE,CheckPropValid,MUST -0,0,UPDATE,CheckParValid,MUST -0,0,UPDATE,CheckParOblPropPresent,MUST -0,0,UPDATE,CheckValueParsable,MUST -0,0,DELETE,CheckReferenceDependencyExistent,MUST -0,0,DELETE,CheckChildDependencyExistent,MUST +0,0,INSERT,CheckPropValid,ERROR +0,0,INSERT,CheckParValid,ERROR +0,0,INSERT,CheckParOblPropPresent,ERROR +0,0,INSERT,CheckValueParsable,ERROR +0,0,UPDATE,CheckPropValid,ERROR +0,0,UPDATE,CheckParValid,ERROR +0,0,UPDATE,CheckParOblPropPresent,ERROR +0,0,UPDATE,CheckValueParsable,ERROR +0,0,DELETE,CheckReferenceDependencyExistent,ERROR +0,0,DELETE,CheckChildDependencyExistent,ERROR # role specific rules ## recordtype rules -0,1,INSERT,CheckNamePresent,MUST -0,1,INSERT,CheckPropPresent,SHOULD -0,1,INSERT,SetImpToRecByDefault,MUST +0,1,INSERT,CheckNamePresent,ERROR +0,1,INSERT,CheckPropPresent,WARN +0,1,INSERT,SetImpToRecByDefault,ERROR -0,1,UPDATE,CheckNamePresent,MUST -0,1,UPDATE,CheckPropPresent,SHOULD -0,1,UPDATE,SetImpToRecByDefault,MUST +0,1,UPDATE,CheckNamePresent,ERROR +0,1,UPDATE,CheckPropPresent,WARN +0,1,UPDATE,SetImpToRecByDefault,ERROR ## record rules -0,2,INSERT,CheckNamePresent,SHOULD -0,2,INSERT,CheckPropPresent,SHOULD -0,2,INSERT,CheckParPresent,MUST -0,2,INSERT,SetImpToFix,MUST +0,2,INSERT,CheckNamePresent,WARN +0,2,INSERT,CheckPropPresent,WARN +0,2,INSERT,CheckParPresent,ERROR +0,2,INSERT,SetImpToFix,ERROR -0,2,UPDATE,CheckNamePresent,SHOULD -0,2,UPDATE,CheckPropPresent,SHOULD -0,2,UPDATE,CheckParPresent,MUST -0,2,UPDATE,SetImpToFix,MUST +0,2,UPDATE,CheckNamePresent,WARN +0,2,UPDATE,CheckPropPresent,WARN +0,2,UPDATE,CheckParPresent,ERROR +0,2,UPDATE,SetImpToFix,ERROR ## file rules -0,3,INSERT,CheckNamePresent,SHOULD -0,3,INSERT,MatchFileProp,MUST -0,3,INSERT,CheckTargetPathValid,MUST -0,3,INSERT,SetImpToFix,MUST +0,3,INSERT,CheckNamePresent,WARN +0,3,INSERT,MatchFileProp,ERROR +0,3,INSERT,CheckTargetPathValid,ERROR +0,3,INSERT,SetImpToFix,ERROR -0,3,UPDATE,CheckNamePresent,SHOULD -0,3,UPDATE,MatchFileProp,MUST -0,3,UPDATE,CheckTargetPathValid,MUST -0,3,UPDATE,SetImpToFix,MUST +0,3,UPDATE,CheckNamePresent,WARN +0,3,UPDATE,MatchFileProp,ERROR +0,3,UPDATE,CheckTargetPathValid,ERROR +0,3,UPDATE,SetImpToFix,ERROR ## property rules -0,4,INSERT,CheckDatatypePresent,MUST -0,4,UPDATE,CheckDatatypePresent,MUST -0,4,INSERT,CheckNamePresent,MUST -0,4,UPDATE,CheckNamePresent,MUST -0,4,INSERT,SetImpToFix,MUST -0,4,UPDATE,SetImpToFix,MUST +0,4,INSERT,CheckDatatypePresent,ERROR +0,4,UPDATE,CheckDatatypePresent,ERROR +0,4,INSERT,CheckNamePresent,ERROR +0,4,UPDATE,CheckNamePresent,ERROR +0,4,INSERT,SetImpToFix,ERROR +0,4,UPDATE,SetImpToFix,ERROR ## query template rules -0,8,UPDATE,CheckQueryTemplate,MUST -0,8,INSERT,CheckQueryTemplate,MUST +0,8,UPDATE,CheckQueryTemplate,ERROR +0,8,INSERT,CheckQueryTemplate,ERROR # data type specific rules ## reference rules -0,11,INSERT,CheckRefidPresent,SHOULD -0,11,INSERT,CheckRefidValid,MUST -0,11,INSERT,CheckRefidIsaParRefid,SHOULD +0,11,INSERT,CheckRefidPresent,WARN +0,11,INSERT,CheckRefidValid,ERROR +0,11,INSERT,CheckRefidIsaParRefid,WARN -0,11,UPDATE,CheckRefidPresent,SHOULD -0,11,UPDATE,CheckRefidValid,MUST -0,11,UPDATE,CheckRefidIsaParRefid,SHOULD +0,11,UPDATE,CheckRefidPresent,WARN +0,11,UPDATE,CheckRefidValid,ERROR +0,11,UPDATE,CheckRefidIsaParRefid,WARN ## integer rules -0,12,INSERT,CheckUnitPresent,SHOULD -0,12,INSERT,ParseUnit,SHOULD +0,12,INSERT,CheckUnitPresent,WARN +0,12,INSERT,ParseUnit,WARN -0,12,UPDATE,CheckUnitPresent,SHOULD -0,12,UPDATE,ParseUnit,SHOULD +0,12,UPDATE,CheckUnitPresent,WARN +0,12,UPDATE,ParseUnit,WARN ## double rules -0,13,INSERT,CheckUnitPresent,SHOULD -0,13,INSERT,ParseUnit,SHOULD +0,13,INSERT,CheckUnitPresent,WARN +0,13,INSERT,ParseUnit,WARN -0,13,UPDATE,CheckUnitPresent,SHOULD -0,13,UPDATE,ParseUnit,SHOULD +0,13,UPDATE,CheckUnitPresent,WARN +0,13,UPDATE,ParseUnit,WARN ## filereference rules -0,17,INSERT,CheckRefidValid,MUST -0,17,INSERT,CheckRefidIsaParRefid,MUST +0,17,INSERT,CheckRefidValid,ERROR +0,17,INSERT,CheckRefidIsaParRefid,ERROR -0,17,UPDATE,CheckRefidValid,MUST -0,17,UPDATE,CheckRefidIsaParRefid,MUST +0,17,UPDATE,CheckRefidValid,ERROR +0,17,UPDATE,CheckRefidIsaParRefid,ERROR diff --git a/src/main/java/org/caosdb/server/database/proto/Rule.java b/src/main/java/org/caosdb/server/database/proto/Rule.java index 3d25f7662052b5b59f45255218c1191cf011761e..0aa848bbd08b4ff8728785dc24a7ac014f7c1a29 100644 --- a/src/main/java/org/caosdb/server/database/proto/Rule.java +++ b/src/main/java/org/caosdb/server/database/proto/Rule.java @@ -23,7 +23,7 @@ package org.caosdb.server.database.proto; import java.io.Serializable; -import org.caosdb.server.jobs.core.Mode; +import org.caosdb.server.jobs.core.JobFailureSeverity; public class Rule implements Serializable { @@ -33,5 +33,5 @@ public class Rule implements Serializable { public int entity = 0; public String job = null; public String transaction = null; - public Mode mode = null; + public JobFailureSeverity mode = null; } diff --git a/src/main/java/org/caosdb/server/jobs/Job.java b/src/main/java/org/caosdb/server/jobs/Job.java index 0f0875edbe9e183b10909b61296da9c8cae9f920..2954f533f832feadcfd8bbf011167b632d76166a 100644 --- a/src/main/java/org/caosdb/server/jobs/Job.java +++ b/src/main/java/org/caosdb/server/jobs/Job.java @@ -50,7 +50,7 @@ import org.caosdb.server.entity.Message; import org.caosdb.server.entity.container.ParentContainer; import org.caosdb.server.entity.container.TransactionContainer; import org.caosdb.server.entity.wrapper.Parent; -import org.caosdb.server.jobs.core.Mode; +import org.caosdb.server.jobs.core.JobFailureSeverity; import org.caosdb.server.transaction.Transaction; import org.caosdb.server.utils.EntityStatus; import org.caosdb.server.utils.ServerMessages; @@ -70,7 +70,7 @@ public abstract class Job { private static List<Class<? extends Job>> loadAlways; private Transaction<? extends TransactionContainer> transaction = null; - private Mode mode = null; + private JobFailureSeverity mode = null; private final TransactionStage stage; private EntityInterface entity = null; @@ -128,7 +128,7 @@ public abstract class Job { } public final Job init( - final Mode mode, + final JobFailureSeverity mode, final EntityInterface entity, final Transaction<? extends TransactionContainer> transaction) { this.mode = mode; @@ -149,11 +149,11 @@ public abstract class Job { return this.entity; } - protected final Mode getMode() { + protected final JobFailureSeverity getMode() { return this.mode; } - protected final void setMode(final Mode mode) { + protected final void setMode(final JobFailureSeverity mode) { this.mode = mode; } @@ -307,7 +307,7 @@ public abstract class Job { */ public static Job getJob( final String job, - final Mode mode, + final JobFailureSeverity mode, final EntityInterface entity, final Transaction<? extends TransactionContainer> transaction) { // Fill `allClasses` with available subclasses @@ -397,7 +397,7 @@ public abstract class Job { for (final Class<? extends Job> j : loadAlways) { if (EntityJob.class.isAssignableFrom(j) && j.getAnnotation(JobAnnotation.class).transaction().isInstance(transaction)) { - jobs.add(getJob(j, Mode.MUST, entity, transaction)); + jobs.add(getJob(j, JobFailureSeverity.ERROR, entity, transaction)); } } @@ -427,7 +427,7 @@ public abstract class Job { private static Job getJob( final Class<? extends Job> jobClass, - final Mode mode, + final JobFailureSeverity mode, final EntityInterface entity, final Transaction<? extends TransactionContainer> transaction) { Job ret; @@ -459,7 +459,7 @@ public abstract class Job { // load flag jobs if (!entity.getFlags().isEmpty()) { for (final String key : entity.getFlags().keySet()) { - final Job j = getJob(key, Mode.MUST, entity, transaction); + final Job j = getJob(key, JobFailureSeverity.ERROR, entity, transaction); if (j != null) { if (j instanceof FlagJob) { ((FlagJob) j).setValue(entity.getFlag(key)); @@ -474,7 +474,7 @@ public abstract class Job { for (final EntityInterface p : entity.getParents()) { if (!p.getFlags().isEmpty()) { for (final String key : p.getFlags().keySet()) { - final Job j = getJob(key, Mode.MUST, entity, transaction); + final Job j = getJob(key, JobFailureSeverity.ERROR, entity, transaction); if (j != null) { if (j instanceof FlagJob) { ((FlagJob) j).setValue(p.getFlag(key)); @@ -493,7 +493,7 @@ public abstract class Job { for (final EntityInterface p : entity.getProperties()) { if (!p.getFlags().isEmpty()) { for (final String key : p.getFlags().keySet()) { - final Job j = getJob(key, Mode.MUST, entity, transaction); + final Job j = getJob(key, JobFailureSeverity.ERROR, entity, transaction); if (j != null) { if (j instanceof FlagJob) { ((FlagJob) j).setValue(p.getFlag(key)); @@ -572,7 +572,7 @@ public abstract class Job { for (final Class<? extends Job> j : loadAlways) { if (ContainerJob.class.isAssignableFrom(j) && j.getAnnotation(JobAnnotation.class).transaction().isInstance(transaction)) { - jobs.add(getJob(j, Mode.MUST, null, transaction)); + jobs.add(getJob(j, JobFailureSeverity.ERROR, null, transaction)); } } return jobs; diff --git a/src/main/java/org/caosdb/server/jobs/JobConfig.java b/src/main/java/org/caosdb/server/jobs/JobConfig.java index 6cceeae3bffb545cbfa82af7540fe2e9c602ba6c..cbbe93f127602ac12749644f64edf5d498b88b7a 100644 --- a/src/main/java/org/caosdb/server/jobs/JobConfig.java +++ b/src/main/java/org/caosdb/server/jobs/JobConfig.java @@ -16,7 +16,7 @@ import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.RetrieveEntity; import org.caosdb.server.entity.container.TransactionContainer; import org.caosdb.server.entity.wrapper.Property; -import org.caosdb.server.jobs.core.Mode; +import org.caosdb.server.jobs.core.JobFailureSeverity; import org.caosdb.server.transaction.Transaction; import org.caosdb.server.utils.ConfigurationException; @@ -87,7 +87,7 @@ public class JobConfig { final Integer entity = Integer.parseInt(row[1]); final String transaction = row[2]; final String job = row[3]; - final Mode mode = Mode.valueOf(row[4]); + final JobFailureSeverity mode = JobFailureSeverity.valueOf(row[4]); final String key = getKey(domain, entity, transaction); if (!result.containsKey(key)) { result.put(key, new ArrayList<>()); @@ -116,7 +116,9 @@ public class JobConfig { final List<Job> result = new LinkedList<>(); jobRules.forEach( config -> { - result.add(Job.getJob((String) config[0], (Mode) config[1], target, transaction)); + result.add( + Job.getJob( + (String) config[0], (JobFailureSeverity) config[1], target, transaction)); }); return result; } diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckDescPresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckDescPresent.java index fc3a5114f240c796c114f92f8e6271e4fd3bd9ac..d94e61f26b7140fa468778ca853ed68726582a77 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckDescPresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckDescPresent.java @@ -36,11 +36,11 @@ public class CheckDescPresent extends EntityJob { public final void run() { if (!getEntity().hasDescription()) { switch (getMode()) { - case MUST: + case ERROR: getEntity().addError(ServerMessages.ENTITY_HAS_NO_DESCRIPTION); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); break; - case SHOULD: + case WARN: getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_DESCRIPTION); default: break; diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckNamePresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckNamePresent.java index f1600ce42117ab5f37fccd33b79d821efeccb774..4f0e5f324391ccb873ffafc31a789f0e3edd2768 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckNamePresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckNamePresent.java @@ -36,11 +36,11 @@ public class CheckNamePresent extends EntityJob { public final void run() { if (!getEntity().hasName()) { switch (getMode()) { - case MUST: + case ERROR: getEntity().addError(ServerMessages.ENTITY_HAS_NO_NAME); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); break; - case SHOULD: + case WARN: getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_NAME); break; default: diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java index b04a9151ab5c142e97a6efc9b19607896ab38daf..9ff3b127a8226b2d3a5cba1e2dcf2421c9d82eec 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java @@ -45,7 +45,7 @@ public class CheckNoAdditionalPropertiesPresent extends EntityJob { } private void addMessage(EntityInterface property, Message message) { - if (getMode() == Mode.MUST) { + if (getMode() == JobFailureSeverity.ERROR) { property.addError(message); } else { property.addWarning(message); diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckNoOverridesPresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckNoOverridesPresent.java index e439354e88f39675491682877dd27aa54fd7a3ef..e0eca6b76a07e71794288340b3456187475c0edf 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckNoOverridesPresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckNoOverridesPresent.java @@ -28,7 +28,7 @@ public class CheckNoOverridesPresent extends EntityJob { } private void addMessage(Property p, Message message) { - if (getMode() == Mode.MUST) { + if (getMode() == JobFailureSeverity.ERROR) { p.addError(message); } else { p.addWarning(message); diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckParOblPropPresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckParOblPropPresent.java index fc557f8907c22799dc1400a17c5377fb677306e5..ffd0431bd72eabc2231c11e2d4af3aa6205a8ed8 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckParOblPropPresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckParOblPropPresent.java @@ -53,7 +53,7 @@ public class CheckParOblPropPresent extends EntityJob { if (getEntity().hasParents()) { handleImportanceFlags(); - if (getMode() == Mode.IGNORE) { + if (getMode() == JobFailureSeverity.IGNORE) { // importance is to be ignored return; } @@ -106,12 +106,12 @@ public class CheckParOblPropPresent extends EntityJob { // implements this parentProperty. Add the // respective messages. switch (getMode()) { - case MUST: + case ERROR: // TODO add information WHICH property is // missing. getEntity().addError(ServerMessages.OBLIGATORY_PROPERTY_MISSING); break; - case SHOULD: + case WARN: // TODO add information WHICH property is // missing. getEntity().addWarning(ServerMessages.OBLIGATORY_PROPERTY_MISSING); @@ -133,13 +133,13 @@ public class CheckParOblPropPresent extends EntityJob { if (entityFlag != null) { switch (entityFlag) { case "error": - setMode(Mode.MUST); + setMode(JobFailureSeverity.ERROR); break; case "warn": - setMode(Mode.SHOULD); + setMode(JobFailureSeverity.WARN); break; case "ignore": - setMode(Mode.IGNORE); + setMode(JobFailureSeverity.IGNORE); break; default: // do nothing diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckParPresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckParPresent.java index 8851456c236c0afd9f922f187089adc5f4e35ab1..3ab63fb1468f67399d47a7a737217c06d5faac3e 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckParPresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckParPresent.java @@ -36,11 +36,11 @@ public class CheckParPresent extends EntityJob { public final void run() { if (!getEntity().hasParents() || getEntity().getParents().isEmpty()) { switch (getMode()) { - case MUST: + case ERROR: getEntity().addError(ServerMessages.ENTITY_HAS_NO_PARENTS); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); break; - case SHOULD: + case WARN: getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_PARENTS); default: break; diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckPropPresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckPropPresent.java index 31a460971bc80ccf61d775c96b4632fa38f14f66..cbb8661049cf86792834f7adb89de08906e9753e 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckPropPresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckPropPresent.java @@ -36,11 +36,11 @@ public class CheckPropPresent extends EntityJob { public final void run() { if (getEntity().getProperties().isEmpty()) { switch (getMode()) { - case MUST: + case ERROR: getEntity().addError(ServerMessages.ENTITY_HAS_NO_PROPERTIES); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); break; - case SHOULD: + case WARN: getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_PROPERTIES); default: break; diff --git a/src/main/java/org/caosdb/server/jobs/core/CheckUnitPresent.java b/src/main/java/org/caosdb/server/jobs/core/CheckUnitPresent.java index aa87ecfff69635407bc90d372c89f089e4f308dc..1688ab7f2a32eb6f088f24bc1d8c5945b46f49ca 100644 --- a/src/main/java/org/caosdb/server/jobs/core/CheckUnitPresent.java +++ b/src/main/java/org/caosdb/server/jobs/core/CheckUnitPresent.java @@ -41,11 +41,11 @@ public class CheckUnitPresent extends EntityJob { if (!hasUnit(getEntity())) { switch (getMode()) { - case MUST: + case ERROR: getEntity().addError(ServerMessages.ENTITY_HAS_NO_UNIT); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); break; - case SHOULD: + case WARN: getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_UNIT); default: break; diff --git a/src/main/java/org/caosdb/server/jobs/core/Mode.java b/src/main/java/org/caosdb/server/jobs/core/JobFailureSeverity.java similarity index 55% rename from src/main/java/org/caosdb/server/jobs/core/Mode.java rename to src/main/java/org/caosdb/server/jobs/core/JobFailureSeverity.java index e786c7fe5eb2f7d1e7da3f4ea1f831d37b3f4755..f3bfe63e15bd93a70590ddb413f8863533b7db88 100644 --- a/src/main/java/org/caosdb/server/jobs/core/Mode.java +++ b/src/main/java/org/caosdb/server/jobs/core/JobFailureSeverity.java @@ -22,8 +22,22 @@ */ package org.caosdb.server.jobs.core; -public enum Mode { - MUST, - SHOULD, +/** + * Describes the severity of a failure of a job (esp. consitency checks). + * + * <ul> + * <li>{@link #ERROR} - a failure throws an error and the transaction will not succeed. + * <li>{@link #WARN} - a failure produces a warning but the transaction may succeed anyway. + * <li>{@link #IGNORE} - the job may fail silently. Jobs can also decide to not run at all if that + * is not necessary in this case. + * <p>Jobs where this doesn't make sense at all may also ignore the severity. It is rather a + * convenient way to configure jobs where this makes sense than a definitive normative + * property of a job. + * + * @author Timm Fitschen <t.fitschen@indiscale.com> + */ +public enum JobFailureSeverity { + ERROR, + WARN, IGNORE, } diff --git a/src/main/java/org/caosdb/server/jobs/core/LoadContainerFlagJobs.java b/src/main/java/org/caosdb/server/jobs/core/LoadContainerFlagJobs.java index ef8df214c804fb1d55c3ed088c5f7f6e998aca07..c04fd21d588c9a9a2f6e59ce7c1fff445a225c67 100644 --- a/src/main/java/org/caosdb/server/jobs/core/LoadContainerFlagJobs.java +++ b/src/main/java/org/caosdb/server/jobs/core/LoadContainerFlagJobs.java @@ -36,7 +36,7 @@ public class LoadContainerFlagJobs extends ContainerJob { protected void run() { if (getContainer().getFlags() != null) { for (final Entry<String, String> flag : getContainer().getFlags().entrySet()) { - final Job j = Job.getJob(flag.getKey(), Mode.MUST, null, getTransaction()); + final Job j = Job.getJob(flag.getKey(), JobFailureSeverity.ERROR, null, getTransaction()); if (j != null) { if (j instanceof FlagJob) { ((FlagJob) j).setValue(flag.getValue()); diff --git a/src/main/java/org/caosdb/server/transaction/Retrieve.java b/src/main/java/org/caosdb/server/transaction/Retrieve.java index 19f840e92a1a6812e2ae2610ed3ace23b7e3cee7..250df0423869ae97a766da2fc54131e04d5257ca 100644 --- a/src/main/java/org/caosdb/server/transaction/Retrieve.java +++ b/src/main/java/org/caosdb/server/transaction/Retrieve.java @@ -31,7 +31,7 @@ import org.caosdb.server.entity.xml.SetFieldStrategy; import org.caosdb.server.entity.xml.ToElementStrategy; import org.caosdb.server.entity.xml.ToElementable; import org.caosdb.server.jobs.ScheduledJob; -import org.caosdb.server.jobs.core.Mode; +import org.caosdb.server.jobs.core.JobFailureSeverity; import org.caosdb.server.jobs.core.RemoveDuplicates; import org.caosdb.server.jobs.core.ResolveNames; import org.caosdb.server.permissions.EntityPermission; @@ -53,14 +53,14 @@ public class Retrieve extends Transaction<RetrieveContainer> { // resolve names { final ResolveNames r = new ResolveNames(); - r.init(Mode.SHOULD, null, this); + r.init(JobFailureSeverity.WARN, null, this); ScheduledJob scheduledJob = getSchedule().add(r); getSchedule().runJob(scheduledJob); } { final RemoveDuplicates job = new RemoveDuplicates(); - job.init(Mode.MUST, null, this); + job.init(JobFailureSeverity.ERROR, null, this); ScheduledJob scheduledJob = getSchedule().add(job); getSchedule().runJob(scheduledJob); } diff --git a/src/main/java/org/caosdb/server/transaction/Transaction.java b/src/main/java/org/caosdb/server/transaction/Transaction.java index 99c305fa17b37878cc5f3277c93623a915be4ea3..b30d13b469ebe05222d2db1ab958fe0a4d3a0f26 100644 --- a/src/main/java/org/caosdb/server/transaction/Transaction.java +++ b/src/main/java/org/caosdb/server/transaction/Transaction.java @@ -45,7 +45,7 @@ import org.caosdb.server.jobs.TransactionStage; import org.caosdb.server.jobs.core.AccessControl; import org.caosdb.server.jobs.core.CheckDatatypePresent; import org.caosdb.server.jobs.core.CheckEntityACLRoles; -import org.caosdb.server.jobs.core.Mode; +import org.caosdb.server.jobs.core.JobFailureSeverity; import org.caosdb.server.jobs.core.PickUp; import org.caosdb.server.permissions.EntityACL; import org.caosdb.server.utils.AbstractObservable; @@ -96,13 +96,17 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra */ protected void makeSchedule() throws Exception { // load flag jobs - final Job loadContainerFlags = Job.getJob("LoadContainerFlagJobs", Mode.MUST, null, this); + final Job loadContainerFlags = + Job.getJob("LoadContainerFlagJobs", JobFailureSeverity.ERROR, null, this); final ScheduledJob scheduledJob = this.schedule.add(loadContainerFlags); this.schedule.runJob(scheduledJob); // AccessControl - this.schedule.add(Job.getJob(AccessControl.class.getSimpleName(), Mode.MUST, null, this)); - this.schedule.add(Job.getJob(CheckEntityACLRoles.class.getSimpleName(), Mode.MUST, null, this)); + this.schedule.add( + Job.getJob(AccessControl.class.getSimpleName(), JobFailureSeverity.ERROR, null, this)); + this.schedule.add( + Job.getJob( + CheckEntityACLRoles.class.getSimpleName(), JobFailureSeverity.ERROR, null, this)); // load permanent container jobs this.schedule.addAll(Job.loadPermanentContainerJobs(this)); @@ -113,12 +117,12 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra // additionally load datatype job if (e.hasValue()) { - this.schedule.add(new CheckDatatypePresent().init(Mode.MUST, e, this)); + this.schedule.add(new CheckDatatypePresent().init(JobFailureSeverity.ERROR, e, this)); } // load pickup job if necessary if (e.hasFileProperties() && e.getFileProperties().isPickupable()) { - this.schedule.add(new PickUp().init(Mode.MUST, e, this)); + this.schedule.add(new PickUp().init(JobFailureSeverity.ERROR, e, this)); } } }