diff --git a/src/main/java/ru/windcorp/progressia/common/modules/Module.java b/src/main/java/ru/windcorp/progressia/common/modules/Module.java new file mode 100644 index 0000000..34262d8 --- /dev/null +++ b/src/main/java/ru/windcorp/progressia/common/modules/Module.java @@ -0,0 +1,45 @@ +package ru.windcorp.progressia.common.modules; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import ru.windcorp.progressia.common.util.namespaces.Namespaced; + +public class Module extends Namespaced { + + private List tasks = new ArrayList<>(); + private Map meta = new HashMap<>(); + private boolean done = false; + + + public Module(String id) { + super(id); + } + + public Map getMeta() { + return meta; + } + + public List getTasks() { + return tasks; + } + + /** + * @return false - not all tasks are done + */ + public boolean setDone() { + for (Task t : tasks) { + if (!t.isDone()) { + return false; + } + } + + return true; + } + + public boolean isDone() { + return done; + } +} diff --git a/src/main/java/ru/windcorp/progressia/common/modules/Task.java b/src/main/java/ru/windcorp/progressia/common/modules/Task.java index d4a6d0f..9411ee0 100644 --- a/src/main/java/ru/windcorp/progressia/common/modules/Task.java +++ b/src/main/java/ru/windcorp/progressia/common/modules/Task.java @@ -1,6 +1,7 @@ package ru.windcorp.progressia.common.modules; import java.util.ArrayList; +import java.util.List; import ru.windcorp.jputil.chars.StringUtil; import ru.windcorp.progressia.common.util.crash.CrashReports; @@ -13,7 +14,7 @@ public abstract class Task private boolean done = false; - ArrayList requiredTasks = new ArrayList<>(); + List requiredTasks = new ArrayList<>(); protected Task(String id) { super(id); @@ -30,7 +31,6 @@ public abstract class Task } } - throw CrashReports.report(new Throwable(), "The following required Tasks are not done:\n%s", StringUtil.iterableToString(undoneTasks, "\n")); @@ -44,23 +44,18 @@ public abstract class Task // This method will be invoked by Run() protected abstract void perform(); - public void addRequiredTask(Task task) { - if (task.equals(this)) { - throw CrashReports.report(new Throwable(), - "It is impossible for the Task (%s) to require itself.", - this.getId()); - } - requiredTasks.add(task); - } - public boolean isDone() { return done; } public boolean canRun() { - for (Task j : requiredTasks) { - if (!j.isDone()) return false; + for (Task t : requiredTasks) { + if (!t.isDone()) return false; } return true; } + + public List getRequiredTasks() { + return requiredTasks; + } }