RevertingPlanBody.java

30 lines | 778 B Blame History Raw Download
package bdi4jade.extension.undo;

import bdi4jade.goal.Goal;
import bdi4jade.plan.planbody.BeliefGoalPlanBody;

public abstract class RevertingPlanBody extends BeliefGoalPlanBody {

	private static final long serialVersionUID = -678344739581158097L;

	@Override
	public boolean dispatchSubgoal(Goal subgoal) {
		setParentGoal(subgoal);
		return super.dispatchSubgoal(subgoal);
	}

	@Override
	public boolean dispatchSubgoalAndListen(Goal subgoal) {
		setParentGoal(subgoal);
		return super.dispatchSubgoalAndListen(subgoal);
	}

	private void setParentGoal(Goal subgoal) {
		if (this.getCapability() instanceof RevertingCapability) {
			RevertingCapability capability = (RevertingCapability) this.getCapability();
			capability.addParentGoal(subgoal, this.getGoal());
		}
	}

}