package at.oefai.aaa.agent.jam;

import java.io.Serializable;

import at.oefai.aaa.agent.jam.types.Binding;

/**
 * A built-in JAM primitive action for adding a goal to the JAM goal list.
 * @author Marc Huber
 * @author Jaeho Lee
 */
class PostAction extends AbstractAction implements Serializable {

    private final GoalAction goalAction;
    private final IntentionStructure intentionStructure;

    /**  */
    PostAction(final GoalAction pGoalAction, final IntentionStructure pIntentionStructure) {
        this.goalAction = pGoalAction;
        this.intentionStructure = pIntentionStructure;
    }


    // Member functions

    public boolean isExecutableAction() { return true; }

    /** Add a top-level goal to the agent. */
    public Result execute(final Binding b, final Goal currentGoal) {
        this.intentionStructure.addUnique(this.goalAction, (Goal) null, b);
        //_interpreter.getLog().infoIntentionStructureorGoalList(_interpreter.getIntentionStructure().verboseString());
        return Result.SUCCEEDED;
    }

    /** Output information to the stream in an in-line manner. */
    public String formattedString(final Binding b) {
        return "POST: " + this.goalAction.formattedStringEnhanced(b, "", "");
    }

    public String getName() {
        return "POST";
    }
}

