Skip to content
Snippets Groups Projects
Verified Commit 0b6e7de3 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

rename Mode enum to JobFailureSeverity

parent 29c2ccaa
No related branches found
No related tags found
2 merge requests!21Release v0.4.0,!18fix importance bug
Pipeline #8882 passed
Showing
with 127 additions and 107 deletions
...@@ -21,92 +21,92 @@ ...@@ -21,92 +21,92 @@
# #
# Five columns: # Five columns:
# DOMAIN_ID, ENTITY_ID, TRANSACTION, JOB, MODE # DOMAIN_ID, ENTITY_ID, TRANSACTION, JOB, JOB_FAILURE_SEVERITY
# general rules # general rules
0,0,INSERT,CheckPropValid,MUST 0,0,INSERT,CheckPropValid,ERROR
0,0,INSERT,CheckParValid,MUST 0,0,INSERT,CheckParValid,ERROR
0,0,INSERT,CheckParOblPropPresent,MUST 0,0,INSERT,CheckParOblPropPresent,ERROR
0,0,INSERT,CheckValueParsable,MUST 0,0,INSERT,CheckValueParsable,ERROR
0,0,UPDATE,CheckPropValid,MUST 0,0,UPDATE,CheckPropValid,ERROR
0,0,UPDATE,CheckParValid,MUST 0,0,UPDATE,CheckParValid,ERROR
0,0,UPDATE,CheckParOblPropPresent,MUST 0,0,UPDATE,CheckParOblPropPresent,ERROR
0,0,UPDATE,CheckValueParsable,MUST 0,0,UPDATE,CheckValueParsable,ERROR
0,0,DELETE,CheckReferenceDependencyExistent,MUST 0,0,DELETE,CheckReferenceDependencyExistent,ERROR
0,0,DELETE,CheckChildDependencyExistent,MUST 0,0,DELETE,CheckChildDependencyExistent,ERROR
# role specific rules # role specific rules
## recordtype rules ## recordtype rules
0,1,INSERT,CheckNamePresent,MUST 0,1,INSERT,CheckNamePresent,ERROR
0,1,INSERT,CheckPropPresent,SHOULD 0,1,INSERT,CheckPropPresent,WARN
0,1,INSERT,SetImpToRecByDefault,MUST 0,1,INSERT,SetImpToRecByDefault,ERROR
0,1,UPDATE,CheckNamePresent,MUST 0,1,UPDATE,CheckNamePresent,ERROR
0,1,UPDATE,CheckPropPresent,SHOULD 0,1,UPDATE,CheckPropPresent,WARN
0,1,UPDATE,SetImpToRecByDefault,MUST 0,1,UPDATE,SetImpToRecByDefault,ERROR
## record rules ## record rules
0,2,INSERT,CheckNamePresent,SHOULD 0,2,INSERT,CheckNamePresent,WARN
0,2,INSERT,CheckPropPresent,SHOULD 0,2,INSERT,CheckPropPresent,WARN
0,2,INSERT,CheckParPresent,MUST 0,2,INSERT,CheckParPresent,ERROR
0,2,INSERT,SetImpToFix,MUST 0,2,INSERT,SetImpToFix,ERROR
0,2,UPDATE,CheckNamePresent,SHOULD 0,2,UPDATE,CheckNamePresent,WARN
0,2,UPDATE,CheckPropPresent,SHOULD 0,2,UPDATE,CheckPropPresent,WARN
0,2,UPDATE,CheckParPresent,MUST 0,2,UPDATE,CheckParPresent,ERROR
0,2,UPDATE,SetImpToFix,MUST 0,2,UPDATE,SetImpToFix,ERROR
## file rules ## file rules
0,3,INSERT,CheckNamePresent,SHOULD 0,3,INSERT,CheckNamePresent,WARN
0,3,INSERT,MatchFileProp,MUST 0,3,INSERT,MatchFileProp,ERROR
0,3,INSERT,CheckTargetPathValid,MUST 0,3,INSERT,CheckTargetPathValid,ERROR
0,3,INSERT,SetImpToFix,MUST 0,3,INSERT,SetImpToFix,ERROR
0,3,UPDATE,CheckNamePresent,SHOULD 0,3,UPDATE,CheckNamePresent,WARN
0,3,UPDATE,MatchFileProp,MUST 0,3,UPDATE,MatchFileProp,ERROR
0,3,UPDATE,CheckTargetPathValid,MUST 0,3,UPDATE,CheckTargetPathValid,ERROR
0,3,UPDATE,SetImpToFix,MUST 0,3,UPDATE,SetImpToFix,ERROR
## property rules ## property rules
0,4,INSERT,CheckDatatypePresent,MUST 0,4,INSERT,CheckDatatypePresent,ERROR
0,4,UPDATE,CheckDatatypePresent,MUST 0,4,UPDATE,CheckDatatypePresent,ERROR
0,4,INSERT,CheckNamePresent,MUST 0,4,INSERT,CheckNamePresent,ERROR
0,4,UPDATE,CheckNamePresent,MUST 0,4,UPDATE,CheckNamePresent,ERROR
0,4,INSERT,SetImpToFix,MUST 0,4,INSERT,SetImpToFix,ERROR
0,4,UPDATE,SetImpToFix,MUST 0,4,UPDATE,SetImpToFix,ERROR
## query template rules ## query template rules
0,8,UPDATE,CheckQueryTemplate,MUST 0,8,UPDATE,CheckQueryTemplate,ERROR
0,8,INSERT,CheckQueryTemplate,MUST 0,8,INSERT,CheckQueryTemplate,ERROR
# data type specific rules # data type specific rules
## reference rules ## reference rules
0,11,INSERT,CheckRefidPresent,SHOULD 0,11,INSERT,CheckRefidPresent,WARN
0,11,INSERT,CheckRefidValid,MUST 0,11,INSERT,CheckRefidValid,ERROR
0,11,INSERT,CheckRefidIsaParRefid,SHOULD 0,11,INSERT,CheckRefidIsaParRefid,WARN
0,11,UPDATE,CheckRefidPresent,SHOULD 0,11,UPDATE,CheckRefidPresent,WARN
0,11,UPDATE,CheckRefidValid,MUST 0,11,UPDATE,CheckRefidValid,ERROR
0,11,UPDATE,CheckRefidIsaParRefid,SHOULD 0,11,UPDATE,CheckRefidIsaParRefid,WARN
## integer rules ## integer rules
0,12,INSERT,CheckUnitPresent,SHOULD 0,12,INSERT,CheckUnitPresent,WARN
0,12,INSERT,ParseUnit,SHOULD 0,12,INSERT,ParseUnit,WARN
0,12,UPDATE,CheckUnitPresent,SHOULD 0,12,UPDATE,CheckUnitPresent,WARN
0,12,UPDATE,ParseUnit,SHOULD 0,12,UPDATE,ParseUnit,WARN
## double rules ## double rules
0,13,INSERT,CheckUnitPresent,SHOULD 0,13,INSERT,CheckUnitPresent,WARN
0,13,INSERT,ParseUnit,SHOULD 0,13,INSERT,ParseUnit,WARN
0,13,UPDATE,CheckUnitPresent,SHOULD 0,13,UPDATE,CheckUnitPresent,WARN
0,13,UPDATE,ParseUnit,SHOULD 0,13,UPDATE,ParseUnit,WARN
## filereference rules ## filereference rules
0,17,INSERT,CheckRefidValid,MUST 0,17,INSERT,CheckRefidValid,ERROR
0,17,INSERT,CheckRefidIsaParRefid,MUST 0,17,INSERT,CheckRefidIsaParRefid,ERROR
0,17,UPDATE,CheckRefidValid,MUST 0,17,UPDATE,CheckRefidValid,ERROR
0,17,UPDATE,CheckRefidIsaParRefid,MUST 0,17,UPDATE,CheckRefidIsaParRefid,ERROR
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
package org.caosdb.server.database.proto; package org.caosdb.server.database.proto;
import java.io.Serializable; import java.io.Serializable;
import org.caosdb.server.jobs.core.Mode; import org.caosdb.server.jobs.core.JobFailureSeverity;
public class Rule implements Serializable { public class Rule implements Serializable {
...@@ -33,5 +33,5 @@ public class Rule implements Serializable { ...@@ -33,5 +33,5 @@ public class Rule implements Serializable {
public int entity = 0; public int entity = 0;
public String job = null; public String job = null;
public String transaction = null; public String transaction = null;
public Mode mode = null; public JobFailureSeverity mode = null;
} }
...@@ -50,7 +50,7 @@ import org.caosdb.server.entity.Message; ...@@ -50,7 +50,7 @@ import org.caosdb.server.entity.Message;
import org.caosdb.server.entity.container.ParentContainer; import org.caosdb.server.entity.container.ParentContainer;
import org.caosdb.server.entity.container.TransactionContainer; import org.caosdb.server.entity.container.TransactionContainer;
import org.caosdb.server.entity.wrapper.Parent; 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.transaction.Transaction;
import org.caosdb.server.utils.EntityStatus; import org.caosdb.server.utils.EntityStatus;
import org.caosdb.server.utils.ServerMessages; import org.caosdb.server.utils.ServerMessages;
...@@ -70,7 +70,7 @@ public abstract class Job { ...@@ -70,7 +70,7 @@ public abstract class Job {
private static List<Class<? extends Job>> loadAlways; private static List<Class<? extends Job>> loadAlways;
private Transaction<? extends TransactionContainer> transaction = null; private Transaction<? extends TransactionContainer> transaction = null;
private Mode mode = null; private JobFailureSeverity mode = null;
private final TransactionStage stage; private final TransactionStage stage;
private EntityInterface entity = null; private EntityInterface entity = null;
...@@ -128,7 +128,7 @@ public abstract class Job { ...@@ -128,7 +128,7 @@ public abstract class Job {
} }
public final Job init( public final Job init(
final Mode mode, final JobFailureSeverity mode,
final EntityInterface entity, final EntityInterface entity,
final Transaction<? extends TransactionContainer> transaction) { final Transaction<? extends TransactionContainer> transaction) {
this.mode = mode; this.mode = mode;
...@@ -149,11 +149,11 @@ public abstract class Job { ...@@ -149,11 +149,11 @@ public abstract class Job {
return this.entity; return this.entity;
} }
protected final Mode getMode() { protected final JobFailureSeverity getMode() {
return this.mode; return this.mode;
} }
protected final void setMode(final Mode mode) { protected final void setMode(final JobFailureSeverity mode) {
this.mode = mode; this.mode = mode;
} }
...@@ -307,7 +307,7 @@ public abstract class Job { ...@@ -307,7 +307,7 @@ public abstract class Job {
*/ */
public static Job getJob( public static Job getJob(
final String job, final String job,
final Mode mode, final JobFailureSeverity mode,
final EntityInterface entity, final EntityInterface entity,
final Transaction<? extends TransactionContainer> transaction) { final Transaction<? extends TransactionContainer> transaction) {
// Fill `allClasses` with available subclasses // Fill `allClasses` with available subclasses
...@@ -397,7 +397,7 @@ public abstract class Job { ...@@ -397,7 +397,7 @@ public abstract class Job {
for (final Class<? extends Job> j : loadAlways) { for (final Class<? extends Job> j : loadAlways) {
if (EntityJob.class.isAssignableFrom(j) if (EntityJob.class.isAssignableFrom(j)
&& j.getAnnotation(JobAnnotation.class).transaction().isInstance(transaction)) { && 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 { ...@@ -427,7 +427,7 @@ public abstract class Job {
private static Job getJob( private static Job getJob(
final Class<? extends Job> jobClass, final Class<? extends Job> jobClass,
final Mode mode, final JobFailureSeverity mode,
final EntityInterface entity, final EntityInterface entity,
final Transaction<? extends TransactionContainer> transaction) { final Transaction<? extends TransactionContainer> transaction) {
Job ret; Job ret;
...@@ -459,7 +459,7 @@ public abstract class Job { ...@@ -459,7 +459,7 @@ public abstract class Job {
// load flag jobs // load flag jobs
if (!entity.getFlags().isEmpty()) { if (!entity.getFlags().isEmpty()) {
for (final String key : entity.getFlags().keySet()) { 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 != null) {
if (j instanceof FlagJob) { if (j instanceof FlagJob) {
((FlagJob) j).setValue(entity.getFlag(key)); ((FlagJob) j).setValue(entity.getFlag(key));
...@@ -474,7 +474,7 @@ public abstract class Job { ...@@ -474,7 +474,7 @@ public abstract class Job {
for (final EntityInterface p : entity.getParents()) { for (final EntityInterface p : entity.getParents()) {
if (!p.getFlags().isEmpty()) { if (!p.getFlags().isEmpty()) {
for (final String key : p.getFlags().keySet()) { 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 != null) {
if (j instanceof FlagJob) { if (j instanceof FlagJob) {
((FlagJob) j).setValue(p.getFlag(key)); ((FlagJob) j).setValue(p.getFlag(key));
...@@ -493,7 +493,7 @@ public abstract class Job { ...@@ -493,7 +493,7 @@ public abstract class Job {
for (final EntityInterface p : entity.getProperties()) { for (final EntityInterface p : entity.getProperties()) {
if (!p.getFlags().isEmpty()) { if (!p.getFlags().isEmpty()) {
for (final String key : p.getFlags().keySet()) { 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 != null) {
if (j instanceof FlagJob) { if (j instanceof FlagJob) {
((FlagJob) j).setValue(p.getFlag(key)); ((FlagJob) j).setValue(p.getFlag(key));
...@@ -572,7 +572,7 @@ public abstract class Job { ...@@ -572,7 +572,7 @@ public abstract class Job {
for (final Class<? extends Job> j : loadAlways) { for (final Class<? extends Job> j : loadAlways) {
if (ContainerJob.class.isAssignableFrom(j) if (ContainerJob.class.isAssignableFrom(j)
&& j.getAnnotation(JobAnnotation.class).transaction().isInstance(transaction)) { && 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; return jobs;
......
...@@ -16,7 +16,7 @@ import org.caosdb.server.entity.EntityInterface; ...@@ -16,7 +16,7 @@ import org.caosdb.server.entity.EntityInterface;
import org.caosdb.server.entity.RetrieveEntity; import org.caosdb.server.entity.RetrieveEntity;
import org.caosdb.server.entity.container.TransactionContainer; import org.caosdb.server.entity.container.TransactionContainer;
import org.caosdb.server.entity.wrapper.Property; 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.transaction.Transaction;
import org.caosdb.server.utils.ConfigurationException; import org.caosdb.server.utils.ConfigurationException;
...@@ -87,7 +87,7 @@ public class JobConfig { ...@@ -87,7 +87,7 @@ public class JobConfig {
final Integer entity = Integer.parseInt(row[1]); final Integer entity = Integer.parseInt(row[1]);
final String transaction = row[2]; final String transaction = row[2];
final String job = row[3]; 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); final String key = getKey(domain, entity, transaction);
if (!result.containsKey(key)) { if (!result.containsKey(key)) {
result.put(key, new ArrayList<>()); result.put(key, new ArrayList<>());
...@@ -116,7 +116,9 @@ public class JobConfig { ...@@ -116,7 +116,9 @@ public class JobConfig {
final List<Job> result = new LinkedList<>(); final List<Job> result = new LinkedList<>();
jobRules.forEach( jobRules.forEach(
config -> { 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; return result;
} }
......
...@@ -36,11 +36,11 @@ public class CheckDescPresent extends EntityJob { ...@@ -36,11 +36,11 @@ public class CheckDescPresent extends EntityJob {
public final void run() { public final void run() {
if (!getEntity().hasDescription()) { if (!getEntity().hasDescription()) {
switch (getMode()) { switch (getMode()) {
case MUST: case ERROR:
getEntity().addError(ServerMessages.ENTITY_HAS_NO_DESCRIPTION); getEntity().addError(ServerMessages.ENTITY_HAS_NO_DESCRIPTION);
getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED);
break; break;
case SHOULD: case WARN:
getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_DESCRIPTION); getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_DESCRIPTION);
default: default:
break; break;
......
...@@ -36,11 +36,11 @@ public class CheckNamePresent extends EntityJob { ...@@ -36,11 +36,11 @@ public class CheckNamePresent extends EntityJob {
public final void run() { public final void run() {
if (!getEntity().hasName()) { if (!getEntity().hasName()) {
switch (getMode()) { switch (getMode()) {
case MUST: case ERROR:
getEntity().addError(ServerMessages.ENTITY_HAS_NO_NAME); getEntity().addError(ServerMessages.ENTITY_HAS_NO_NAME);
getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED);
break; break;
case SHOULD: case WARN:
getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_NAME); getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_NAME);
break; break;
default: default:
......
...@@ -45,7 +45,7 @@ public class CheckNoAdditionalPropertiesPresent extends EntityJob { ...@@ -45,7 +45,7 @@ public class CheckNoAdditionalPropertiesPresent extends EntityJob {
} }
private void addMessage(EntityInterface property, Message message) { private void addMessage(EntityInterface property, Message message) {
if (getMode() == Mode.MUST) { if (getMode() == JobFailureSeverity.ERROR) {
property.addError(message); property.addError(message);
} else { } else {
property.addWarning(message); property.addWarning(message);
......
...@@ -28,7 +28,7 @@ public class CheckNoOverridesPresent extends EntityJob { ...@@ -28,7 +28,7 @@ public class CheckNoOverridesPresent extends EntityJob {
} }
private void addMessage(Property p, Message message) { private void addMessage(Property p, Message message) {
if (getMode() == Mode.MUST) { if (getMode() == JobFailureSeverity.ERROR) {
p.addError(message); p.addError(message);
} else { } else {
p.addWarning(message); p.addWarning(message);
......
...@@ -53,7 +53,7 @@ public class CheckParOblPropPresent extends EntityJob { ...@@ -53,7 +53,7 @@ public class CheckParOblPropPresent extends EntityJob {
if (getEntity().hasParents()) { if (getEntity().hasParents()) {
handleImportanceFlags(); handleImportanceFlags();
if (getMode() == Mode.IGNORE) { if (getMode() == JobFailureSeverity.IGNORE) {
// importance is to be ignored // importance is to be ignored
return; return;
} }
...@@ -106,12 +106,12 @@ public class CheckParOblPropPresent extends EntityJob { ...@@ -106,12 +106,12 @@ public class CheckParOblPropPresent extends EntityJob {
// implements this parentProperty. Add the // implements this parentProperty. Add the
// respective messages. // respective messages.
switch (getMode()) { switch (getMode()) {
case MUST: case ERROR:
// TODO add information WHICH property is // TODO add information WHICH property is
// missing. // missing.
getEntity().addError(ServerMessages.OBLIGATORY_PROPERTY_MISSING); getEntity().addError(ServerMessages.OBLIGATORY_PROPERTY_MISSING);
break; break;
case SHOULD: case WARN:
// TODO add information WHICH property is // TODO add information WHICH property is
// missing. // missing.
getEntity().addWarning(ServerMessages.OBLIGATORY_PROPERTY_MISSING); getEntity().addWarning(ServerMessages.OBLIGATORY_PROPERTY_MISSING);
...@@ -133,13 +133,13 @@ public class CheckParOblPropPresent extends EntityJob { ...@@ -133,13 +133,13 @@ public class CheckParOblPropPresent extends EntityJob {
if (entityFlag != null) { if (entityFlag != null) {
switch (entityFlag) { switch (entityFlag) {
case "error": case "error":
setMode(Mode.MUST); setMode(JobFailureSeverity.ERROR);
break; break;
case "warn": case "warn":
setMode(Mode.SHOULD); setMode(JobFailureSeverity.WARN);
break; break;
case "ignore": case "ignore":
setMode(Mode.IGNORE); setMode(JobFailureSeverity.IGNORE);
break; break;
default: default:
// do nothing // do nothing
......
...@@ -36,11 +36,11 @@ public class CheckParPresent extends EntityJob { ...@@ -36,11 +36,11 @@ public class CheckParPresent extends EntityJob {
public final void run() { public final void run() {
if (!getEntity().hasParents() || getEntity().getParents().isEmpty()) { if (!getEntity().hasParents() || getEntity().getParents().isEmpty()) {
switch (getMode()) { switch (getMode()) {
case MUST: case ERROR:
getEntity().addError(ServerMessages.ENTITY_HAS_NO_PARENTS); getEntity().addError(ServerMessages.ENTITY_HAS_NO_PARENTS);
getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED);
break; break;
case SHOULD: case WARN:
getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_PARENTS); getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_PARENTS);
default: default:
break; break;
......
...@@ -36,11 +36,11 @@ public class CheckPropPresent extends EntityJob { ...@@ -36,11 +36,11 @@ public class CheckPropPresent extends EntityJob {
public final void run() { public final void run() {
if (getEntity().getProperties().isEmpty()) { if (getEntity().getProperties().isEmpty()) {
switch (getMode()) { switch (getMode()) {
case MUST: case ERROR:
getEntity().addError(ServerMessages.ENTITY_HAS_NO_PROPERTIES); getEntity().addError(ServerMessages.ENTITY_HAS_NO_PROPERTIES);
getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED);
break; break;
case SHOULD: case WARN:
getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_PROPERTIES); getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_PROPERTIES);
default: default:
break; break;
......
...@@ -41,11 +41,11 @@ public class CheckUnitPresent extends EntityJob { ...@@ -41,11 +41,11 @@ public class CheckUnitPresent extends EntityJob {
if (!hasUnit(getEntity())) { if (!hasUnit(getEntity())) {
switch (getMode()) { switch (getMode()) {
case MUST: case ERROR:
getEntity().addError(ServerMessages.ENTITY_HAS_NO_UNIT); getEntity().addError(ServerMessages.ENTITY_HAS_NO_UNIT);
getEntity().setEntityStatus(EntityStatus.UNQUALIFIED); getEntity().setEntityStatus(EntityStatus.UNQUALIFIED);
break; break;
case SHOULD: case WARN:
getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_UNIT); getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_UNIT);
default: default:
break; break;
......
...@@ -22,8 +22,22 @@ ...@@ -22,8 +22,22 @@
*/ */
package org.caosdb.server.jobs.core; package org.caosdb.server.jobs.core;
public enum Mode { /**
MUST, * Describes the severity of a failure of a job (esp. consitency checks).
SHOULD, *
* <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, IGNORE,
} }
...@@ -36,7 +36,7 @@ public class LoadContainerFlagJobs extends ContainerJob { ...@@ -36,7 +36,7 @@ public class LoadContainerFlagJobs extends ContainerJob {
protected void run() { protected void run() {
if (getContainer().getFlags() != null) { if (getContainer().getFlags() != null) {
for (final Entry<String, String> flag : getContainer().getFlags().entrySet()) { 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 != null) {
if (j instanceof FlagJob) { if (j instanceof FlagJob) {
((FlagJob) j).setValue(flag.getValue()); ((FlagJob) j).setValue(flag.getValue());
......
...@@ -31,7 +31,7 @@ import org.caosdb.server.entity.xml.SetFieldStrategy; ...@@ -31,7 +31,7 @@ import org.caosdb.server.entity.xml.SetFieldStrategy;
import org.caosdb.server.entity.xml.ToElementStrategy; import org.caosdb.server.entity.xml.ToElementStrategy;
import org.caosdb.server.entity.xml.ToElementable; import org.caosdb.server.entity.xml.ToElementable;
import org.caosdb.server.jobs.ScheduledJob; 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.RemoveDuplicates;
import org.caosdb.server.jobs.core.ResolveNames; import org.caosdb.server.jobs.core.ResolveNames;
import org.caosdb.server.permissions.EntityPermission; import org.caosdb.server.permissions.EntityPermission;
...@@ -53,14 +53,14 @@ public class Retrieve extends Transaction<RetrieveContainer> { ...@@ -53,14 +53,14 @@ public class Retrieve extends Transaction<RetrieveContainer> {
// resolve names // resolve names
{ {
final ResolveNames r = new ResolveNames(); final ResolveNames r = new ResolveNames();
r.init(Mode.SHOULD, null, this); r.init(JobFailureSeverity.WARN, null, this);
ScheduledJob scheduledJob = getSchedule().add(r); ScheduledJob scheduledJob = getSchedule().add(r);
getSchedule().runJob(scheduledJob); getSchedule().runJob(scheduledJob);
} }
{ {
final RemoveDuplicates job = new RemoveDuplicates(); final RemoveDuplicates job = new RemoveDuplicates();
job.init(Mode.MUST, null, this); job.init(JobFailureSeverity.ERROR, null, this);
ScheduledJob scheduledJob = getSchedule().add(job); ScheduledJob scheduledJob = getSchedule().add(job);
getSchedule().runJob(scheduledJob); getSchedule().runJob(scheduledJob);
} }
......
...@@ -45,7 +45,7 @@ import org.caosdb.server.jobs.TransactionStage; ...@@ -45,7 +45,7 @@ import org.caosdb.server.jobs.TransactionStage;
import org.caosdb.server.jobs.core.AccessControl; import org.caosdb.server.jobs.core.AccessControl;
import org.caosdb.server.jobs.core.CheckDatatypePresent; import org.caosdb.server.jobs.core.CheckDatatypePresent;
import org.caosdb.server.jobs.core.CheckEntityACLRoles; 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.jobs.core.PickUp;
import org.caosdb.server.permissions.EntityACL; import org.caosdb.server.permissions.EntityACL;
import org.caosdb.server.utils.AbstractObservable; import org.caosdb.server.utils.AbstractObservable;
...@@ -96,13 +96,17 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra ...@@ -96,13 +96,17 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
*/ */
protected void makeSchedule() throws Exception { protected void makeSchedule() throws Exception {
// load flag jobs // 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); final ScheduledJob scheduledJob = this.schedule.add(loadContainerFlags);
this.schedule.runJob(scheduledJob); this.schedule.runJob(scheduledJob);
// AccessControl // AccessControl
this.schedule.add(Job.getJob(AccessControl.class.getSimpleName(), Mode.MUST, null, this)); this.schedule.add(
this.schedule.add(Job.getJob(CheckEntityACLRoles.class.getSimpleName(), Mode.MUST, null, this)); 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 // load permanent container jobs
this.schedule.addAll(Job.loadPermanentContainerJobs(this)); this.schedule.addAll(Job.loadPermanentContainerJobs(this));
...@@ -113,12 +117,12 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra ...@@ -113,12 +117,12 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
// additionally load datatype job // additionally load datatype job
if (e.hasValue()) { 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 // load pickup job if necessary
if (e.hasFileProperties() && e.getFileProperties().isPickupable()) { 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));
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment