]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.runtime/src/org/argeo/slc/runtime/tasks/If.java
Clarify overall project structure.
[gpl/argeo-slc.git] / org.argeo.slc.runtime / src / org / argeo / slc / runtime / tasks / If.java
diff --git a/org.argeo.slc.runtime/src/org/argeo/slc/runtime/tasks/If.java b/org.argeo.slc.runtime/src/org/argeo/slc/runtime/tasks/If.java
new file mode 100644 (file)
index 0000000..08eb804
--- /dev/null
@@ -0,0 +1,49 @@
+package org.argeo.slc.runtime.tasks;
+
+import org.argeo.slc.SlcException;
+
+/** Conditional execution */
+public class If implements Runnable {
+       private Boolean is;
+       private Boolean not;
+       private Runnable then;
+       private Runnable els;
+
+       public void run() {
+               if (is == null && not == null)
+                       throw new SlcException("No condition set");
+               if (is != null && not != null)
+                       throw new SlcException("Both is and not cannot be set");
+
+               boolean bool = (is != null ? is : !not);
+               if (bool) {
+                       if (then != null)
+                               then.run();
+               } else {
+                       if (els != null)
+                               els.run();
+               }
+
+       }
+
+       public void setIs(Boolean bool) {
+               this.is = bool;
+       }
+
+       public void setThen(Runnable then) {
+               this.then = then;
+       }
+
+       public void setEls(Runnable els) {
+               this.els = els;
+       }
+
+       public Boolean getNot() {
+               return not;
+       }
+
+       public void setNot(Boolean not) {
+               this.not = not;
+       }
+
+}