KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > james > client > UserManagerAdminClient


1 /***********************************************************************
2  * Copyright (c) 2000-2004 The Apache Software Foundation. *
3  * All rights reserved. *
4  * ------------------------------------------------------------------- *
5  * Licensed under the Apache License, Version 2.0 (the "License"); you *
6  * may not use this file except in compliance with the License. You *
7  * may obtain a copy of the License at: *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or *
14  * implied. See the License for the specific language governing *
15  * permissions and limitations under the License. *
16  ***********************************************************************/

17
18 package org.apache.james.client;
19
20 import java.io.*;
21 import java.util.HashMap JavaDoc;
22 import java.util.ArrayList JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.StringTokenizer JavaDoc;
25 import java.rmi.Naming JavaDoc;
26 import java.rmi.RemoteException JavaDoc;
27 import org.apache.james.remotemanager.UserManager;
28 import org.apache.james.remotemanager.UserManagerAdmin;
29
30
31 /**
32  * This class demonstrate how to use the remote user manager.
33  *
34  */

35 public class UserManagerAdminClient {
36
37     private UserManager userManager;
38
39
40     public UserManagerAdminClient() {
41     }
42
43     private void print(String JavaDoc text) {
44         System.out.print(text);
45     }
46
47     private void println(String JavaDoc text) {
48         print(text + "\n");
49     }
50
51     
52     public void execute(String JavaDoc rmiURL)
53             throws Exception JavaDoc {
54         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
55         String JavaDoc login = null;
56         String JavaDoc password = null;
57         
58         println("JAMES Remote UserManager Administration Tool");
59         println("--------------------------------------------\n");
60         println("Please enter your login and password");
61         print("Login : ");
62         login = in.readLine();
63         print("Password: ");
64         password = in.readLine();
65
66         UserManagerAdmin uma = (UserManagerAdmin)Naming.lookup(rmiURL);
67         while ((userManager = uma.login(login, password)) == null) {
68             println("login failed!\n");
69             print("Login : ");
70             login = in.readLine();
71             print("Password: ");
72             password = in.readLine();
73         }
74
75         println("Welcome " + login + "! HELP for a list of commands");
76         print("> ");
77         while (parseCommand(in.readLine())) {
78             print("\n> ");
79         }
80         
81         println("\nGoodbye...");
82     }
83
84     private boolean parseCommand(String JavaDoc commandLine) {
85         if ((commandLine == null) || (commandLine.equals(""))) {
86             return true;
87         }
88         StringTokenizer JavaDoc commandLineTokenizer = new StringTokenizer JavaDoc(commandLine.trim(), " ");
89         int argumentCount = commandLineTokenizer.countTokens();
90         if (argumentCount < 1) {
91             return true;
92         }
93         String JavaDoc command = commandLineTokenizer.nextToken();
94         String JavaDoc[] arguments = null;
95         arguments = new String JavaDoc[argumentCount - 1];
96         int i = 0;
97         while (commandLineTokenizer.hasMoreTokens()) {
98             arguments[i] = commandLineTokenizer.nextToken();
99             i++;
100         }
101
102         try {
103             if (command.equalsIgnoreCase("quit") ||
104                     command.equalsIgnoreCase("exit")) {
105                 return false;
106             } else if (command.equalsIgnoreCase("help")) {
107                 help();
108             } else if (command.equalsIgnoreCase("list")) {
109                 listRepositories(arguments);
110             } else if (command.equalsIgnoreCase("select")) {
111                 selectRepository(arguments);
112             } else if (command.equalsIgnoreCase("adduser")) {
113                 addUser(arguments);
114             } else if (command.equalsIgnoreCase("deleteuser")) {
115                 deleteUser(arguments);
116             } else if (command.equalsIgnoreCase("verifyuser")) {
117                 verifyUser(arguments);
118             } else if (command.equalsIgnoreCase("listusers")) {
119                 listUsers();
120             } else if (command.equalsIgnoreCase("countusers")) {
121                 countUsers();
122             } else if (command.equalsIgnoreCase("setpassword")) {
123                 setPassword(arguments);
124             } else if (command.equalsIgnoreCase("setalias")) {
125                 setAlias(arguments);
126             } else if (command.equalsIgnoreCase("unsetalias")) {
127                 unsetAlias(arguments);
128             } else if (command.equalsIgnoreCase("checkalias")) {
129                 checkAlias(arguments);
130             } else if (command.equalsIgnoreCase("setforward")) {
131                 setForward(arguments);
132             } else if (command.equalsIgnoreCase("unsetforward")) {
133                 unsetForward(arguments);
134             } else if (command.equalsIgnoreCase("checkforward")) {
135                 checkForward(arguments);
136             } else {
137                 println("Unknown command!");
138             }
139         } catch (RemoteException JavaDoc re) {
140             println(">EXCEPTION: " + re.getMessage());
141         }
142         return true;
143     }
144
145     
146     private void help() {
147         println("Currently implemented commmands:");
148         println("help display this help");
149         println("list list all repositories");
150         println("select [name] select repository");
151         println("adduser [username] [password] add a new user");
152         println("deleteuser [username] delete existing user");
153         println("verifyuser [username] verify if specified user exist");
154         println("listusers display existing userss");
155         println("countusers display number of existing users");
156         println("setpassword [username] [newpassword] set new password for existing user");
157         println("setalias [username] [alias] set alias for existing user");
158         println("unsetalias [username] [alias] unset alias for existing user");
159         println("checkalias [username] check if alias is set for existing user");
160         println("setforward [username] [forward] set forward for existing user");
161         println("unsetforward [username] [forward] unset forward for existing user");
162         println("checkforward [username] check if forward is set for existing user");
163         println("quit|exit quit Administration Tool");
164     }
165
166
167     private void listRepositories(String JavaDoc[] args)
168             throws RemoteException JavaDoc {
169         ArrayList JavaDoc list = userManager.getRepositoryNames();
170         Iterator JavaDoc iterator = list.iterator();
171         println("Repositories:");
172         while (iterator.hasNext()) {
173             println("-> " + (String JavaDoc)iterator.next());
174         }
175     }
176
177     private void selectRepository(String JavaDoc[] args)
178             throws RemoteException JavaDoc {
179         if (args.length != 1) {
180             println("usage: select [name]");
181             return;
182         }
183
184         String JavaDoc name = args[0];
185         if (userManager.setRepository(name)) {
186             println("select new repository [" + name + "]");
187         } else {
188             println("unknown repository!");
189         }
190     }
191
192     private void addUser(String JavaDoc[] args)
193             throws RemoteException JavaDoc {
194         if (args.length != 2) {
195             println("usage: adduser [username] [password]");
196             return;
197         }
198         String JavaDoc username = args[0];
199         String JavaDoc password = args[1];
200         if (userManager.verifyUser(username)) {
201             println("User " + username + " already exist!");
202         } else {
203             if (userManager.addUser(username, password)) {
204                 println("User " + username + " added.");
205             } else {
206                 println("Error adding user " + username);
207             }
208         }
209     }
210
211     private void deleteUser(String JavaDoc[] args)
212             throws RemoteException JavaDoc {
213         if (args.length != 1) {
214             println("usage: deleteuser [username]");
215             return;
216         }
217         String JavaDoc username = args[0];
218         if (userManager.deleteUser(username)) {
219             println("User " + username + " deleted.");
220         } else {
221             println("Failed to delete User " + username);
222         }
223     }
224
225     private void verifyUser(String JavaDoc[] args)
226             throws RemoteException JavaDoc {
227         if (args.length != 1) {
228             println("usage: verifyuser [username]");
229             return;
230         }
231         String JavaDoc username = args[0];
232         if (userManager.verifyUser(username)) {
233             println("User " + username + " exist.");
234         } else {
235             println("User " + username + " does not exist.");
236         }
237     }
238
239     private void listUsers()
240             throws RemoteException JavaDoc {
241         countUsers();
242         ArrayList JavaDoc list = userManager.getUserList();
243         Iterator JavaDoc iterator = list.iterator();
244         while (iterator.hasNext()) {
245             println("User: " + (String JavaDoc)iterator.next());
246         }
247     }
248
249     private void countUsers()
250             throws RemoteException JavaDoc {
251         println("Existing users: " + userManager.getCountUsers());
252     }
253
254     private void setPassword(String JavaDoc[] args)
255             throws RemoteException JavaDoc {
256         if (args.length != 2) {
257             println("usage: setpassword [username] [newpassword]");
258             return;
259         }
260         String JavaDoc username = args[0];
261         String JavaDoc password = args[1];
262         if (userManager.setPassword(username, password)) {
263             println("Password for user " + username + " reset");
264         } else {
265             println("Error resetting password for user " + username);
266         }
267     }
268
269     private void setAlias(String JavaDoc[] args)
270             throws RemoteException JavaDoc {
271         if (args.length != 2) {
272             println("usage: setalias [username] [alias]");
273             return;
274         }
275         String JavaDoc username = args[0];
276         String JavaDoc alias = args[1];
277         if (userManager.setAlias(username, alias)) {
278             println("Alias for user " + username + " set to: " + alias);
279         } else {
280             println("Error setting alias " + alias + " for user " + username);
281         }
282     }
283
284     private void unsetAlias(String JavaDoc[] args)
285             throws RemoteException JavaDoc {
286         if (args.length != 1) {
287             println("usage: unsetalias [username]");
288             return;
289         }
290         String JavaDoc username = args[0];
291         if (userManager.unsetAlias(username)) {
292             println("Alias for user " + username + " unset!");
293         } else {
294             println("Error unset alias for user " + username);
295         }
296     }
297
298     private void checkAlias(String JavaDoc[] args)
299             throws RemoteException JavaDoc {
300         if (args.length != 1) {
301             println("usage: checkalias [username]");
302             return;
303         }
304         String JavaDoc username = args[0];
305         String JavaDoc alias = userManager.checkAlias(username);
306         if (alias != null) {
307             println("Alias for user " + username + " is set to " + alias);
308         } else {
309             println("No alias is set for user " + username);
310         }
311     }
312
313     private void setForward(String JavaDoc[] args)
314             throws RemoteException JavaDoc {
315         if (args.length != 2) {
316             println("usage: setforward [username] [forward]");
317             return;
318         }
319         String JavaDoc username = args[0];
320         String JavaDoc forward = args[1];
321         if (userManager.setForward(username, forward)) {
322             println("Forward for user " + username + " set to: " + forward);
323         } else {
324             println("Error setting forward " + forward + " for user " + username);
325         }
326     }
327
328     private void unsetForward(String JavaDoc[] args)
329             throws RemoteException JavaDoc {
330         if (args.length != 1) {
331             println("usage: unsetforward [username]");
332             return;
333         }
334         String JavaDoc username = args[0];
335         if (userManager.unsetForward(username)) {
336             println("Forward for user " + username + " unset!");
337         } else {
338             println("Error unset forward for user " + username);
339         }
340     }
341
342     private void checkForward(String JavaDoc[] args)
343             throws RemoteException JavaDoc {
344         if (args.length != 1) {
345             println("usage: checkforward [username]");
346             return;
347         }
348         String JavaDoc username = args[0];
349         String JavaDoc forward = userManager.checkForward(username);
350         if (forward != null) {
351             println("Forward for user " + username + " is set to " + forward);
352         } else {
353             println("No forward is set for user " + username);
354         }
355     }
356
357
358
359
360     public static void main(String JavaDoc[] args) {
361         try {
362             if (args.length != 1) {
363                 System.out.println("usage: UserManagerAdminClient <rmi-url>");
364                 return;
365             }
366             (new UserManagerAdminClient()).execute(args[0]);
367         } catch (Exception JavaDoc e) {
368             e.printStackTrace();
369         }
370     }
371
372 }
373
Popular Tags