001: /*
002: * $Id: User.java 471754 2006-11-06 14:55:09Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: package org.apache.struts.apps.mailreader.dao;
023:
024: /**
025: * <p>A <strong>User</strong> which is stored, along with his or her
026: * associated {@link Subscription}s, in a {@link UserDatabase}.</p>
027: *
028: * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
029: * @since Struts 1.1
030: */
031:
032: public interface User {
033:
034: // ------------------------------------------------------------- Properties
035:
036: /**
037: * Return the {@link UserDatabase} with which we are associated.
038: */
039: public UserDatabase getDatabase();
040:
041: /**
042: * Return the from address.
043: */
044: public String getFromAddress();
045:
046: /**
047: * Set the from address.
048: *
049: * @param fromAddress The new from address
050: */
051: public void setFromAddress(String fromAddress);
052:
053: /**
054: * Return the full name.
055: */
056: public String getFullName();
057:
058: /**
059: * Set the full name.
060: *
061: * @param fullName The new full name
062: */
063: public void setFullName(String fullName);
064:
065: /**
066: * Return the password.
067: */
068: public String getPassword();
069:
070: /**
071: * Set the password.
072: *
073: * @param password The new password
074: */
075: public void setPassword(String password);
076:
077: /**
078: * Return the reply-to address.
079: */
080: public String getReplyToAddress();
081:
082: /**
083: * Set the reply-to address.
084: *
085: * @param replyToAddress The new reply-to address
086: */
087: public void setReplyToAddress(String replyToAddress);
088:
089: /**
090: * Find and return all {@link Subscription}s associated with this user.
091: * If there are none, a zero-length array is returned.
092: */
093: public Subscription[] getSubscriptions();
094:
095: /**
096: * Return the username.
097: */
098: public String getUsername();
099:
100: // --------------------------------------------------------- Public Methods
101:
102: /**
103: * Create and return a new {@link Subscription} associated with this
104: * User, for the specified host name.
105: *
106: * @param host Host name for which to create a subscription
107: *
108: * @exception IllegalArgumentException if the host name is not unique
109: * for this user
110: */
111: public Subscription createSubscription(String host);
112:
113: /**
114: * Find and return the {@link Subscription} associated with the specified
115: * host. If none is found, return <code>null</code>.
116: *
117: * @param host Host name to look up
118: */
119: public Subscription findSubscription(String host);
120:
121: /**
122: * Remove the specified {@link Subscription} from being associated
123: * with this User.
124: *
125: * @param subscription Subscription to be removed
126: *
127: * @exception IllegalArgumentException if the specified subscription is not
128: * associated with this User
129: */
130: public void removeSubscription(Subscription subscription);
131:
132: }
|