]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/osgi/useradmin/UserDirectoryWorkingCopy.java
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 && deletedUsers
.size() == 0;
33 public Attributes
getAttributes(LdapName dn
) {
34 if (modifiedUsers
.containsKey(dn
))
35 return modifiedUsers
.get(dn
);
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());
46 public Map
<LdapName
, DirectoryUser
> getNewUsers() {
50 public Map
<LdapName
, DirectoryUser
> getDeletedUsers() {
54 public Map
<LdapName
, Attributes
> getModifiedUsers() {