01: /*
02: * $Id: UserDatabase.java 471754 2006-11-06 14:55:09Z husted $
03: *
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "License"); you may not use this file except in compliance
10: * with the License. You may obtain a copy of the License at
11: *
12: * http://www.apache.org/licenses/LICENSE-2.0
13: *
14: * Unless required by applicable law or agreed to in writing,
15: * software distributed under the License is distributed on an
16: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17: * KIND, either express or implied. See the License for the
18: * specific language governing permissions and limitations
19: * under the License.
20: */
21:
22: package org.apache.struts.webapp.example2;
23:
24: /**
25: * <p>A <strong>Data Access Object</strong> (DAO) interface describing
26: * the available operations for retrieving and storing {@link User}s
27: * (and their associated {@link Subscription}s) in some persistence layer
28: * whose characteristics are not specified here. One or more implementations
29: * will be created to perform the actual I/O that is required.</p>
30: *
31: * @author Craig R. McClanahan
32: * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
33: * @since Struts 1.1
34: */
35:
36: public interface UserDatabase {
37:
38: // --------------------------------------------------------- Public Methods
39:
40: /**
41: * <p>Create and return a new {@link User} defined in this user database.
42: * </p>
43: *
44: * @param username Username of the new user
45: *
46: * @exception IllegalArgumentExceptionif the specified username
47: * is not unique
48: */
49: public User createUser(String username);
50:
51: /**
52: * <p>Finalize access to the underlying persistence layer.</p>
53: *
54: * @exception Exception if a database access error occurs
55: */
56: public void close() throws Exception;
57:
58: /**
59: * <p>Return the existing {@link User} with the specified username,
60: * if any; otherwise return <code>null</code>.</p>
61: *
62: * @param username Username of the user to retrieve
63: */
64: public User findUser(String username);
65:
66: /**
67: * <p>Return the set of {@link User}s defined in this user database.</p>
68: */
69: public User[] findUsers();
70:
71: /**
72: * <p>Initiate access to the underlying persistence layer.</p>
73: *
74: * @exception Exception if a database access error occurs
75: */
76: public void open() throws Exception;
77:
78: /**
79: * Remove the specified {@link User} from this database.
80: *
81: * @param user User to be removed
82: *
83: * @exception IllegalArgumentException if the specified user is not
84: * associated with this database
85: */
86: public void removeUser(User user);
87:
88: /**
89: * <p>Save any pending changes to the underlying persistence layer.</p>
90: *
91: * @exception Exception if a database access error occurs
92: */
93: public void save() throws Exception;
94:
95: }
|