source: trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/manager/TaskTreeManager.java @ 922

Last change on this file since 922 was 922, checked in by sherbold, 12 years ago
  • renaming of packages from de.ugoe.cs.quest to de.ugoe.cs.autoquest
  • Property svn:executable set to *
File size: 3.9 KB
RevLine 
[922]1package de.ugoe.cs.autoquest.tasktrees.manager;
[439]2
[727]3import java.util.Collection;
4import java.util.List;
[725]5import java.util.logging.Level;
[439]6
[922]7import de.ugoe.cs.autoquest.eventcore.Event;
8import de.ugoe.cs.autoquest.eventcore.gui.KeyboardFocusChange;
9import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
10import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence;
11import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree;
12import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder;
13import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
14import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory;
[725]15import de.ugoe.cs.util.console.Console;
[439]16
17/**
18 * TODO comment
[557]19 *
[439]20 * @version $Revision: $ $Date: $
[557]21 * @author 2011, last modified by $Author: $
[439]22 */
[557]23public class TaskTreeManager {
24   
25    /** */
26    private static final int MAX_EVENTS_TILL_RULE_APPLICATION = 100;
[439]27
[557]28    /** */
29    private ITaskTreeBuilder taskTreeBuilder = ComponentManager.getDefaultTaskTreeBuilder();
[439]30
[557]31    /** */
32    private ITaskTreeNodeFactory taskTreeNodeFactory =
33        ComponentManager.getDefaultTaskTreeNodeFactory();
34
35    /** */
36    private int eventsTillRuleApplication = MAX_EVENTS_TILL_RULE_APPLICATION;
37
38    /** */
39    private ISequence rootSequence;
40
41    /**
42     * TODO: comment
43     *
44     */
45    public TaskTreeManager() {
46        rootSequence = taskTreeNodeFactory.createNewSequence();
[439]47    }
[557]48
49    /**
[727]50     * <p>
51     * TODO: comment
52     * </p>
[557]53     *
[727]54     * @param sequences
55     * @return
[557]56     */
[727]57    public synchronized ITaskTree createTaskTree(Collection<List<Event>> sequences) {
58       
59        for (List<Event> sequence : sequences) {
60            for (Event event : sequence) {
61                handleNewEvent(event);
62            }
63        }
64       
65        return getTaskTree();
66    }
67
68    /**
69     *
70     */
[557]71    public void handleNewEvent(Event event) {
[725]72        handleEventTask(taskTreeNodeFactory.createNewEventTask(event.getType(), event.getTarget()));
[439]73    }
74
[557]75    /**
76     *
77     */
78    public synchronized ITaskTree getTaskTree() {
[725]79        Console.traceln(Level.INFO, "applying temporal relationship generation rules");
[439]80
[557]81        ISequence currentRootSequence = rootSequence.clone();
82        ComponentManager.getTemporalRelationshipRuleManager().applyRules
83          (currentRootSequence, taskTreeBuilder, taskTreeNodeFactory, true);
[439]84
[557]85        return taskTreeNodeFactory.createTaskTree(currentRootSequence);
[439]86    }
[557]87
88    /**
89     * adds the task to the current or the new sequence. The decision depends on the type of task.
90     * If the task finishes the current sequence, the sequence is marked as finished If the task
91     * does not start a new sequence, it is added to the current sequence, before it is marked s
92     * finished. Otherwise it is added to a new sequence.
93     */
[725]94    private synchronized void handleEventTask(IEventTask eventTask) {
[710]95        if (!(eventTask.getEventType() instanceof KeyboardFocusChange)) {
[725]96            Console.traceln(Level.INFO, "handling interaction event task \"" + eventTask + "\"");
[710]97            addTaskToSequence(eventTask);
[439]98        }
99    }
[557]100
101    /**
102     *
103     */
[710]104    private void addTaskToSequence(ITaskTreeNode task)
[439]105    {
[557]106        taskTreeBuilder.addChild(rootSequence, task);
[439]107
[557]108        if (--eventsTillRuleApplication == 0) {
109            eventsTillRuleApplication = MAX_EVENTS_TILL_RULE_APPLICATION;
110
[725]111            Console.traceln(Level.INFO, "applying temporal relationship generation rules");
[557]112            ComponentManager.getTemporalRelationshipRuleManager().applyRules(rootSequence,
113                                                                             taskTreeBuilder,
114                                                                             taskTreeNodeFactory,
115                                                                             false);
116        }
[439]117    }
118
119}
Note: See TracBrowser for help on using the repository browser.