uniandes.cupi2.messengerAmigos.servidor
Class ServidorAmigos

java.lang.Object
  extended by uniandes.cupi2.messengerAmigos.servidor.ServidorAmigos
All Implemented Interfaces:
IServidorAmigos

public class ServidorAmigos
extends java.lang.Object
implements IServidorAmigos

El ServidorAmigos es el que se encarga de recibir las conexiones de los clientes que se conectan al sistema.
Después de que se ha establecido una conexión, la responsabilidad de manejar la comunicación con el cliente es de una instancia de la clase ManejadorCliente.


Field Summary
 
Fields inherited from interface uniandes.cupi2.messengerAmigos.servidor.IServidorAmigos
AGREGAR_AMIGO, CONVERSACION, DESCONEXION, INCIAR_CHARLA, LOGIN, LOGOUT, OFFLINE, ONLINE
 
Constructor Summary
ServidorAmigos(java.lang.String archivo)
          Construye el servidor y deja listo el administrador de amigos
 
Method Summary
 void cerrarConexion()
          Cierra el socket del servidor que espera clientes
pre: No se está esperando una conexión en el socket.
 IAdministradorAmigos darAministradorAmigos()
          Retorna el administrador de amigos usado por el servidor
 java.util.Collection darClientes()
          Retorna una colección de Strings con la información de los clientes que están conectados actualmente
 void desconectarCliente(java.lang.String usuario)
          Elimina el manejador del usuario indicado porque este se está desconectando
 void desconectarDB()
          Termina la conexión a la base de datos y la cierra
 void enviarNotificacionAmigo(java.lang.String usuario, Usuario estadoAmigo)
          Envía un mensaje a un usuario indicado el estado de un amigo
 void iniciarConversacion(java.lang.String usuario, java.lang.String amigo, java.lang.String direccionIp, int puerto)
          Envía un mensaje a un usuario para que participe en una conversación
 java.lang.String metodo1()
          Método para la extensión 1
 java.lang.String metodo2()
          Método para la extensión2
 void recibirConexiones()
          Este método se encarga de recibir todas las conexiones de los clientes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ServidorAmigos

public ServidorAmigos(java.lang.String archivo)
               throws java.sql.SQLException,
                      java.lang.Exception
Construye el servidor y deja listo el administrador de amigos

Parameters:
archivo - El archivo de propiedades que tiene la configuración del servidor - archivo != null
Throws:
java.lang.Exception - Se lanza esta excepción si hay problemas con el archivo de propiedades o hay problemas en la conexión a la base de datos
java.sql.SQLException - Se lanza esta excepción si hay problemas conectando el almacén a la base de datos.
Method Detail

darAministradorAmigos

public IAdministradorAmigos darAministradorAmigos()
Retorna el administrador de amigos usado por el servidor

Specified by:
darAministradorAmigos in interface IServidorAmigos
Returns:
adminAmigos

desconectarDB

public void desconectarDB()
                   throws java.sql.SQLException
Termina la conexión a la base de datos y la cierra

Specified by:
desconectarDB in interface IServidorAmigos
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas terminando la conexión a la base de datos

recibirConexiones

public void recibirConexiones()
Este método se encarga de recibir todas las conexiones de los clientes.
Este método debe abrir el socket y para cada conexión entrante construir un ManejadorCliente asociado.

Specified by:
recibirConexiones in interface IServidorAmigos

cerrarConexion

public void cerrarConexion()
                    throws java.io.IOException
Cierra el socket del servidor que espera clientes
pre: No se está esperando una conexión en el socket.

Specified by:
cerrarConexion in interface IServidorAmigos
Throws:
java.io.IOException - Se lanza esta excepción si hay problemas cerrando el socket

darClientes

public java.util.Collection darClientes()
Retorna una colección de Strings con la información de los clientes que están conectados actualmente

Specified by:
darClientes in interface IServidorAmigos
Returns:
Collection de Strings

enviarNotificacionAmigo

public void enviarNotificacionAmigo(java.lang.String usuario,
                                    Usuario estadoAmigo)
Envía un mensaje a un usuario indicado el estado de un amigo

Specified by:
enviarNotificacionAmigo in interface IServidorAmigos
Parameters:
usuario - El nombre del usuario al que se le debe enviar el mensaje - usuario != null && usuario != ""
estadoAmigo - El estado del amigo del que se va a enviar la notificación - estadoAmigo != null

iniciarConversacion

public void iniciarConversacion(java.lang.String usuario,
                                java.lang.String amigo,
                                java.lang.String direccionIp,
                                int puerto)
Envía un mensaje a un usuario para que participe en una conversación

Specified by:
iniciarConversacion in interface IServidorAmigos
Parameters:
usuario - El nombre del usuario al que se le va a enviar el mensaje para iniciar una conversación - usuario != null
amigo - El nombre del usuario con el que se va a establecer una conversación - amigo != null
direccionIp - La direccion ip del usuario con el que se va a establecer la conversación - direccionIp != null
puerto - El puerto al que se debe conectar el usuario

desconectarCliente

public void desconectarCliente(java.lang.String usuario)
Elimina el manejador del usuario indicado porque este se está desconectando

Specified by:
desconectarCliente in interface IServidorAmigos
Parameters:
usuario - El nombre del usuario que se está desconectado - usuario != null

metodo1

public java.lang.String metodo1()
Método para la extensión 1

Specified by:
metodo1 in interface IServidorAmigos
Returns:
respuesta1

metodo2

public java.lang.String metodo2()
Método para la extensión2

Specified by:
metodo2 in interface IServidorAmigos
Returns:
respuesta2