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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user