]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/osgi/useradmin/UserDirectoryWorkingCopy.java
0e25bdfa12c441459e4f6bbee26353aa588ec5b2
1 package org
.argeo
.osgi
.useradmin
;
3 import java
.util
.HashMap
;
6 import javax
.naming
.directory
.Attributes
;
7 import javax
.naming
.ldap
.LdapName
;
8 import javax
.transaction
.xa
.XAResource
;
10 /** {@link XAResource} for a user directory being edited. */
11 class UserDirectoryWorkingCopy
{
12 // private final static Log log = LogFactory
13 // .getLog(UserDirectoryWorkingCopy.class);
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
>();
23 modifiedUsers
.clear();
29 public boolean noModifications() {
30 return newUsers
.size() == 0 && modifiedUsers
.size() == 0
31 && deletedUsers
.size() == 0;
34 public Attributes
getAttributes(LdapName dn
) {
35 if (modifiedUsers
.containsKey(dn
))
36 return modifiedUsers
.get(dn
);
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());
47 public Map
<LdapName
, DirectoryUser
> getNewUsers() {
51 public Map
<LdapName
, DirectoryUser
> getDeletedUsers() {
55 public Map
<LdapName
, Attributes
> getModifiedUsers() {