uniandes.cupi2.messengerAmigos.servidor
Class AdministradorAmigos

java.lang.Object
  extended by uniandes.cupi2.messengerAmigos.servidor.AdministradorAmigos
All Implemented Interfaces:
IAdministradorAmigos

public class AdministradorAmigos
extends java.lang.Object
implements IAdministradorAmigos

Esta es la clase que se encarga de manejar la información sobre los usuarios y sus amigos en la base de datos


Constructor Summary
AdministradorAmigos(java.util.Properties propiedades)
          Construye el administrador de amigos y lo deja listo para conectarse a la base de datos
 
Method Summary
 void agregarAmigo(java.lang.String usuario, java.lang.String amigo)
          Agrega un amigo a un usuario
pre: El amigo indicado no hace parte todavía de los amigos del usuario
 void cambiarEstadoUsuario(java.lang.String usuario, java.lang.String estado, java.lang.String ip, int puerto)
          Este método cambia el estado de un usuario en la base de datos
pre: El usuario existe en la base de datos
 void conectarABD()
          Conecta el administrador a la base de datos
 void crearUsuario(java.lang.String usuario)
          Este método crea un nuevo usuario en la base de datos
pre: No hay ya un usuario con el mismo nombre en la base de datos
 java.util.Collection darAmigos(java.lang.String usuario)
          Consulta en la base de datos cuales son los amigos de un usuario y los retorna ordenados por nombre
 Usuario darEstadoUsuario(java.lang.String nombre)
          Este método consulta el estado actual de un usuario
 java.util.Collection darPersonasConocen(java.lang.String nombreUsuario)
          Consulta en la base de datos el estado de las personas que conocen a un usuario (el usuario es su amigo aunque ellos no necesariamente no son sus amigos) y los retorna ordenados por nombre.
 void desconectarBD()
          Desconecta el administrador de la base de datos y la detiene
 boolean existeAmigo(java.lang.String usuario, java.lang.String amigo)
          Este método sirve para saber si un usuario ya es amigo de otro
 boolean existeUsuario(java.lang.String usuario)
          Este método sirve para saber si un usuario existe ya en la base de datos
 void inicializarTablas()
          Crea las tablas necesarias para guardar la información de los usuarios y sus amigos.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AdministradorAmigos

public AdministradorAmigos(java.util.Properties propiedades)
Construye el administrador de amigos y lo deja listo para conectarse a la base de datos

Parameters:
propiedades - Las propiedades para la configuración del administrador - Debe tener las propiedades "admin.db.path", "admin.db.driver", "admin.db.url" y "admin.db.shutdown"
Method Detail

conectarABD

public void conectarABD()
                 throws java.sql.SQLException,
                        java.lang.Exception
Conecta el administrador a la base de datos

Specified by:
conectarABD in interface IAdministradorAmigos
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas realizando la operación
java.lang.Exception - Se lanza esta excepción si hay problemas con los drivers

desconectarBD

public void desconectarBD()
                   throws java.sql.SQLException
Desconecta el administrador de la base de datos y la detiene

Specified by:
desconectarBD in interface IAdministradorAmigos
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas realizando la operación

inicializarTablas

public void inicializarTablas()
                       throws java.sql.SQLException
Crea las tablas necesarias para guardar la información de los usuarios y sus amigos. Si las tablas ya estaban creadas entonces no hace nada.

Specified by:
inicializarTablas in interface IAdministradorAmigos
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas creando las tablas

crearUsuario

public void crearUsuario(java.lang.String usuario)
                  throws java.sql.SQLException
Este método crea un nuevo usuario en la base de datos
pre: No hay ya un usuario con el mismo nombre en la base de datos

Specified by:
crearUsuario in interface IAdministradorAmigos
Parameters:
usuario - El nombre del usuario - usuario != null && usuario != ""
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos

agregarAmigo

public void agregarAmigo(java.lang.String usuario,
                         java.lang.String amigo)
                  throws java.sql.SQLException
Agrega un amigo a un usuario
pre: El amigo indicado no hace parte todavía de los amigos del usuario

Specified by:
agregarAmigo in interface IAdministradorAmigos
Parameters:
usuario - El nombre del usuario al que se le va a agregar un amigo - usuario != null && usuario != ""
amigo - El nombre del usuario que desde ahora va a ser amigo del usuario - amigo != null && amigo != ""
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos

cambiarEstadoUsuario

public void cambiarEstadoUsuario(java.lang.String usuario,
                                 java.lang.String estado,
                                 java.lang.String ip,
                                 int puerto)
                          throws java.sql.SQLException
Este método cambia el estado de un usuario en la base de datos
pre: El usuario existe en la base de datos

Specified by:
cambiarEstadoUsuario in interface IAdministradorAmigos
Parameters:
usuario - El nombre del usuario al que se va a cambiar el estado - usuario != null && usuario != ""
estado - El nuevo estado del usuario - estado != null && estado != ""
ip - La dirección ip del usuario - ip != null
puerto - El puerto usado para las conexiones con el usuario
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos

darAmigos

public java.util.Collection darAmigos(java.lang.String usuario)
                               throws java.sql.SQLException
Consulta en la base de datos cuales son los amigos de un usuario y los retorna ordenados por nombre

Specified by:
darAmigos in interface IAdministradorAmigos
Parameters:
usuario - El nombre del usuario del que se quieren los amigos - usuario != null && usuario != ""
Returns:
Retorna una colección de objetos de tipo Usuario
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos

darPersonasConocen

public java.util.Collection darPersonasConocen(java.lang.String nombreUsuario)
                                        throws java.sql.SQLException
Consulta en la base de datos el estado de las personas que conocen a un usuario (el usuario es su amigo aunque ellos no necesariamente no son sus amigos) y los retorna ordenados por nombre.

Specified by:
darPersonasConocen in interface IAdministradorAmigos
Parameters:
nombreUsuario - El nombre del usuario que las personas deben conocer - nombreUsuario != null && nombreUsuario != ""
Returns:
Retorna una colección de objetos de tipo Usuario
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos

darEstadoUsuario

public Usuario darEstadoUsuario(java.lang.String nombre)
                         throws java.sql.SQLException
Este método consulta el estado actual de un usuario

Specified by:
darEstadoUsuario in interface IAdministradorAmigos
Parameters:
nombre - El nombre del usuario que se está consultando - nombre != null
Returns:
Retorna un objeto con la información del estado del usuario. Si el usuario no existe, retorna null.
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos

existeUsuario

public boolean existeUsuario(java.lang.String usuario)
                      throws java.sql.SQLException
Este método sirve para saber si un usuario existe ya en la base de datos

Specified by:
existeUsuario in interface IAdministradorAmigos
Parameters:
usuario - El nombre del usuario buscado - usario != null
Returns:
Retorna true si el usuario aparece en la base de datos; retorna false en caso contrario
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos

existeAmigo

public boolean existeAmigo(java.lang.String usuario,
                           java.lang.String amigo)
                    throws java.sql.SQLException
Este método sirve para saber si un usuario ya es amigo de otro

Specified by:
existeAmigo in interface IAdministradorAmigos
Parameters:
usuario - El nombre del usuario para el que se van a revisar los amigos- usario != null
amigo - El nombre del amigo que se va a buscar dentro de los contactos de usuario - amigo != null
Returns:
Retorna true si los usuarios dados ya son amigos
Throws:
java.sql.SQLException - Se lanza esta excepción si hay problemas en la comunicación con la base de datos