1 5 package org.exoplatform.services.organization.ldap; 6 7 8 9 import java.util.Collection ; 10 import java.util.Date ; 11 import java.util.Iterator ; 12 import java.util.List ; 13 import java.util.Vector ; 14 15 import net.sf.hibernate.Session; 16 import netscape.ldap.LDAPAttribute; 17 import netscape.ldap.LDAPAttributeSet; 18 import netscape.ldap.LDAPConnection; 19 import netscape.ldap.LDAPEntry; 20 import netscape.ldap.LDAPModification; 21 import netscape.ldap.LDAPModificationSet; 22 import netscape.ldap.LDAPSearchResults; 23 24 import org.apache.commons.lang.StringUtils; 25 import org.exoplatform.services.database.HibernateService; 26 import org.exoplatform.services.ldap.LDAPService; 27 import org.exoplatform.services.ldap.LDAPServiceContainer; 28 import org.exoplatform.services.organization.MembershipType; 29 import org.exoplatform.services.organization.impl.MembershipTypeImpl; 30 31 37 public class MembershipTypeLDAPHandler extends BaseLDAPHandler { 38 private final String BASEURL = OrganizationLDAPConfig.BASE_URL; 39 private final String PORTALURL = OrganizationLDAPConfig.PORTAL_URL; 40 private final String ROLESURL = OrganizationLDAPConfig.ROLES_URL; 41 private final String USERSURL = OrganizationLDAPConfig.USERS_URL; 42 private final String MEMBERSHIPSURL = 43 OrganizationLDAPConfig.MEMBERSHIPS_URL; 44 private LDAPServiceContainer serviceContainer_; 45 private HibernateService hService_; 46 47 public MembershipTypeLDAPHandler( 48 LDAPServiceContainer serviceContainer, 49 HibernateService hService) { 50 serviceContainer_ = serviceContainer; 51 hService_ = hService; 52 } 53 54 public MembershipType createMembershipType(MembershipType mt) 55 throws Exception { 56 LDAPService service = null; 57 Session session = null; 58 try { 59 service = serviceContainer_.createLDAPService(); 60 session = hService_.openSession(); 61 Date now = new Date (); 62 mt.setCreatedDate(now); 63 mt.setModifiedDate(now); 64 String ENTRYDN = "uid=" + mt.getName() + "," + MEMBERSHIPSURL; 65 66 LDAPAttributeSet attrs = new LDAPAttributeSet(); 67 String objectclass_values[] = { "exomembershiptype" }; 68 setutil("objectclass", objectclass_values, attrs, false); 69 setutil("uid", mt.getName(), attrs); 70 setutil("descriptions", mt.getDescription(), attrs); 71 setutil("createddate", mt.getCreatedDate().toGMTString(), attrs); 72 setutil("modifieddate", mt.getModifiedDate().toGMTString(), attrs); 73 74 LDAPEntry myEntry = new LDAPEntry(ENTRYDN, attrs); 75 service.add(myEntry); 76 session.flush(); 77 } finally { 78 serviceContainer_.closeLDAPService(service); 79 hService_.closeSession(session); 80 } 81 return mt; 82 } 83 84 public MembershipType saveMembershipType(MembershipType mt) 85 throws Exception { 86 LDAPService service = null; 87 88 try { 89 service = serviceContainer_.createLDAPService(); 90 91 Date now = new Date (); 92 mt.setModifiedDate(now); 93 String ENTRYDN = "uid=" + mt.getName() + "," + MEMBERSHIPSURL; 94 95 LDAPModificationSet mods = new LDAPModificationSet(); 96 mods.add( 97 LDAPModification.REPLACE, 98 new LDAPAttribute("descriptions", mt.getDescription())); 99 mods.add( 100 LDAPModification.REPLACE, 101 new LDAPAttribute("modifieddate", now.toGMTString())); 102 service.modify(ENTRYDN, mods); 103 104 } finally { 105 serviceContainer_.closeLDAPService(service); 106 } 107 return mt; 108 } 109 110 public MembershipType findMembershipType(String name) throws Exception { 111 LDAPService service = null; 112 try { 113 service = serviceContainer_.createLDAPService(); 114 List l = null; 115 String ENTRYDN = "uid=" + name + "," + MEMBERSHIPSURL; 116 String MY_FILTER = "uid=" + name; 117 String MY_SEARCHBASE = MEMBERSHIPSURL; 118 119 LDAPSearchResults res = 120 service.search( 121 MY_SEARCHBASE, 122 LDAPConnection.SCOPE_SUB, 123 MY_FILTER, 124 null, 125 false); 126 if (!res.hasMoreElements()) { 127 return null; 128 } 129 LDAPEntry findEntry = service.read(ENTRYDN); 130 131 LDAPAttributeSet attrs = findEntry.getAttributeSet(); 132 133 MembershipTypeImpl membershipTypeImpl = new MembershipTypeImpl(); 134 membershipTypeImpl.setName(getutil("uid", attrs)); 135 membershipTypeImpl.setDescription(getutil("descriptions", attrs)); 136 membershipTypeImpl.setCreatedDate( 137 new Date (getutil("createddate", attrs))); 138 membershipTypeImpl.setModifiedDate( 139 new Date (getutil("modifieddate", attrs))); 140 return membershipTypeImpl; 141 } finally { 142 serviceContainer_.closeLDAPService(service); 143 } 144 } 145 146 public MembershipType removeMembershipType(String name) throws Exception { 147 LDAPService service = null; 148 MembershipType m = null; 149 try { 150 service = serviceContainer_.createLDAPService(); 151 String ENTRYDN = "uid=" + name + "," + MEMBERSHIPSURL; 152 LDAPEntry findEntry = service.read(ENTRYDN); 153 LDAPAttributeSet attrs = findEntry.getAttributeSet(); 154 m = new MembershipTypeImpl(); 155 m.setName(getutil("uid", attrs)); 156 m.setDescription(getutil("description", attrs)); 157 m.setCreatedDate(new Date (getutil("createddate", attrs))); 158 m.setModifiedDate(new Date (getutil("modifieddate", attrs))); 159 service.delete(ENTRYDN); 160 161 String MY_FILTER = "membership=*"; 163 String MY_SEARCHBASE = USERSURL; 164 165 LDAPSearchResults res = 166 service.search( 167 MY_SEARCHBASE, 168 LDAPConnection.SCOPE_SUB, 169 MY_FILTER, 170 null, 171 false); 172 while (res.hasMoreElements()) { 173 LDAPEntry entry = res.next(); 174 175 Vector memberships = 176 getutil("membership", entry.getAttributeSet(), false); 177 for (Iterator i = memberships.iterator(); i.hasNext();) { 178 String s = (String ) i.next(); 179 String [] membership = StringUtils.split(s, ","); 180 if (membership[1].equals(name)) { 181 LDAPModificationSet mods = new LDAPModificationSet(); 182 mods.add( 183 LDAPModification.DELETE, 184 new LDAPAttribute("membership", s)); 185 service.modify(entry.getDN(), mods); 186 } 187 } 188 189 } 190 191 } finally { 192 serviceContainer_.closeLDAPService(service); 193 } 194 return m; 195 } 196 197 static void removeMembershipTypeEntry( 198 String name, 199 Session session, 200 LDAPService service) 201 throws Exception { 202 203 String ENTRYDN = 204 "uid=" + name + "," + OrganizationLDAPConfig.MEMBERSHIPS_URL; 205 service.delete(ENTRYDN); 206 207 } 208 209 public Collection findMembershipTypes() throws Exception { 210 Collection memberships = null; 211 LDAPService service = null; 212 213 try { 214 service = serviceContainer_.createLDAPService(); 215 String MY_SEARCHBASE = MEMBERSHIPSURL; 216 217 LDAPSearchResults res = 218 service.search( 219 MY_SEARCHBASE, 220 LDAPConnection.SCOPE_SUB, 221 null, 222 null, 223 false); 224 while (res.hasMoreElements()) { 225 LDAPEntry findEntry = null; 226 findEntry = res.next(); 227 LDAPAttributeSet attrs = findEntry.getAttributeSet(); 228 MembershipTypeImpl m = new MembershipTypeImpl(); 229 m.setName(getutil("uid", attrs)); 230 m.setDescription(getutil("descriptions", attrs)); 231 m.setCreatedDate(new Date (getutil("createddate", attrs))); 232 m.setModifiedDate(new Date (getutil("modifieddate", attrs))); 233 memberships.add(m); 234 } 235 } finally { 236 serviceContainer_.closeLDAPService(service); 237 } 238 239 return memberships; 240 } 241 } | Popular Tags |