package net.codjo.segmentation.server.blackboard.message;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
public class BlackboardActionBuilder {
private final List<BlackboardAction> actions;
protected BlackboardActionBuilder(BlackboardAction action) {
this(true);
actions.add(action);
}
public BlackboardActionBuilder(boolean connectToActions) {
if (connectToActions) {
actions = new ArrayList<BlackboardAction>();
}
else {
actions = null;
}
}
public Write write(Todo todo, Level level) {
return connectActionToBuilder(new Write(todo, level));
}
public Erase erase(Todo todo, Level level) {
return connectActionToBuilder(new Erase(todo, level));
}
public InformOfFailure informOfFailure(Todo todo, Level level) {
return connectActionToBuilder(new InformOfFailure(todo, level));
}
public GetTodo getTodo(Level level) {
return connectActionToBuilder(new GetTodo(level));
}
public Level nextLevel(Level level) {
return new NextLevel(level);
}
private <T extends BlackboardAction> T connectActionToBuilder(T action) {
if (actions == null) {
return action;
}
action.setBuilder(this);
actions.add(action);
return action;
}
void visit(BlackboardActionVisitor visitor) {
for (BlackboardAction action : actions) {
action.acceptVisitor(visitor);
}
}
}