1 5 package org.exoplatform.services.organization.hibernate; 6 7 import java.util.ArrayList ; 8 import java.util.List ; 9 10 import net.sf.hibernate.Session; 11 12 import org.exoplatform.commons.utils.IdentifierUtil; 13 import org.exoplatform.container.configuration.ConfigurationManager; 14 import org.exoplatform.container.configuration.ObjectParam; 15 import org.exoplatform.container.configuration.ServiceConfiguration; 16 import org.exoplatform.services.database.XResources; 17 import org.exoplatform.services.organization.OrganizationService; 18 import org.exoplatform.services.organization.User; 19 import org.exoplatform.services.organization.UserEventListener; 20 import org.exoplatform.services.organization.impl.MembershipImpl; 21 import org.picocontainer.Startable; 22 28 public class NewUserEventListener extends UserEventListener implements Startable { 29 private MembershipQueryHandler membershipQueryHandler_ ; 30 private NewUserConfig config_ ; 31 32 public NewUserEventListener(ConfigurationManager cService, 33 OrganizationService orgService, 34 MembershipQueryHandler membershipQueryHandler) throws Exception { 35 membershipQueryHandler_ = membershipQueryHandler ; 36 orgService.addUserEventListener(this) ; 37 38 ServiceConfiguration sconf = cService.getServiceConfiguration(getClass()) ; 39 if (sconf == null) return ; 40 ObjectParam param = sconf.getObjectParam("new.user.configuration") ; 41 config_ = (NewUserConfig) param.getObject() ; 42 } 43 44 public void start() { } 45 46 public void stop() { } 47 48 public void postSave(User user, boolean isNew, XResources xresources) throws Exception { 49 if(config_ == null) return ; 50 if(isNew && !config_.isIgnoreUser(user.getUserName())) { 51 Session session = (Session) xresources.getResource(Session.class) ; 52 createDefaultUserMemberships(user , session) ; 53 } 54 } 55 56 private void createDefaultUserMemberships(User user, Session session) throws Exception { 57 List groups = config_.getGroup() ; 58 if(groups.size() == 0) return ; 59 ArrayList memberships = new ArrayList () ; 60 for(int i = 0; i < groups.size(); i++) { 61 NewUserConfig.JoinGroup group = (NewUserConfig.JoinGroup) groups.get(i) ; 62 MembershipImpl m = new MembershipImpl() ; 63 m.setGroupId(group.getGroupId()) ; 64 m.setMembershipType(group.getMembership()) ; 65 m.setUserName(user.getUserName()) ; 66 m.setId(IdentifierUtil.generateUUID(m)) ; 67 memberships.add(m) ; 68 } 69 membershipQueryHandler_.createMembershipEntries(memberships, session) ; 70 } 71 } | Popular Tags |