Developing module systme

- Added Module class
- minor changes in Task class
This commit is contained in:
Евгений Смирнов 2021-01-10 15:30:05 +03:00
parent 5a521fc131
commit 942c665d73
2 changed files with 53 additions and 13 deletions

View File

@ -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<Task> tasks = new ArrayList<>();
private Map<String, String> meta = new HashMap<>();
private boolean done = false;
public Module(String id) {
super(id);
}
public Map<String, String> getMeta() {
return meta;
}
public List<Task> 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;
}
}

View File

@ -1,6 +1,7 @@
package ru.windcorp.progressia.common.modules; package ru.windcorp.progressia.common.modules;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import ru.windcorp.jputil.chars.StringUtil; import ru.windcorp.jputil.chars.StringUtil;
import ru.windcorp.progressia.common.util.crash.CrashReports; import ru.windcorp.progressia.common.util.crash.CrashReports;
@ -13,7 +14,7 @@ public abstract class Task
private boolean done = false; private boolean done = false;
ArrayList<Task> requiredTasks = new ArrayList<>(); List<Task> requiredTasks = new ArrayList<>();
protected Task(String id) { protected Task(String id) {
super(id); super(id);
@ -30,7 +31,6 @@ public abstract class Task
} }
} }
throw CrashReports.report(new Throwable(), throw CrashReports.report(new Throwable(),
"The following required Tasks are not done:\n%s", "The following required Tasks are not done:\n%s",
StringUtil.iterableToString(undoneTasks, "\n")); StringUtil.iterableToString(undoneTasks, "\n"));
@ -44,23 +44,18 @@ public abstract class Task
// This method will be invoked by Run() // This method will be invoked by Run()
protected abstract void perform(); 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() { public boolean isDone() {
return done; return done;
} }
public boolean canRun() { public boolean canRun() {
for (Task j : requiredTasks) { for (Task t : requiredTasks) {
if (!j.isDone()) return false; if (!t.isDone()) return false;
} }
return true; return true;
} }
public List<Task> getRequiredTasks() {
return requiredTasks;
}
} }