001 package users; 002 003 import java.util.*; 004 005 import users.events.*; 006 import users.swing.*; 007 008 /** 009 * Filters a UserManager's users with help of a UserFilter 010 * 011 * @see UserManager 012 * @see UserFilter 013 * 014 * @author Andreas Bartho 015 * @version 3.1 05/03/2003 016 * @since v3.1 017 */ 018 public class UserManagerFilter extends UserManager { 019 020 /** 021 * ID for serialization. 022 */ 023 private static final long serialVersionUID = 7358240746287302078L; 024 025 /** 026 * The UserManager to be filtered. 027 */ 028 UserManager m_umManager = UserManager.getGlobalUM(); 029 030 /** 031 * The filter to be applied to the UserManager. 032 */ 033 UserFilter m_ufFilter = new UserFilter() { 034 private static final long serialVersionUID = 7272361080669856514L; 035 036 public boolean match(User u) { 037 return true; 038 } 039 }; 040 041 /** 042 * Creates a new UserManagerFilter. The UserManager used is the globally set UserManager. 043 * All Users are visible, which means that the applied UserFilter returns true for every User. 044 * The UserManagerFilter created with this constructor behaves like a normal UserManager. 045 * 046 * @see UserManager#setGlobalUM 047 */ 048 public UserManagerFilter() { 049 } 050 051 /** 052 * Creates a new UserManagerFilter from a given UserManager. All Users are visible, 053 * which means that the applied UserFilter returns true for every User. 054 * 055 * @param um The UserManager to be filtered. 056 */ 057 public UserManagerFilter(UserManager um) { 058 m_umManager = um; 059 } 060 061 /** 062 * Creates a new UserManagerFilter. The UserManager used is the globally set UserManager. 063 * 064 * @param uf The UserFilter to be applied. 065 * 066 * @see UserManager#setGlobalUM 067 * 068 */ 069 public UserManagerFilter(UserFilter uf) { 070 m_ufFilter = uf; 071 } 072 073 /** 074 * Creates a new UserManagerFilter from a given UserManager and a UserFilter. 075 * 076 * @param um The UserManager to be filtered. 077 * @param uf The UserFilter to be applied. 078 */ 079 public UserManagerFilter(UserManager um, UserFilter uf) { 080 m_umManager = um; 081 m_ufFilter = uf; 082 } 083 084 /** 085 * Sets the UserFilter. A previously set UserFilter will be replaced. 086 * 087 * @param uf The new UserFilter. 088 */ 089 public void setFilter(UserFilter uf) { 090 m_ufFilter = uf; 091 } 092 093 /** 094 * Returns all users registered with this UserManagerFilter's UserManager that match the filter. 095 */ 096 public Collection<User> getUsers() { 097 SortedMap<String, User> sm = new TreeMap<String, User>(); 098 Iterator<User> it = m_umManager.getUsers().iterator(); 099 while (it.hasNext()) { 100 User u = it.next(); 101 if (m_ufFilter.match(u)) { 102 sm.put(u.getName(), u); 103 } 104 } 105 return Collections.unmodifiableCollection(sm.values()); 106 } 107 108 public void addUserDataListener(UserDataListener udl) { 109 m_umManager.addUserDataListener(udl); 110 } 111 }