View Javadoc

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          // Get the username, and build a DefaultUser with it.
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  }