00001
00002
00003
00004
00005
00006
00007
00008 package org.jaebi.server.core;
00009 import java.util.ArrayList;
00010 import java.util.Collection;
00011 import java.util.HashMap;
00012 import java.util.Iterator;
00013
00014 import org.jaebi.server.auth.Session;
00021 public class UserContainerImpl implements UserContainer {
00034 protected final HashMap container;
00035
00039 public UserContainerImpl() {
00040 container = new HashMap();
00041 }
00042
00043 public boolean addUser( String nick, Session session, String type ) {
00044 User newUser = new User(nick, session, type);
00045 return addUser(newUser);
00046 }
00047
00048 public synchronized boolean addUser( User newUser ) {
00049 if ( !contains( newUser.getSession() ) ) {
00050 container.put(newUser.getSession(), newUser);
00051 return true;
00052 }
00053 else
00054 return false;
00055 }
00056
00057 public synchronized boolean removeUser( Session session ) {
00058 User user = (User)container.remove(session);
00059 return user == null ? false : true;
00060 }
00061
00062 public synchronized boolean contains(Session session) {
00063 return container.containsKey(session);
00064 }
00065
00066 public synchronized User getUser( Session session ) {
00067 return (User)container.get(session);
00068 }
00069
00073 public synchronized ArrayList getUsersByNick( String nick ) {
00074 Collection allUsers = container.values();
00075 ArrayList selected = new ArrayList();
00076 Iterator iter = allUsers.iterator();
00077
00078 while( iter.hasNext() ) {
00079 User currUser = (User)iter.next();
00080 if ( currUser.getNick().equals(nick) )
00081 selected.add(currUser);
00082 }
00083
00084 return selected;
00085 }
00086
00090 public synchronized ArrayList getUsersByType( String type ) {
00091 Collection allUsers = container.values();
00092 ArrayList selected = new ArrayList();
00093 Iterator iter = allUsers.iterator();
00094
00095 while( iter.hasNext() ) {
00096 User currUser = (User)iter.next();
00097 if ( currUser.getType().equals(type) )
00098 selected.add(currUser);
00099 }
00100
00101 return selected;
00102 }
00103
00104 public synchronized int size() { return container.size(); }
00105
00106 public synchronized void clear() { container.clear(); }
00107
00108 public synchronized boolean isEmpty() { return container.isEmpty(); }
00109
00110 public synchronized Collection toCollection() {
00111 return (Collection)container.values();
00112 }
00113
00114 public String toString() {
00115 Iterator iter = container.values().iterator();
00116 StringBuffer buffer = new StringBuffer();
00117
00118 while ( iter.hasNext() ) {
00119 buffer.append( iter.next().toString() + "\n");
00120 }
00121 return buffer.toString();
00122 }
00123 }