-MailReader Object Model- [(Associations)] ---- [UserDatabase] owns [User]s ---- [User] owns [Subscription]s === [Subscription (interface)] ---- + AutoConnect: Boolean + Host: String (readonly) + Type: String + Username: String + Password: String + User: User (readonly) ---- ==== [User (interface)] ---- + Username: String (readonly) + Password: String + FullName: String + FromAddress: String + ReplyToAddress: String + DataBase: UserDatabase + Subscription: Subscription[] ---- + CreateSubscription(Host:String): Subscription + FindSubscription(Host:String):Subscription + RemoveSubscription(Subscription:Subcription) ==== [UserDatabase (interface)] ---- ---- + Open() + Save() + Close() + CreateUser(username:String): User + FindUser(username:String): User + FindUsers(): User[] + RemoveUser(user:User) + UpdateUser(User) !NEW! ==== [MemorySubscription:Subscription] ---- - autoConnect:Boolean - host:String - type:String - username:String - password - user:User ---- + MemorySubscription(user:MemoryUser host:String) * :Subscription members * ToString:String ==== [MemoryUser:User] ---- - username:String - password:String - fullname:String - fromAddress:String - replyToAddress:String - database:MemoryDataBAse - subscriptions:HashMap ---- + MemoryUser(database:MemoryUserDatabase:* :User members database username:String) * ToString:String ==== [MemoryUserDatabase:UserDatabase] ---- - log:Log - users:HashMap - pathnameOld:String - pathnameNew:String + pathname:String ---- * :UserDatabase ==== [PlugIn (interface)] ---- ---- + Init(servlet:ActionServlet servlet config:ModuleConfig) + Destroy() ==== [MemoryDataBasePlugIn:PlugIn] ---- - database:MemoryUserDatabase - log:Log - servlet:ActionServlet + Pathname ---- * :PlugIn - CalculatePath() ==== [ObjectCreationFactory (interface)] ---- Digester:Digester ---- createObject(attributes:Attributes):Object ==== [MemorySubscriptionCreationFactory:ObjectCreationFactory] ---- + Digester:Digester ---- * :ObjectCreationFactory ==== [MemoryUserCreationFactory:ObjectCreationFactory] ---- ---- + Digester:Digester ---- * :ObjectCreationFactory + MemoryUserCreationFactory(database:MemoryUserDatabase) ====