Developing module systme
- Added Module class - minor changes in Task class
This commit is contained in:
parent
5a521fc131
commit
942c665d73
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user