Ignore:
Timestamp:
04/08/13 16:50:21 (11 years ago)
Author:
pharms
Message:
  • complete refactoring of task tree model with a separation of task models and task instances
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/IterativeDFSFilterStrategy.java

    r1135 r1152  
    2222import de.ugoe.cs.autoquest.eventcore.IEventTarget; 
    2323import de.ugoe.cs.autoquest.eventcore.IEventType; 
    24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
    25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     24import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship; 
     25import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship; 
     26import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     27import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2628import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTargetFilter; 
    2729import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter; 
    28 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter; 
     30import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter; 
    2931 
    3032/** 
     
    3537 * @author Alexander Deicke 
    3638 */ 
    37 public class IterativeDFSFilterStrategy implements TaskTreeFilterStrategy { 
     39public class IterativeDFSFilterStrategy implements TaskModelFilterStrategy { 
    3840 
    3941    private FilterResult filterStatistic; 
     
    4143    @SuppressWarnings("unchecked") 
    4244    @Override 
    43     public FilterResult filter(ITaskTree taskTree, EventTargetFilter eventTarget) { 
     45    public FilterResult filter(ITaskModel taskModel, EventTargetFilter eventTarget) { 
    4446        Predicate<IEventTarget> filterPredicate = eventTarget.filterPredicate(); 
    4547        this.filterStatistic = new FilterResult(filterPredicate); 
    46         traverse(taskTree); 
     48        traverse(taskModel); 
    4749        return this.filterStatistic; 
    4850    } 
     
    5052    @SuppressWarnings("unchecked") 
    5153    @Override 
    52     public FilterResult filter(ITaskTree taskTree, EventTypeFilter eventType) { 
     54    public FilterResult filter(ITaskModel taskModel, EventTypeFilter eventType) { 
    5355        Predicate<IEventType> filterPredicate = eventType.filterPredicate(); 
    5456        this.filterStatistic = new FilterResult(filterPredicate); 
    55         traverse(taskTree); 
     57        traverse(taskModel); 
    5658        return this.filterStatistic; 
    5759    } 
     
    5961    @SuppressWarnings("unchecked") 
    6062    @Override 
    61     public FilterResult filter(ITaskTree taskTree, TaskTreeNodeTypeFilter nodeType) { 
    62         Predicate<ITaskTreeNode> filterPredicate = nodeType.filterPredicate(); 
     63    public FilterResult filter(ITaskModel taskModel, TaskTypeFilter nodeType) { 
     64        Predicate<ITask> filterPredicate = nodeType.filterPredicate(); 
    6365        this.filterStatistic = new FilterResult(filterPredicate); 
    64         traverse(taskTree); 
     66        traverse(taskModel); 
    6567        return this.filterStatistic; 
    6668    } 
    6769 
    68     private void traverse(ITaskTree taskTree) { 
    69         Queue<ITaskTreeNode> unvisitedNodes = new LinkedList<ITaskTreeNode>(); 
    70         unvisitedNodes.add(taskTree.getRoot()); 
    71         while (stillUnvisitedNodes(unvisitedNodes)) { 
    72             ITaskTreeNode node = unvisitedNodes.poll(); 
    73             processCurrentNode(node); 
    74             processChildrenOfCurrentNode(unvisitedNodes, node); 
     70    private void traverse(ITaskModel taskModel) { 
     71        Queue<ITask> unvisitedTasks = new LinkedList<ITask>(); 
     72        unvisitedTasks.addAll(taskModel.getTasks()); 
     73        while (stillUnvisitedTasks(unvisitedTasks)) { 
     74            ITask task = unvisitedTasks.poll(); 
     75            processCurrentTask(task); 
     76            processChildrenOfCurrentTask(unvisitedTasks, task); 
    7577        } 
    7678    } 
    7779 
    78     private boolean stillUnvisitedNodes(Queue<ITaskTreeNode> unvisitedNodes) { 
    79         return !unvisitedNodes.isEmpty(); 
     80    private boolean stillUnvisitedTasks(Queue<ITask> unvisitedTasks) { 
     81        return !unvisitedTasks.isEmpty(); 
    8082    } 
    8183 
    82     private void processCurrentNode(ITaskTreeNode node) { 
    83         this.filterStatistic.addNode(node); 
     84    private void processCurrentTask(ITask task) { 
     85        this.filterStatistic.addTask(task); 
    8486    } 
    8587 
    86     private void processChildrenOfCurrentNode(Queue<ITaskTreeNode> unvisitedNodes, 
    87                                               ITaskTreeNode node) 
     88    private void processChildrenOfCurrentTask(Queue<ITask> unvisitedTasks, 
     89                                              ITask task) 
    8890    { 
    89         for (ITaskTreeNode child : node.getChildren()) { 
    90             unvisitedNodes.add(child); 
     91        if (task instanceof IStructuringTemporalRelationship) { 
     92            for (ITask child : ((IStructuringTemporalRelationship) task).getChildren()) { 
     93                unvisitedTasks.add(child); 
     94            } 
     95        } 
     96        else if (task instanceof IMarkingTemporalRelationship) { 
     97            unvisitedTasks.add(((IMarkingTemporalRelationship) task).getMarkedTask()); 
    9198        } 
    9299    } 
Note: See TracChangeset for help on using the changeset viewer.