Riferimenti per la classe org.jaebi.server.core.UserContainerImpl

Diagramma delle classi per org.jaebi.server.core.UserContainerImpl

Inheritance graph
[legenda]
Diagramma di collaborazione per org.jaebi.server.core.UserContainerImpl:

Collaboration graph
[legenda]
Lista di tutti i membri.

Descrizione Dettagliata

Container di User.

Autore:
detro

Definizione alla linea 21 del file UserContainerImpl.java.

Membri pubblici

 UserContainerImpl ()
 Creates a new instance of UserContainerImpl.
boolean addUser (String nick, Session session, String type)
 Aggiungi User al Container, se non presente.
synchronized boolean addUser (User newUser)
 Aggiungi User al Container, se non presente.
synchronized boolean removeUser (Session session)
 Elimina User dal Container in base al Session identificativo.
synchronized boolean contains (Session session)
 Verifica se uno User con quel Session e' presente.
synchronized User getUser (Session session)
 Recupera User in base al Session identificativo.
synchronized ArrayList getUsersByNick (String nick)
 Testare questo metodo e verificare che non apporti cambiamenti al Container.
synchronized ArrayList getUsersByType (String type)
 Testare questo metodo e verificare che non apporti cambiamenti al Container.
synchronized int size ()
 Numero di User presenti nel Container.
synchronized void clear ()
 Rimuove tutti gli User presenti.
synchronized boolean isEmpty ()
 Verifica che non ci siano User.
synchronized Collection toCollection ()
 Converte il Container in una Collection di User.
String toString ()
 Converte il contenuto del Container in Stringa.

Attributi protetti

final HashMap container
 La scelta del Container e' caduta su una HashMap per una questione di prestazioni.


Documentazione dei costruttori e dei distruttori

org.jaebi.server.core.UserContainerImpl.UserContainerImpl  ) 
 

Creates a new instance of UserContainerImpl.

Definizione alla linea 39 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00039                                {
00040         container = new HashMap();
00041     }


Documentazione delle funzioni membro

synchronized boolean org.jaebi.server.core.UserContainerImpl.addUser User  newUser  ) 
 

Aggiungi User al Container, se non presente.

Parametri:
newUser User da aggiungere
Restituisce:
"true" se lo User viene inserito (non era presente), "false" altrimenti

Implementa org.jaebi.server.core.UserContainer.

Reimplementata in org.jaebi.server.core.TimeoutThreadedUserContainer.

Definizione alla linea 48 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container, org.jaebi.server.core.UserContainerImpl.contains(), e org.jaebi.server.core.User.getSession().

00048                                                         {
00049         if ( !contains( newUser.getSession() ) ) {
00050                         container.put(newUser.getSession(), newUser);
00051                         return true;
00052         }
00053         else 
00054                         return false;
00055     }

Questo è il grafo delle chiamate per questa funzione:

boolean org.jaebi.server.core.UserContainerImpl.addUser String  nick,
Session  session,
String  type
 

Aggiungi User al Container, se non presente.

Lo User viene istanziato internamente al Container, quindi inserito.

Parametri:
nick Nick
session Session
type Tipo di User
Restituisce:
"true" se lo User viene inserito (non era presente), "false" altrimenti

Implementa org.jaebi.server.core.UserContainer.

Reimplementata in org.jaebi.server.core.TimeoutThreadedUserContainer.

Definizione alla linea 43 del file UserContainerImpl.java.

00043                                                                         {
00044                 User newUser = new User(nick, session, type);
00045                 return addUser(newUser);
00046     }

synchronized void org.jaebi.server.core.UserContainerImpl.clear  ) 
 

Rimuove tutti gli User presenti.

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 106 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00106 { container.clear(); }

synchronized boolean org.jaebi.server.core.UserContainerImpl.contains Session  session  ) 
 

Verifica se uno User con quel Session e' presente.

Restituisce:
"true" se lo User e' presente, "false" altrimenti

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 62 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

Referenziato da org.jaebi.server.core.UserContainerImpl.addUser().

00062                                                           { 
00063         return container.containsKey(session);
00064     }

synchronized User org.jaebi.server.core.UserContainerImpl.getUser Session  session  ) 
 

Recupera User in base al Session identificativo.

Parametri:
session Session identificativo
Restituisce:
Uno User, se presente uno User con quel Session, "null" altrimenti

Implementa org.jaebi.server.core.UserContainer.

Reimplementata in org.jaebi.server.core.TimeoutThreadedUserContainer.

Definizione alla linea 66 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00066                                                         { 
00067         return (User)container.get(session); 
00068     }

synchronized ArrayList org.jaebi.server.core.UserContainerImpl.getUsersByNick String  nick  ) 
 

Testare questo metodo e verificare che non apporti cambiamenti al Container.

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 73 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container, e org.jaebi.server.core.User.getNick().

00073                                                                 {
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     }

Questo è il grafo delle chiamate per questa funzione:

synchronized ArrayList org.jaebi.server.core.UserContainerImpl.getUsersByType String  type  ) 
 

Testare questo metodo e verificare che non apporti cambiamenti al Container.

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 90 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container, e org.jaebi.server.core.User.getType().

00090                                                                 {
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     }

Questo è il grafo delle chiamate per questa funzione:

synchronized boolean org.jaebi.server.core.UserContainerImpl.isEmpty  ) 
 

Verifica che non ci siano User.

Restituisce:
"true" se non ci sono User, "false" altrimenti

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 108 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00108 { return container.isEmpty(); }

synchronized boolean org.jaebi.server.core.UserContainerImpl.removeUser Session  session  ) 
 

Elimina User dal Container in base al Session identificativo.

Parametri:
session Session identificativo

Implementa org.jaebi.server.core.UserContainer.

Reimplementata in org.jaebi.server.core.TimeoutThreadedUserContainer.

Definizione alla linea 57 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00057                                                               {
00058         User user = (User)container.remove(session);
00059         return user == null ? false : true;
00060     }

synchronized int org.jaebi.server.core.UserContainerImpl.size  ) 
 

Numero di User presenti nel Container.

Restituisce:
Numero di User nel Container

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 104 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00104 { return container.size(); }

synchronized Collection org.jaebi.server.core.UserContainerImpl.toCollection  ) 
 

Converte il Container in una Collection di User.

I cambiamenti esequiti sulla Collection generato si riflettono sugli User presenti nel Container.

Restituisce:
Collection di tutti gli User presenti

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 110 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00110                                                   {
00111         return (Collection)container.values();
00112     }

String org.jaebi.server.core.UserContainerImpl.toString  ) 
 

Converte il contenuto del Container in Stringa.

Utile per l'auto conversione in String.

Restituisce:
Stringa contenuti del Container

Implementa org.jaebi.server.core.UserContainer.

Definizione alla linea 114 del file UserContainerImpl.java.

Riferimenti org.jaebi.server.core.UserContainerImpl.container.

00114                              {
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     }


Documentazione dei dati membri

final HashMap org.jaebi.server.core.UserContainerImpl.container [protected]
 

La scelta del Container e' caduta su una HashMap per una questione di prestazioni.

Poiche' la maggior parte delle operazioni sul Container saranno di 1)Inserimento, 2)Ricerca e 3)Cancellazione, e queste saranno quasi sempre eseguite in base al Session identificativo, e' sembrata una buona scelta <u>indicizzare gli User</u> in base all'oggetto Session stesso. HashMap (che utilizza una funzione di Hashing per l'indicizzazione) si presta ottimamente a questo scopo, fornendo <u>tempi di accesso costanti</u>.

Definizione alla linea 34 del file UserContainerImpl.java.

Referenziato da org.jaebi.server.core.UserContainerImpl.addUser(), org.jaebi.server.core.UserContainerImpl.clear(), org.jaebi.server.core.UserContainerImpl.contains(), org.jaebi.server.core.UserContainerImpl.getUser(), org.jaebi.server.core.UserContainerImpl.getUsersByNick(), org.jaebi.server.core.UserContainerImpl.getUsersByType(), org.jaebi.server.core.UserContainerImpl.isEmpty(), org.jaebi.server.core.UserContainerImpl.removeUser(), org.jaebi.server.core.UserContainerImpl.size(), org.jaebi.server.core.UserContainerImpl.toCollection(), org.jaebi.server.core.UserContainerImpl.toString(), e org.jaebi.server.core.UserContainerImpl.UserContainerImpl().


La documentazione per questa classe è stata generata a partire dal seguente file:
Generato il Mon Jun 27 22:50:40 2005 per JAEBI - JAva Enterprice BackEnd Interfacement da  doxygen 1.4.3