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
Location:
trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree
Files:
4 edited
4 moved

Legend:

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

    r1135 r1152  
    2020import com.google.common.collect.Lists; 
    2121 
    22 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     22import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
    2323 
    2424/** 
     
    3434    private final Predicate filterPredicate; 
    3535 
    36     private List<ITaskTreeNode> filteredNodes = Lists.newArrayList(); 
     36    private List<ITask> filteredTasks = Lists.newArrayList(); 
    3737 
    38     private List<ITaskTreeNode> nodesNotMatchedFilter = Lists.newArrayList(); 
     38    private List<ITask> tasksNotMatchedFilter = Lists.newArrayList(); 
    3939 
    4040    @SuppressWarnings("rawtypes") 
     
    4444 
    4545    @SuppressWarnings("unchecked") 
    46     public void addNode(ITaskTreeNode node) { 
    47         if (filterPredicate.apply(node)) { 
    48             filteredNodes.add(node); 
     46    public void addTask(ITask task) { 
     47        if (filterPredicate.apply(task)) { 
     48            filteredTasks.add(task); 
    4949        } 
    5050        else { 
    51             nodesNotMatchedFilter.add(node); 
     51            tasksNotMatchedFilter.add(task); 
    5252        } 
    5353    } 
    5454 
    55     public List<ITaskTreeNode> nodesMatchedFilter() { 
    56         return this.filteredNodes; 
     55    public List<ITask> tasksMatchedFilter() { 
     56        return this.filteredTasks; 
    5757    } 
    5858 
    59     public int nrOfNodesMatchedFilter() { 
    60         return this.filteredNodes.size(); 
     59    public int nrOfTasksMatchedFilter() { 
     60        return this.filteredTasks.size(); 
    6161    } 
    6262 
    63     public List<ITaskTreeNode> nodesNotMatchedFilter() { 
    64         return this.nodesNotMatchedFilter; 
     63    public List<ITask> tasksNotMatchedFilter() { 
     64        return this.tasksNotMatchedFilter; 
    6565    } 
    6666 
    67     public int nrOfNodesNotMatchedFilter() { 
    68         return this.nodesNotMatchedFilter.size(); 
     67    public int nrOfTasksNotMatchedFilter() { 
     68        return this.tasksNotMatchedFilter.size(); 
    6969    } 
    7070 
  • 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    } 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/TaskModelFilterStrategy.java

    r1150 r1152  
    1515package de.ugoe.cs.autoquest.usability.tasktree; 
    1616 
    17 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
     17import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    1818import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTargetFilter; 
    1919import de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter; 
    20 import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTreeNodeTypeFilter; 
     20import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskTypeFilter; 
    2121 
    2222/** 
     
    2727 * @author Alexander Deicke 
    2828 */ 
    29 public interface TaskTreeFilterStrategy { 
     29public interface TaskModelFilterStrategy { 
    3030 
    31     public FilterResult filter(ITaskTree taskTree, EventTargetFilter eventTarget); 
     31    public FilterResult filter(ITaskModel taskModel, EventTargetFilter eventTarget); 
    3232 
    33     public FilterResult filter(ITaskTree taskTree, EventTypeFilter eventType); 
     33    public FilterResult filter(ITaskModel taskModel, EventTypeFilter eventType); 
    3434 
    35     public FilterResult filter(ITaskTree taskTree, TaskTreeNodeTypeFilter nodeType); 
     35    public FilterResult filter(ITaskModel taskModel, TaskTypeFilter nodeType); 
    3636 
    3737} 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTargetFilter.java

    r1135 r1152  
    2323import de.ugoe.cs.autoquest.eventcore.guimodel.ITextField; 
    2424import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    25 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     25import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
    2626 
    2727/** 
     
    3232 * @author Alexander Deicke 
    3333 */ 
    34 public enum EventTargetFilter implements TaskTreeNodeFilter<IEventTarget> { 
     34public enum EventTargetFilter implements TaskFilter<IEventTarget> { 
    3535 
    3636    TEXT_FIELD(ITextField.class), 
     
    5454    public Predicate filterPredicate() { 
    5555        Predicate<Object> instanceOfIEventTaskPredicate = Predicates.instanceOf(IEventTask.class); 
    56         Predicate<ITaskTreeNode> nodeHoldsInstanceOfFilterArgument = 
    57             Predicates.compose(Predicates.instanceOf(eventTargetClazz), nodeExtractionFunction()); 
    58         return Predicates.and(instanceOfIEventTaskPredicate, nodeHoldsInstanceOfFilterArgument); 
     56        Predicate<ITask> taskHoldsInstanceOfFilterArgument = 
     57            Predicates.compose(Predicates.instanceOf(eventTargetClazz), taskExtractionFunction()); 
     58        return Predicates.and(instanceOfIEventTaskPredicate, taskHoldsInstanceOfFilterArgument); 
    5959    } 
    6060 
    61     private Function<ITaskTreeNode, IEventTarget> nodeExtractionFunction() { 
    62         return new Function<ITaskTreeNode, IEventTarget>() { 
     61    private Function<ITask, IEventTarget> taskExtractionFunction() { 
     62        return new Function<ITask, IEventTarget>() { 
    6363 
    6464            @Override 
    65             public IEventTarget apply(ITaskTreeNode treeNode) { 
    66                 return ((IEventTask) treeNode).getEventTarget(); 
     65            public IEventTarget apply(ITask task) { 
     66                return ((IEventTask) task).getEventTarget(); 
    6767            } 
    6868        }; 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/EventTypeFilter.java

    r1150 r1152  
    2727import de.ugoe.cs.autoquest.eventcore.gui.TextInput; 
    2828import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    29 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     29import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
    3030 
    3131/** 
     
    3636 * @author Alexander Deicke 
    3737 */ 
    38 public enum EventTypeFilter implements TaskTreeNodeFilter<IEventType> { 
     38public enum EventTypeFilter implements TaskFilter<IEventType> { 
    3939 
    4040    MOUSE_BUTTON_INTERACTION(MouseButtonInteraction.class), 
     
    6666    public Predicate filterPredicate() { 
    6767        Predicate<Object> instanceOfIEventTaskPredicate = Predicates.instanceOf(IEventTask.class); 
    68         Predicate<ITaskTreeNode> nodeHoldsInstanceOfFilterArgument = 
    69             Predicates.compose(Predicates.instanceOf(eventTypeClazz), nodeExtractionFunction()); 
    70         return Predicates.and(instanceOfIEventTaskPredicate, nodeHoldsInstanceOfFilterArgument); 
     68        Predicate<ITask> taskHoldsInstanceOfFilterArgument = 
     69            Predicates.compose(Predicates.instanceOf(eventTypeClazz), taskExtractionFunction()); 
     70        return Predicates.and(instanceOfIEventTaskPredicate, taskHoldsInstanceOfFilterArgument); 
    7171    } 
    7272 
    73     private Function<ITaskTreeNode, IEventType> nodeExtractionFunction() { 
    74         return new Function<ITaskTreeNode, IEventType>() { 
     73    private Function<ITask, IEventType> taskExtractionFunction() { 
     74        return new Function<ITask, IEventType>() { 
    7575 
    7676            @Override 
    77             public IEventType apply(ITaskTreeNode treeNode) { 
    78                 return ((IEventTask) treeNode).getEventType(); 
     77            public IEventType apply(ITask task) { 
     78                return ((IEventTask) task).getEventType(); 
    7979            } 
    8080        }; 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskFilter.java

    r1150 r1152  
    2424 * @author Alexander Deicke 
    2525 */ 
    26 public interface TaskTreeNodeFilter<T> { 
     26public interface TaskFilter<T> { 
    2727 
    2828    public Class<T> clazz(); 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskModelFilter.java

    r1150 r1152  
    1717import com.google.common.base.Preconditions; 
    1818 
    19 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 
     19import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel; 
    2020import de.ugoe.cs.autoquest.usability.tasktree.FilterResult; 
    21 import de.ugoe.cs.autoquest.usability.tasktree.TaskTreeFilterStrategy; 
     21import de.ugoe.cs.autoquest.usability.tasktree.TaskModelFilterStrategy; 
    2222 
    2323/** 
     
    2828 * @author Alexander Deicke 
    2929 */ 
    30 public class TaskTreeFilter { 
     30public class TaskModelFilter { 
    3131 
    32     private final TaskTreeFilterStrategy taskTreeFilterStrategy; 
     32    private final TaskModelFilterStrategy taskModelFilterStrategy; 
    3333 
    34     public TaskTreeFilter(TaskTreeFilterStrategy treeTraversalStrategy) { 
     34    public TaskModelFilter(TaskModelFilterStrategy treeTraversalStrategy) { 
    3535        Preconditions.checkNotNull(treeTraversalStrategy); 
    36         this.taskTreeFilterStrategy = treeTraversalStrategy; 
     36        this.taskModelFilterStrategy = treeTraversalStrategy; 
    3737    } 
    3838 
     
    4545    } 
    4646 
    47     public FilterNodeTypeStep filterByNodeType(TaskTreeNodeTypeFilter nodeType) { 
     47    public FilterNodeTypeStep filterByNodeType(TaskTypeFilter nodeType) { 
    4848        return new FilterNodeTypeStep(nodeType); 
    4949    } 
     
    5757        } 
    5858 
    59         public FilterResult from(ITaskTree taskTree) { 
    60             return taskTreeFilterStrategy.filter(taskTree, eventTarget); 
     59        public FilterResult from(ITaskModel taskModel) { 
     60            return taskModelFilterStrategy.filter(taskModel, eventTarget); 
    6161        } 
    6262 
     
    7171        } 
    7272 
    73         public FilterResult from(ITaskTree taskTree) { 
    74             return taskTreeFilterStrategy.filter(taskTree, eventType); 
     73        public FilterResult from(ITaskModel taskModel) { 
     74            return taskModelFilterStrategy.filter(taskModel, eventType); 
    7575        } 
    7676 
     
    7979    public class FilterNodeTypeStep { 
    8080 
    81         private final TaskTreeNodeTypeFilter nodeType; 
     81        private final TaskTypeFilter nodeType; 
    8282 
    83         public FilterNodeTypeStep(TaskTreeNodeTypeFilter nodeType) { 
     83        public FilterNodeTypeStep(TaskTypeFilter nodeType) { 
    8484            this.nodeType = nodeType; 
    8585        } 
    8686 
    87         public FilterResult from(ITaskTree taskTree) { 
    88             return taskTreeFilterStrategy.filter(taskTree, nodeType); 
     87        public FilterResult from(ITaskModel taskModel) { 
     88            return taskModelFilterStrategy.filter(taskModel, nodeType); 
    8989        } 
    9090 
  • trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filters/TaskTypeFilter.java

    r1150 r1152  
    2222import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 
    2323import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 
    24 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 
     24import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
    2525 
    2626/** 
     
    3131 * @author Alexander Deicke 
    3232 */ 
    33 public enum TaskTreeNodeTypeFilter implements TaskTreeNodeFilter<ITaskTreeNode> { 
     33public enum TaskTypeFilter implements TaskFilter<ITask> { 
    3434 
    3535    EVENT_TASK_NODE(IEventTask.class), 
     
    4141    SELECTION(ISelection.class),; 
    4242 
    43     private Class<? extends ITaskTreeNode> nodeTypeClazz; 
     43    private Class<? extends ITask> taskTypeClazz; 
    4444 
    45     private TaskTreeNodeTypeFilter(Class<? extends ITaskTreeNode> nodeTypeClazz) { 
    46         this.nodeTypeClazz = nodeTypeClazz; 
     45    private TaskTypeFilter(Class<? extends ITask> taskTypeClazz) { 
     46        this.taskTypeClazz = taskTypeClazz; 
    4747    } 
    4848 
    4949    @SuppressWarnings("unchecked") 
    5050    @Override 
    51     public Class<ITaskTreeNode> clazz() { 
    52         return (Class<ITaskTreeNode>) this.nodeTypeClazz; 
     51    public Class<ITask> clazz() { 
     52        return (Class<ITask>) this.taskTypeClazz; 
    5353    } 
    5454 
     
    5656    @Override 
    5757    public Predicate filterPredicate() { 
    58         return Predicates.instanceOf(nodeTypeClazz); 
     58        return Predicates.instanceOf(taskTypeClazz); 
    5959    } 
    6060 
Note: See TracChangeset for help on using the changeset viewer.