|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.avalon.framework.logger.AbstractLogEnabled org.apache.james.userrepository.AbstractUsersRepository org.apache.james.userrepository.AbstractJdbcUsersRepository
public abstract class AbstractJdbcUsersRepository
An abstract base class for creating UserRepository implementations which use a database for persistence. To implement a new UserRepository using by extending this class, you need to implement the 3 abstract methods defined below, and define the required SQL statements in an SQLResources file. The SQL statements used by this implementation are:
Required | |
select | Select all users. |
insert | Insert a user. |
update | Update a user. |
delete | Delete a user by name. |
createTable | Create the users table. | Optional |
selectByLowercaseName | Select a user by name (case-insensitive lowercase). |
Field Summary | |
---|---|
protected org.apache.avalon.framework.context.Context |
context
The Avalon context used by the instance |
protected java.util.Map |
m_sqlParameters
|
Fields inherited from interface org.apache.james.services.UsersRepository |
---|
ROLE, USER |
Constructor Summary | |
---|---|
AbstractJdbcUsersRepository()
|
Method Summary | |
---|---|
void |
configure(org.apache.avalon.framework.configuration.Configuration configuration)
Configures the UserRepository for JDBC access. |
void |
contextualize(org.apache.avalon.framework.context.Context context)
|
protected void |
doAddUser(User user)
Adds a user to the underlying Repository. |
protected void |
doRemoveUser(User user)
Removes a user from the underlying repository. |
protected void |
doUpdateUser(User user)
Updates a user record to match the supplied User. |
protected User |
getUserByName(java.lang.String name,
boolean ignoreCase)
Gets a user by name, ignoring case if specified. |
void |
initialize()
Initialises the JDBC repository. |
protected java.util.Iterator |
listAllUsers()
Returns a list populated with all of the Users in the repository. |
protected java.util.List |
listUserNames()
Produces the complete list of User names, with correct case. |
protected abstract User |
readUserFromResultSet(java.sql.ResultSet rsUsers)
Reads properties for a User from an open ResultSet. |
void |
service(org.apache.avalon.framework.service.ServiceManager componentManager)
|
protected abstract void |
setUserForInsertStatement(User user,
java.sql.PreparedStatement userInsert)
Set parameters of a PreparedStatement object with property values from a User instance. |
protected abstract void |
setUserForUpdateStatement(User user,
java.sql.PreparedStatement userUpdate)
Set parameters of a PreparedStatement object with property values from a User instance. |
Methods inherited from class org.apache.james.userrepository.AbstractUsersRepository |
---|
addUser, addUser, addUser, contains, containsCaseInsensitive, countUsers, getRealName, getUserByName, getUserByNameCaseInsensitive, list, removeUser, test, updateUser |
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled |
---|
enableLogging, getLogger, setupLogger, setupLogger, setupLogger |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected org.apache.avalon.framework.context.Context context
protected java.util.Map m_sqlParameters
Constructor Detail |
---|
public AbstractJdbcUsersRepository()
Method Detail |
---|
public void contextualize(org.apache.avalon.framework.context.Context context) throws org.apache.avalon.framework.context.ContextException
contextualize
in interface org.apache.avalon.framework.context.Contextualizable
org.apache.avalon.framework.context.ContextException
Contextualizable.contextualize(Context)
public void service(org.apache.avalon.framework.service.ServiceManager componentManager) throws org.apache.avalon.framework.service.ServiceException
service
in interface org.apache.avalon.framework.service.Serviceable
org.apache.avalon.framework.service.ServiceException
org.apache.avalon.framework.service.Serviceable#compose(ServiceManager)
public void configure(org.apache.avalon.framework.configuration.Configuration configuration) throws org.apache.avalon.framework.configuration.ConfigurationException
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository"> <!-- Name of the datasource to use --> <data-source>MailDb</data-source> <!-- File to load the SQL definitions from --> <sqlFile>dist/conf/sqlResources.xml</sqlFile> <!-- replacement parameters for the sql file --> <sqlParameters table="JamesUsers"/> </repository>
configure
in interface org.apache.avalon.framework.configuration.Configurable
org.apache.avalon.framework.configuration.ConfigurationException
public void initialize() throws java.lang.Exception
Initialises the JDBC repository.
1) Tests the connection to the database.
2) Loads SQL strings from the SQL definition file, choosing the appropriate SQL for this connection, and performing parameter substitution,
3) Initialises the database with the required tables, if necessary.
initialize
in interface org.apache.avalon.framework.activity.Initializable
java.lang.Exception
- if an error occursprotected java.util.List listUserNames()
listUserNames
in class AbstractUsersRepository
List
of String
s representing
user names.protected java.util.Iterator listAllUsers()
listAllUsers
in class AbstractUsersRepository
Iterator
of JamesUser
s.protected void doAddUser(User user)
doAddUser
in class AbstractUsersRepository
user
- the user to be addedprotected void doRemoveUser(User user)
doRemoveUser
in class AbstractUsersRepository
user
- the user to be removedprotected void doUpdateUser(User user)
doUpdateUser
in class AbstractUsersRepository
user
- the updated user recordprotected User getUserByName(java.lang.String name, boolean ignoreCase)
getUserByName
in class AbstractUsersRepository
name
- the name of the user being retrievedignoreCase
- whether the name is regarded as case-insensitive
protected abstract User readUserFromResultSet(java.sql.ResultSet rsUsers) throws java.sql.SQLException
rsUsers
- A ResultSet with a User record in the current row.
java.sql.SQLException
- if an exception occurs reading from the ResultSetprotected abstract void setUserForInsertStatement(User user, java.sql.PreparedStatement userInsert) throws java.sql.SQLException
user
- a User instance, which should be an implementation class which
is handled by this Repostory implementation.userInsert
- a PreparedStatement initialised with SQL taken from the "insert" SQL definition.
java.sql.SQLException
- if an exception occurs while setting parameter values.protected abstract void setUserForUpdateStatement(User user, java.sql.PreparedStatement userUpdate) throws java.sql.SQLException
user
- a User instance, which should be an implementation class which
is handled by this Repostory implementation.userUpdate
- a PreparedStatement initialised with SQL taken from the "update" SQL definition.
java.sql.SQLException
- if an exception occurs while setting parameter values.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |