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.userrepository;
19
20 import org.apache.james.services.User;
21
22 import java.sql.PreparedStatement;
23 import java.sql.ResultSet;
24 import java.sql.SQLException;
25
26 /***
27 * A very lightweight UserRepository, which persists a list
28 * of user names in a database. Password information is not
29 * persisted.
30 *
31 */
32 public class ListUsersJdbcRepository extends AbstractJdbcUsersRepository
33 {
34 /***
35 * Reads properties for a User from an open ResultSet.
36 *
37 * @param rsUsers A ResultSet with a User record in the current row.
38 * @return A User instance
39 * @throws SQLException
40 * if an exception occurs reading from the ResultSet
41 */
42 protected User readUserFromResultSet(ResultSet rsUsers) throws SQLException {
43
44 String username = rsUsers.getString(1);
45 DefaultUser user = new DefaultUser(username, "SHA");
46 return user;
47 }
48
49 /***
50 * Set parameters of a PreparedStatement object with
51 * property values from a User instance.
52 * @param user a User instance, which should be an implementation class which
53 * is handled by this Repostory implementation.
54 * @param userInsert a PreparedStatement initialised with SQL taken from the "insert" SQL definition.
55 * @throws SQLException
56 * if an exception occurs while setting parameter values.
57 */
58 protected void setUserForInsertStatement(User user,
59 PreparedStatement userInsert)
60 throws SQLException {
61 userInsert.setString(1, user.getUserName());
62 }
63
64 /***
65 * Set parameters of a PreparedStatement object with
66 * property values from a User instance.
67 *
68 * @param user a User instance, which should be an implementation class which
69 * is handled by this Repostory implementation.
70 * @param userUpdate a PreparedStatement initialised with SQL taken from the "update" SQL definition.
71 * @throws SQLException
72 * if an exception occurs while setting parameter values.
73 */
74 protected void setUserForUpdateStatement(User user,
75 PreparedStatement userUpdate)
76 throws SQLException {
77 throw new UnsupportedOperationException("Can't update a List User - " +
78 "only has a single attribute.");
79 }
80
81 /***
82 * @see org.apache.james.services.UsersRepository#addUser(java.lang.String, java.lang.String)
83 */
84 public boolean addUser(String username, String password) {
85 User newbie = new DefaultUser(username, "SHA");
86 newbie.setPassword(password);
87 return addUser(newbie);
88 }
89
90
91 }