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;
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<Task> requiredTasks = new ArrayList<>();
List<Task> 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<Task> getRequiredTasks() {
return requiredTasks;
}
}