source: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/web/commands/CMDloadSessionsFromClickstream.java @ 232

Last change on this file since 232 was 232, checked in by sherbold, 13 years ago
  • extended de.ugoe.cs.eventbench.web.WeblogParser? with functionality to determine frequent users
  • adapted command loadSessionsFromClickstream allow optional determination of frequent users
  • Property svn:mime-type set to text/plain
File size: 3.2 KB
Line 
1package de.ugoe.cs.eventbench.web.commands;
2
3import java.io.FileNotFoundException;
4import java.io.IOException;
5import java.security.InvalidParameterException;
6import java.text.ParseException;
7import java.util.Collection;
8import java.util.List;
9
10import de.ugoe.cs.eventbench.data.GlobalDataContainer;
11import de.ugoe.cs.eventbench.web.WeblogParser;
12import de.ugoe.cs.eventbench.web.data.WebEvent;
13import de.ugoe.cs.util.console.Command;
14import de.ugoe.cs.util.console.Console;
15
16/**
17 * <p>
18 * Command to load sessions from a web log.
19 * </p>
20 *
21 * @author Steffen Herbold
22 * @version 1.0
23 */
24public class CMDloadSessionsFromClickstream implements Command {
25
26        /*
27         * (non-Javadoc)
28         *
29         * @see de.ugoe.cs.util.console.Command#run(java.util.List)
30         */
31        @Override
32        public void run(List<Object> parameters) {
33                if (parameters.size() < 1) {
34                        throw new InvalidParameterException();
35                }
36                String source = (String) parameters.get(0);
37                String sequencesName = (String) parameters.get(1);
38                String serverUrl = null;
39                int timeout = -1;
40                int minLength = -1;
41                int maxLength = -1;
42                boolean generateFrequentUsers = false;
43                int frequentUserThreshold = 20;
44                if (parameters.size() >= 3) {
45                        serverUrl = (String) parameters.get(2);
46                }
47                if (parameters.size() >= 6) {
48                        timeout = Integer.parseInt((String) parameters.get(3));
49                        minLength = Integer.parseInt((String) parameters.get(4));
50                        maxLength = Integer.parseInt((String) parameters.get(5));
51                }
52                if (parameters.size() >= 8) {
53                        generateFrequentUsers = Boolean.parseBoolean((String) parameters
54                                        .get(6));
55                        frequentUserThreshold = Integer
56                                        .parseInt((String) parameters.get(7));
57                }
58
59                WeblogParser parser = new WeblogParser();
60                if (serverUrl != null) {
61                        parser.setUrl(serverUrl);
62                }
63                if (timeout != -1) {
64                        parser.setTimeout(timeout);
65                        parser.setMinLength(minLength);
66                        parser.setMaxLength(maxLength);
67                }
68                if (generateFrequentUsers) {
69                        parser.setFrequentUserThreshold(frequentUserThreshold);
70                }
71                try {
72                        parser.parseFile(source);
73                } catch (FileNotFoundException e) {
74                        Console.println(e.getMessage());
75                } catch (IOException e) {
76                        Console.println(e.getMessage());
77                } catch (ParseException e) {
78                        Console.println("Invalid format of date stamps.");
79                        Console.println(e.getMessage());
80                }
81
82                if (GlobalDataContainer.getInstance().addData(sequencesName,
83                                parser.getSequences())) {
84                        Console.traceln("Old data \"" + sequencesName + "\" overwritten");
85                }
86                if (generateFrequentUsers) {
87                        List<String> frequentUserIDs = parser.getFrequentUsers();
88                        List<Collection<List<WebEvent>>> frequentUserSessions = parser
89                                        .getFrequentUserSequences();
90                        for (int i = 0; i < frequentUserIDs.size(); i++) {
91                                GlobalDataContainer.getInstance().addData(
92                                                sequencesName + "_" + frequentUserIDs.get(i),
93                                                frequentUserSessions.get(i));
94                        }
95                }
96        }
97
98        /*
99         * (non-Javadoc)
100         *
101         * @see de.ugoe.cs.util.console.Command#help()
102         */
103        @Override
104        public void help() {
105                Console.println("Usage: loadSessionsFromClickstream <filename> <sequencesName> {<serverUrl>} {<timeout> <minSessionLength> <maxSessionLength>} {<generateFrequentUsers> <frequentUserThreshold>}");
106        }
107
108}
Note: See TracBrowser for help on using the repository browser.