]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.enterprise/src/org/argeo/osgi/useradmin/UserDirectoryWorkingCopy.java
Change the approach for releases
[lgpl/argeo-commons.git] / org.argeo.enterprise / src / org / argeo / osgi / useradmin / UserDirectoryWorkingCopy.java
1 package org.argeo.osgi.useradmin;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import javax.naming.directory.Attributes;
7 import javax.naming.ldap.LdapName;
8 import javax.transaction.xa.XAResource;
9
10 /** {@link XAResource} for a user directory being edited. */
11 class UserDirectoryWorkingCopy {
12 // private final static Log log = LogFactory
13 // .getLog(UserDirectoryWorkingCopy.class);
14
15 private Map<LdapName, DirectoryUser> newUsers = new HashMap<LdapName, DirectoryUser>();
16 private Map<LdapName, Attributes> modifiedUsers = new HashMap<LdapName, Attributes>();
17 private Map<LdapName, DirectoryUser> deletedUsers = new HashMap<LdapName, DirectoryUser>();
18
19 void cleanUp() {
20 // clean collections
21 newUsers.clear();
22 newUsers = null;
23 modifiedUsers.clear();
24 modifiedUsers = null;
25 deletedUsers.clear();
26 deletedUsers = null;
27 }
28
29 public boolean noModifications() {
30 return newUsers.size() == 0 && modifiedUsers.size() == 0
31 && deletedUsers.size() == 0;
32 }
33
34 public Attributes getAttributes(LdapName dn) {
35 if (modifiedUsers.containsKey(dn))
36 return modifiedUsers.get(dn);
37 return null;
38 }
39
40 public void startEditing(DirectoryUser user) {
41 LdapName dn = user.getDn();
42 if (modifiedUsers.containsKey(dn))
43 throw new UserDirectoryException("Already editing " + dn);
44 modifiedUsers.put(dn, (Attributes) user.getAttributes().clone());
45 }
46
47 public Map<LdapName, DirectoryUser> getNewUsers() {
48 return newUsers;
49 }
50
51 public Map<LdapName, DirectoryUser> getDeletedUsers() {
52 return deletedUsers;
53 }
54
55 public Map<LdapName, Attributes> getModifiedUsers() {
56 return modifiedUsers;
57 }
58 }