// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.tasktrees.treeifc; /** *

* Default implementation for a task instance visitor performing a traversal of the instances *

* * @author Patrick Harms */ public class DefaultTaskInstanceTraversingVisitor implements ITaskInstanceVisitor { /* (non-Javadoc) * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceVisitor#visit(IEventTaskInstance) */ @Override public void visit(IEventTaskInstance eventTaskInstance) { // do nothing } /* (non-Javadoc) * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceVisitor#visit(IIterationInstance) */ @Override public void visit(IIterationInstance iterationInstance) { visit((ITaskInstanceList) iterationInstance); } /* (non-Javadoc) * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceVisitor#visit(IOptionalInstance) */ @Override public void visit(IOptionalInstance optionalInstance) { if (optionalInstance.getChild() != null) { optionalInstance.getChild().accept(this); } } /* (non-Javadoc) * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceVisitor#visit(ISelectionInstance) */ @Override public void visit(ISelectionInstance selectionInstance) { selectionInstance.getChild().accept(this); } /* (non-Javadoc) * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceVisitor#visit(ISequenceInstance) */ @Override public void visit(ISequenceInstance sequenceInstance) { visit((ITaskInstanceList) sequenceInstance); } /* (non-Javadoc) * @see de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceVisitor#visit(ITaskInstance) */ @Override public void visit(ITaskInstance taskInstance) { if (taskInstance instanceof IEventTaskInstance) { visit((IEventTaskInstance) taskInstance); } else if (taskInstance instanceof IIterationInstance) { visit((IIterationInstance) taskInstance); } else if (taskInstance instanceof IOptionalInstance) { visit((IOptionalInstance) taskInstance); } else if (taskInstance instanceof ISelectionInstance) { visit((ISelectionInstance) taskInstance); } else if (taskInstance instanceof ISequenceInstance) { visit((ISequenceInstance) taskInstance); } } /** *

* common implementation for traversing task instance lists. *

* * @param taskInstanceList the task instance list to be traversed */ public void visit(ITaskInstanceList taskInstanceList) { for (ITaskInstance child : taskInstanceList) { child.accept(this); } } }