1 package de.webman.sync.ldap.worker; 2 3 import de.webman.sync.Worker; 4 import de.webman.sync.ACLAdaptor; 5 import de.webman.sync.SyncException; 6 import de.webman.sync.ldap.LDAPAdaptor; 7 import java.util.List ; 8 import java.util.Iterator ; 9 import java.util.Enumeration ; 10 import java.util.HashSet ; 11 import org.apache.log4j.Category; 12 import de.webman.acl.UserFactory; 13 import com.teamkonzept.lib.TKException; 14 import com.teamkonzept.lib.TKVector; 15 import de.webman.acl.Login; 16 import de.webman.acl.LoginFactory; 17 18 26 public class RemoveUnknownUsers 27 implements Worker 28 { 29 30 33 public static Category cat = Category.getInstance(RemoveUnknownUsers.class); 34 35 40 public void run(ACLAdaptor adaptor) 41 throws SyncException 42 { 43 cat.debug("synchronize for removed users"); 44 45 List ldap_users = adaptor.getAllUsers(); 46 HashSet ldusers = new HashSet (ldap_users.size()); 47 48 for (Iterator it = ldap_users.iterator(); it.hasNext(); ) { 49 de.webman.sync.User ldu = (de.webman.sync.User)it.next(); 50 51 ldusers.add(ldu.getWebmanName()); 52 } 53 54 int users_to_remove = 0; int removed_users = 0; int ignored_users = 0; TKVector webman_users = null; 58 59 60 try { 61 webman_users = UserFactory.getInstance().getUsers(); 62 63 66 for (Enumeration en = webman_users.elements(); en.hasMoreElements(); ) { 67 de.webman.acl.User wmu = (de.webman.acl.User)en.nextElement(); 68 69 if (ldusers.contains(wmu.getLogin())) 70 cat.debug("webman user found in ldap"); 71 else { 72 users_to_remove ++; 73 74 75 if ((adaptor instanceof LDAPAdaptor) && 76 ((LDAPAdaptor)adaptor).ignoreUsers().contains(wmu.getLogin())) { 77 ignored_users ++; 78 } 79 else if (removeUser(wmu)) 80 removed_users ++; 81 } 82 } 83 } 84 catch (TKException te) { 85 throw new SyncException(te); 86 } 87 88 89 90 cat.info("synchronize for removed users successfully; STATISTICS:\n" + 91 ldap_users.size() + " found in LDAP system,\n" + 92 webman_users.size() + " found in webman,\n" + 93 users_to_remove + " to be removed,\n" + 94 removed_users + " removed successfully\n" + 95 ignored_users + " users ignored"); 96 } 97 98 99 104 private boolean removeUser(de.webman.acl.User user) { 105 cat.info ("REMOVE USER: '" + user.getLogin() + "'"); 106 try { 107 Login l = LoginFactory.getInstance().getLogin(user.getLogin()); 108 if (l != null) { 109 LoginFactory.getInstance().deleteLogin(l); 110 return true; 111 } 112 } 113 catch (TKException tke) { 114 cat.error("can't remove user: '" + user.getLogin() + "' (" + tke + ")"); 115 } 116 return false; 117 } 118 } 119 | Popular Tags |