Changeset 1152 for trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/IterativeDFSFilterStrategy.java
- Timestamp:
- 04/08/13 16:50:21 (11 years ago)
- 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 22 22 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 23 23 import de.ugoe.cs.autoquest.eventcore.IEventType; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 24 import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship; 25 import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship; 26 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 27 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 26 28 import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTargetFilter; 27 29 import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter; 28 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskT reeNodeTypeFilter;30 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter; 29 31 30 32 /** … … 35 37 * @author Alexander Deicke 36 38 */ 37 public class IterativeDFSFilterStrategy implements Task TreeFilterStrategy {39 public class IterativeDFSFilterStrategy implements TaskModelFilterStrategy { 38 40 39 41 private FilterResult filterStatistic; … … 41 43 @SuppressWarnings("unchecked") 42 44 @Override 43 public FilterResult filter(ITask Tree taskTree, EventTargetFilter eventTarget) {45 public FilterResult filter(ITaskModel taskModel, EventTargetFilter eventTarget) { 44 46 Predicate<IEventTarget> filterPredicate = eventTarget.filterPredicate(); 45 47 this.filterStatistic = new FilterResult(filterPredicate); 46 traverse(task Tree);48 traverse(taskModel); 47 49 return this.filterStatistic; 48 50 } … … 50 52 @SuppressWarnings("unchecked") 51 53 @Override 52 public FilterResult filter(ITask Tree taskTree, EventTypeFilter eventType) {54 public FilterResult filter(ITaskModel taskModel, EventTypeFilter eventType) { 53 55 Predicate<IEventType> filterPredicate = eventType.filterPredicate(); 54 56 this.filterStatistic = new FilterResult(filterPredicate); 55 traverse(task Tree);57 traverse(taskModel); 56 58 return this.filterStatistic; 57 59 } … … 59 61 @SuppressWarnings("unchecked") 60 62 @Override 61 public FilterResult filter(ITask Tree taskTree, TaskTreeNodeTypeFilter nodeType) {62 Predicate<ITask TreeNode> filterPredicate = nodeType.filterPredicate();63 public FilterResult filter(ITaskModel taskModel, TaskTypeFilter nodeType) { 64 Predicate<ITask> filterPredicate = nodeType.filterPredicate(); 63 65 this.filterStatistic = new FilterResult(filterPredicate); 64 traverse(task Tree);66 traverse(taskModel); 65 67 return this.filterStatistic; 66 68 } 67 69 68 private void traverse(ITask Tree taskTree) {69 Queue<ITask TreeNode> unvisitedNodes = new LinkedList<ITaskTreeNode>();70 unvisited Nodes.add(taskTree.getRoot());71 while (stillUnvisited Nodes(unvisitedNodes)) {72 ITask TreeNode node = unvisitedNodes.poll();73 processCurrent Node(node);74 processChildrenOfCurrent Node(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); 75 77 } 76 78 } 77 79 78 private boolean stillUnvisited Nodes(Queue<ITaskTreeNode> unvisitedNodes) {79 return !unvisited Nodes.isEmpty();80 private boolean stillUnvisitedTasks(Queue<ITask> unvisitedTasks) { 81 return !unvisitedTasks.isEmpty(); 80 82 } 81 83 82 private void processCurrent Node(ITaskTreeNode node) {83 this.filterStatistic.add Node(node);84 private void processCurrentTask(ITask task) { 85 this.filterStatistic.addTask(task); 84 86 } 85 87 86 private void processChildrenOfCurrent Node(Queue<ITaskTreeNode> unvisitedNodes,87 ITask TreeNode node)88 private void processChildrenOfCurrentTask(Queue<ITask> unvisitedTasks, 89 ITask task) 88 90 { 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()); 91 98 } 92 99 }
Note: See TracChangeset
for help on using the changeset viewer.