1 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 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 { 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 { 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 { 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 |