source: trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/commands/usage/CMDgenerateRandomSequences.java @ 766

Last change on this file since 766 was 766, checked in by sherbold, 12 years ago
  • Property svn:mime-type set to text/plain
File size: 2.7 KB
Line 
1package de.ugoe.cs.quest.commands.usage;
2
3import java.util.Collection;
4import java.util.List;
5
6import de.ugoe.cs.quest.CommandHelpers;
7import de.ugoe.cs.quest.eventcore.Event;
8import de.ugoe.cs.quest.testgeneration.RandomWalkGenerator;
9import de.ugoe.cs.quest.usageprofiles.IStochasticProcess;
10import de.ugoe.cs.util.console.Command;
11import de.ugoe.cs.util.console.Console;
12import de.ugoe.cs.util.console.GlobalDataContainer;
13
14/**
15 * <p>
16 * Command to generate random sessions.
17 * </p>
18 *
19 * @author Steffen Herbold
20 * @version 1.0
21 */
22public class CMDgenerateRandomSequences implements Command {
23
24        /*
25         * (non-Javadoc)
26         *
27         * @see de.ugoe.cs.util.console.Command#run(java.util.List)
28         */
29        @Override
30        public void run(List<Object> parameters) {
31                String modelname;
32                String sequencesName;
33                int numSessions;
34                int minLength = 0;
35                int maxLength = Integer.MAX_VALUE;
36                long maxIter;
37                boolean validEnd = true;
38                try {
39                        modelname = (String) parameters.get(0);
40                        sequencesName = (String) parameters.get(1);
41                        numSessions = Integer.parseInt((String) parameters.get(2));
42                        minLength = Integer.parseInt((String) parameters.get(3));
43                        maxLength = Integer.parseInt((String) parameters.get(4));
44                        maxIter = numSessions * 10;
45                        if (parameters.size() >= 5) {
46                                maxIter = Long.parseLong((String) parameters.get(5));
47                        }
48                        if (parameters.size() >= 6) {
49                                validEnd = Boolean.parseBoolean((String) parameters.get(6));
50                        }
51                } catch (Exception e) {
52                        throw new IllegalArgumentException();
53                }
54
55                IStochasticProcess model = null;
56                Object dataObject = GlobalDataContainer.getInstance()
57                                .getData(modelname);
58                if (dataObject == null) {
59                        CommandHelpers.objectNotFoundMessage(modelname);
60                        return;
61                }
62                if (!(dataObject instanceof IStochasticProcess)) {
63                        CommandHelpers.objectNotType(modelname, "IStochasticProcess");
64                        return;
65                }
66                model = (IStochasticProcess) dataObject;
67
68                RandomWalkGenerator generator = new RandomWalkGenerator(numSessions,
69                                minLength, maxLength, validEnd, maxIter);
70                Collection<List<Event>> sequences = generator
71                                .generateTestSuite(model);
72
73                if (sequences.size() < numSessions) {
74                        Console.println("Only " + sequences.size()
75                                        + " unique sessions generated after " + maxIter
76                                        + " iterations");
77                }
78
79                if (GlobalDataContainer.getInstance().addData(sequencesName, sequences)) {
80                        CommandHelpers.dataOverwritten(sequencesName);
81                }
82        }
83
84        /*
85         * (non-Javadoc)
86         *
87         * @see de.ugoe.cs.util.console.Command#help()
88         */
89        @Override
90        public String help() {
91                return "generateRandomSequenecs <modelname> <sequencesName> <numSequences> <minlength> <maxlength> {<maxIter>} {<validEnd>}";
92        }
93
94}
Note: See TracBrowser for help on using the repository browser.