source: trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/ui/commands/CMDgenerateTaskTree.java @ 727

Last change on this file since 727 was 727, checked in by pharms, 12 years ago
  • added command to generate task trees based on a sequence
File size: 2.8 KB
Line 
1
2package de.ugoe.cs.quest.ui.commands;
3
4import java.security.InvalidParameterException;
5import java.util.Collection;
6import java.util.List;
7
8import de.ugoe.cs.quest.CommandHelpers;
9import de.ugoe.cs.quest.SequenceInstanceOf;
10import de.ugoe.cs.quest.eventcore.Event;
11import de.ugoe.cs.quest.tasktrees.manager.TaskTreeManager;
12import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTree;
13import de.ugoe.cs.util.console.Command;
14import de.ugoe.cs.util.console.GlobalDataContainer;
15
16/**
17 * <p>
18 * Command to sort the key interactions in a sequence of events. An example, the sequence
19 * to write the upper case D
20 * <ul>
21 *   <li>press shift key</li>
22 *   <li>press D key</li>
23 *   <li>release shift key</li>
24 *   <li>release D key</li>
25 * </ul>
26 *
27 * is transformed to the sequence
28 *
29 * <ul>
30 *   <li>press shift key</li>
31 *   <li>press D key</li>
32 *   <li>release D key</li>
33 *   <li>release shift key</li>
34 * </ul>
35 *
36 * in which the first pressed key (shift in this case) is always released last. The same is done
37 * for the alt and the ctrl keys.
38 *
39 * </p>
40 *
41 * @author Patrick Harms
42 * @version 1.0
43 */
44public class CMDgenerateTaskTree implements Command {
45
46    /*
47     * (non-Javadoc)
48     *
49     * @see de.ugoe.cs.util.console.Command#help()
50     */
51    @Override
52    public String help() {
53        return "generateTaskTree <sequences> {<tasktree>}";
54    }
55
56    /*
57     * (non-Javadoc)
58     *
59     * @see de.ugoe.cs.util.console.Command#run(java.util.List)
60     */
61    @SuppressWarnings("unchecked")
62    @Override
63    public void run(List<Object> parameters) {
64        String sequencesName;
65        String tasktreeName;
66        try {
67            sequencesName = (String) parameters.get(0);
68            if (parameters.size() > 1) {
69                tasktreeName = (String) parameters.get(1);
70            }
71            else {
72                tasktreeName = "tasktree";
73            }
74        }
75        catch (Exception e) {
76            throw new InvalidParameterException("must provide a sequences name");
77        }
78
79        Collection<List<Event>> sequences = null;
80        Object dataObject = GlobalDataContainer.getInstance().getData(sequencesName);
81        if (dataObject == null) {
82            CommandHelpers.objectNotFoundMessage(sequencesName);
83            return;
84        }
85        if (!SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
86            CommandHelpers.objectNotType(sequencesName, "Collection<List<Event<?>>>");
87            return;
88        }
89
90        sequences = (Collection<List<Event>>) dataObject;
91       
92        ITaskTree taskTree = new TaskTreeManager().createTaskTree(sequences);
93       
94        if (GlobalDataContainer.getInstance().addData(tasktreeName, taskTree)) {
95            CommandHelpers.dataOverwritten(sequencesName);
96        }
97       
98    }
99
100}
Note: See TracBrowser for help on using the repository browser.