KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > organization > ldap > MembershipTypeLDAPHandler


1 /**
2  * Copyright 2001-2004 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.organization.ldap;
6
7
8
9 import java.util.Collection JavaDoc;
10 import java.util.Date JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.List JavaDoc;
13 import java.util.Vector JavaDoc;
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 /**
32  * Created by the eXo platform team
33  * User: Daniel Summer
34  * Date: 28 august 2004
35  *
36  */

37 public class MembershipTypeLDAPHandler extends BaseLDAPHandler {
38     private final String JavaDoc BASEURL = OrganizationLDAPConfig.BASE_URL;
39     private final String JavaDoc PORTALURL = OrganizationLDAPConfig.PORTAL_URL;
40     private final String JavaDoc ROLESURL = OrganizationLDAPConfig.ROLES_URL;
41     private final String JavaDoc USERSURL = OrganizationLDAPConfig.USERS_URL;
42     private final String JavaDoc 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 JavaDoc {
56         LDAPService service = null;
57         Session session = null;
58         try {
59             service = serviceContainer_.createLDAPService();
60             session = hService_.openSession();
61             Date JavaDoc now = new Date JavaDoc();
62             mt.setCreatedDate(now);
63             mt.setModifiedDate(now);
64             String JavaDoc ENTRYDN = "uid=" + mt.getName() + "," + MEMBERSHIPSURL;
65
66             LDAPAttributeSet attrs = new LDAPAttributeSet();
67             String JavaDoc 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 JavaDoc {
86         LDAPService service = null;
87
88         try {
89             service = serviceContainer_.createLDAPService();
90
91             Date JavaDoc now = new Date JavaDoc();
92             mt.setModifiedDate(now);
93             String JavaDoc 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 JavaDoc name) throws Exception JavaDoc {
111         LDAPService service = null;
112         try {
113             service = serviceContainer_.createLDAPService();
114             List JavaDoc l = null;
115             String JavaDoc ENTRYDN = "uid=" + name + "," + MEMBERSHIPSURL;
116             String JavaDoc MY_FILTER = "uid=" + name;
117             String JavaDoc 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 JavaDoc(getutil("createddate", attrs)));
138             membershipTypeImpl.setModifiedDate(
139                 new Date JavaDoc(getutil("modifieddate", attrs)));
140             return membershipTypeImpl;
141         } finally {
142             serviceContainer_.closeLDAPService(service);
143         }
144     }
145
146     public MembershipType removeMembershipType(String JavaDoc name) throws Exception JavaDoc {
147         LDAPService service = null;
148         MembershipType m = null;
149         try {
150             service = serviceContainer_.createLDAPService();
151             String JavaDoc 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 JavaDoc(getutil("createddate", attrs)));
158             m.setModifiedDate(new Date JavaDoc(getutil("modifieddate", attrs)));
159             service.delete(ENTRYDN);
160
161             //delete cascade
162
String JavaDoc MY_FILTER = "membership=*";
163             String JavaDoc 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 JavaDoc memberships =
176                     getutil("membership", entry.getAttributeSet(), false);
177                 for (Iterator JavaDoc i = memberships.iterator(); i.hasNext();) {
178                     String JavaDoc s = (String JavaDoc) i.next();
179                     String JavaDoc[] 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 JavaDoc name,
199         Session session,
200         LDAPService service)
201         throws Exception JavaDoc {
202
203         String JavaDoc ENTRYDN =
204             "uid=" + name + "," + OrganizationLDAPConfig.MEMBERSHIPS_URL;
205         service.delete(ENTRYDN);
206
207     }
208
209     public Collection JavaDoc findMembershipTypes() throws Exception JavaDoc {
210         Collection JavaDoc memberships = null;
211         LDAPService service = null;
212
213         try {
214             service = serviceContainer_.createLDAPService();
215             String JavaDoc 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 JavaDoc(getutil("createddate", attrs)));
232                 m.setModifiedDate(new Date JavaDoc(getutil("modifieddate", attrs)));
233                 memberships.add(m);
234             }
235         } finally {
236             serviceContainer_.closeLDAPService(service);
237         }
238
239         return memberships;
240     }
241 }
Popular Tags