1 /*
2 * Replica is published under the terms
3 * of the Apache Software License.
4 */
5 package replica.server.commands;
6
7 import java.util.StringTokenizer;
8
9 import replica.core.ApplicationCommand;
10 import replica.core.ApplicationMessage;
11 import replica.group.GroupManager;
12 import replica.session.Session;
13
14 /***
15 * Connects a user to the server.
16 *
17 * @author Pedro Costa
18 * @author Helder Silva
19 * @since 20/Jan/2004
20 */
21 public class ConnectCommand extends ApplicationCommand {
22
23 GroupManager groupManager;
24
25 /***
26 *
27 */
28 public ConnectCommand() {
29 super();
30 }
31
32 /* (non-Javadoc)
33 * @see replica.server.commands.ServerCommand#execute(replica.server.ServerCommandVO)
34 */
35 public Object execute(ApplicationMessage arg) {
36
37 String receivedCommand = arg.getBody().toString();
38
39 StringTokenizer tokenizer = new StringTokenizer(receivedCommand);
40
41 tokenizer.nextToken();
42
43 String connectString = tokenizer.nextToken();
44
45 if( connectString == null )
46 return "Error connecting. No connect string provided in format user[/password][@database]";
47
48 tokenizer = new StringTokenizer( connectString, "@");
49
50 if( tokenizer.countTokens() < 1 )
51 return "Error connecting. Connect string must be in format user[/password][@database]";
52
53 String userAndPassword = tokenizer.nextToken();
54
55 String database = null;
56
57 if( tokenizer.countTokens() > 0 )
58 database = tokenizer.nextToken();
59
60 tokenizer = new StringTokenizer(userAndPassword, "/");
61
62 String user = tokenizer.nextToken();
63 String password = null;
64
65 if( tokenizer.countTokens() > 0 )
66 password = tokenizer.nextToken();
67
68 Session session = getSessionManager().getSession(arg.getSessionID());
69
70 getSessionManager().login(session, user, password);
71
72 if( database != null ){
73 session.putObject("DATABASE_NAME", database);
74 arg.putHeader("DATABASE_NAME", database);
75 }
76
77 arg.putHeader("USER", user);
78 if( password != null )
79 arg.putHeader("PASSWORD", password);
80
81 // replicate the session to the group members
82 getGroupManager().sendMessage( arg);
83
84 return "Connected.";
85 }
86
87 /***
88 * @return
89 */
90 public GroupManager getGroupManager() {
91 return groupManager;
92 }
93
94 /***
95 * @param manager
96 */
97 public void setGroupManager(GroupManager manager) {
98 groupManager = manager;
99 }
100
101 }
This page was automatically generated by Maven