]> git.argeo.org Git - lgpl/argeo-commons.git/blob - useradmin/UserDirectoryWorkingCopy.java
Prepare next development cycle
[lgpl/argeo-commons.git] / 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 && deletedUsers.size() == 0;
31 }
32
33 public Attributes getAttributes(LdapName dn) {
34 if (modifiedUsers.containsKey(dn))
35 return modifiedUsers.get(dn);
36 return null;
37 }
38
39 public void startEditing(DirectoryUser user) {
40 LdapName dn = user.getDn();
41 if (modifiedUsers.containsKey(dn))
42 throw new IllegalStateException("Already editing " + dn);
43 modifiedUsers.put(dn, (Attributes) user.getAttributes().clone());
44 }
45
46 public Map<LdapName, DirectoryUser> getNewUsers() {
47 return newUsers;
48 }
49
50 public Map<LdapName, DirectoryUser> getDeletedUsers() {
51 return deletedUsers;
52 }
53
54 public Map<LdapName, Attributes> getModifiedUsers() {
55 return modifiedUsers;
56 }
57 }