source: trunk/autoquest-ui-core/src/main/java/de/ugoe/cs/autoquest/commands/sequences/CMDdetectTextInputEvents.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
File size: 3.4 KB
Line 
1
2package de.ugoe.cs.autoquest.commands.sequences;
3
4import java.util.Collection;
5import java.util.LinkedList;
6import java.util.List;
7
8import de.ugoe.cs.autoquest.CommandHelpers;
9import de.ugoe.cs.autoquest.SequenceInstanceOf;
10import de.ugoe.cs.autoquest.eventcore.Event;
11import de.ugoe.cs.autoquest.eventcore.gui.KeyPressed;
12import de.ugoe.cs.autoquest.eventcore.gui.KeyReleased;
13import de.ugoe.cs.autoquest.eventcore.gui.KeyTyped;
14import de.ugoe.cs.autoquest.eventcore.gui.TextInput;
15import de.ugoe.cs.autoquest.eventcore.gui.TextInputDetector;
16import de.ugoe.cs.autoquest.eventcore.gui.TextInput.TextEquality;
17import de.ugoe.cs.util.console.Command;
18import de.ugoe.cs.util.console.Console;
19import de.ugoe.cs.util.console.GlobalDataContainer;
20
21/**
22 * <p>
23 * Command that converts {@link KeyPressed}, {@link KeyReleased}, and {@link KeyTyped} sequences
24 * into {@link TextInput} events if possible.
25 * </p>
26 *
27 * @author Patrick Harms
28 * @version 1.0
29 */
30public class CMDdetectTextInputEvents implements Command {
31
32    /*
33     * (non-Javadoc)
34     *
35     * @see de.ugoe.cs.util.console.Command#help()
36     */
37    @Override
38    public String help() {
39        return "detectTextInputEvents <sequences> {<new sequences>} {<textEqualityType>}";
40    }
41
42    /*
43     * (non-Javadoc)
44     *
45     * @see de.ugoe.cs.util.console.Command#run(java.util.List)
46     */
47    @SuppressWarnings("unchecked")
48    @Override
49    public void run(List<Object> parameters) {
50        String sequencesName;
51        String newSequencesName;
52        String textEqualityTypeString = "LEXICAL";
53        try {
54            sequencesName = (String) parameters.get(0);
55            if (parameters.size() > 1) {
56                newSequencesName = (String) parameters.get(1);
57            }
58            else {
59                newSequencesName = sequencesName;
60            }
61            if (parameters.size() > 2) {
62                textEqualityTypeString = (String) parameters.get(2);
63            }
64        }
65        catch (Exception e) {
66            throw new IllegalArgumentException("must provide a sequences name");
67        }
68
69        Collection<List<Event>> sequences = null;
70        Object dataObject = GlobalDataContainer.getInstance().getData(sequencesName);
71        if (dataObject == null) {
72            CommandHelpers.objectNotFoundMessage(sequencesName);
73            return;
74        }
75        if (!SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
76            CommandHelpers.objectNotType(sequencesName, "Collection<List<Event<?>>>");
77            return;
78        }
79
80        TextEquality textEqualityType = null;
81        try {
82            textEqualityType = TextEquality.valueOf(textEqualityTypeString);
83        }
84        catch (IllegalArgumentException e) {
85            Console
86                .printerrln("Invalid mode. Only LEXICAL, SYNTACTICAL, and SEMANTICAL are allowed values!");
87            return;
88        }
89
90        sequences = (Collection<List<Event>>) dataObject;
91
92        Collection<List<Event>> newSequences = new LinkedList<List<Event>>();
93
94        for (List<Event> sequence : sequences) {
95            newSequences.add(new TextInputDetector(textEqualityType).detectTextInputs(sequence));
96        }
97
98        if (GlobalDataContainer.getInstance().addData(newSequencesName, newSequences)) {
99            CommandHelpers.dataOverwritten(newSequencesName);
100        }
101
102    }
103
104}
Note: See TracBrowser for help on using the repository browser.