KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > communication > message > impl > UserEventAccountListener


1 /***************************************************************************
2  * Copyright 2001-2003 The eXo Platform SARL All rights reserved. *
3  * Please look at license.txt in info directory for more license detail. *
4  **************************************************************************/

5 package org.exoplatform.services.communication.message.impl;
6
7 import java.util.* ;
8 import net.sf.hibernate.Session;
9 import org.exoplatform.services.communication.message.Account;
10 import org.exoplatform.services.communication.message.MessageService;
11 import org.exoplatform.services.database.XResources;
12 import org.exoplatform.services.organization.*;
13 import org.picocontainer.Startable;
14 import org.exoplatform.container.configuration.*;
15 import org.exoplatform.container.configuration.ServiceConfiguration;
16 /**
17  * Jul 20, 2004
18  * @author: Tuan Nguyen
19  * @email: tuan08@users.sourceforge.net
20  * @version: $Id: UserEventAccountListener.java,v 1.1 2004/10/30 02:24:13 tuan08 Exp $
21  */

22 public class UserEventAccountListener extends UserEventListener implements Startable {
23   private MessageServiceImpl mservice_ ;
24   private List accounts_ ;
25   
26     public UserEventAccountListener(ConfigurationManager cService,
27                                   OrganizationService orgService,
28                                   MessageServiceImpl mservice) throws Exception JavaDoc {
29     ServiceConfiguration sconf = cService.getServiceConfiguration(getClass()) ;
30     if(sconf.size() == 0) return ;
31     accounts_ = new ArrayList(5) ;
32     Iterator i = sconf.values().iterator() ;
33     while(i.hasNext()) {
34       ObjectParam param = (ObjectParam) i.next() ;
35       accounts_.add(param.getObject()) ;
36     }
37     orgService.addUserEventListener(this) ;
38     mservice_ = mservice ;
39   }
40   
41     public void postSave(User user, boolean isNew, XResources xresources) throws Exception JavaDoc {
42       Session session = (Session) xresources.getResource(Session.class) ;
43     Iterator i = accounts_.iterator() ;
44     while(i.hasNext()) {
45       AccountListenerConfig config = (AccountListenerConfig) i.next() ;
46       if(MessageService.STANDALONE_PROTOCOL.equals(config.getProtocol())) {
47         Account account = createStandaloneAccount(user, config) ;
48         mservice_.createAccount(session, account) ;
49       } else {
50         Account account = createMailAccount(user, config) ;
51         mservice_.createAccount(session, account) ;
52       }
53     }
54     }
55   
56    public void postDelete(User user, XResources xresources) throws Exception JavaDoc {
57      List accounts = mservice_.getAccounts(user.getUserName()) ;
58      for(int i = 0; i < accounts.size(); i++) {
59        Account account = (Account) accounts.get(i) ;
60        mservice_.removeAccount(account) ;
61      }
62    }
63   
64     private Account createMailAccount(User user, AccountListenerConfig config){
65       Account account = mservice_.createAccountInstance() ;
66       account.setAccountName(config.getAccountName());
67       account.setOwner(user.getUserName()) ;
68     account.setOwnerName(user.getFirstName() + " " + user.getLastName()) ;
69     account.setReplyToAddress(user.getUserName() +"@" +config.getAccountName()) ;
70       account.setProtocol(config.getProtocol());
71       account.setProperty(Account.SERVER_SETTING_HOSTNAME, config.getServer());
72       account.setProperty(Account.SERVER_SETTING_USERNAME, user.getUserName());
73       account.setProperty(Account.SERVER_SETTING_PASSWORD, user.getPassword());
74       return account;
75     }
76   
77   private Account createStandaloneAccount(User user, AccountListenerConfig config){
78     Account account = mservice_.createAccountInstance() ;
79     account.setAccountName(config.getAccountName());
80     account.setOwner(user.getUserName()) ;
81     account.setOwnerName(user.getFirstName() + " " + user.getLastName()) ;
82     account.setReplyToAddress(user.getUserName() +"#" + config.getAccountName()) ;
83     account.setProtocol(config.getProtocol());
84     return account;
85   }
86   
87   public void start() { }
88   public void stop() { }
89 }
Popular Tags