/*
* DrakkarKeel - An Enterprise Collaborative Search Platform
*
* The contents of this file are subject under the terms described in the
* DRAKKARKEEL_LICENSE file included in this distribution; you may not use this
* file except in compliance with the License.
*
* 2013-2014 DrakkarKeel Platform.
*/
package drakkar.prow.facade.desktop.event;
import drakkar.oar.facade.event.FacadeDesktopListener;
public interface ProwListener extends FacadeDesktopListener {
/**
* Notifica la respuesta de petición de conexión de un usuario a la sesión de comunicación
*
* @param evt instancia de SeekerEvent
*
* <br><br>
* El objeto SeekerEvent, contiene la respuesta de la de petición de conexión al servisor.
* <br><pre>
* public void notifyRequestConnection(SeekerEvent evt) {
* Response response = evt.getResponse();
* int reply = (Integer)response.get(REPLY);
* switch (reply) {
* case CONNECTION_FAILED:
* .......
* case CONNECTION_SUCCESSFUL:
* .....
* }
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) del objeto
* response de la instancia SeekerEvent. Las constantes clave(key) pertenecen
* a la clase <b>drakkar.oar.util.KeyTransaction </b> y los valores(values) a
* la clase <b>drakkar.oar.util.KeySession </b>.
*
*
* <br><br><table border = 1 summary="Shows property keys and associated values">
* <tr><th>Key</th>
* <th>Associated Value</th><th>Description</th></tr>
* <tr>
* <td rowspan= 2><code>REPLY</code></td>
* <td><code>CONNECTION_FAILED<code></td>
* <td>Falló la entrada al sistema</td>
* </tr>
* <tr>
* <td><code>CONNECTION_SUCCESSFUL<code></td>
* <td>Entrada al sistema satisfactorimente</td>
* </tr>
*
* </table>
*
* <br><b> Case:</b> CONNECTION_FAILED
* <table border = 1 >
* <tr><th>Key</th>
* <th>Associated Value</th><th>Description</th></tr>
* <tr>
* <td rowspan= 2><code>CAUSE</code></td>
* <td><code>SEEKER_ALREADY_REGISTERED<code></td>
* <td>El seeker ya se encuentra conectado</td>
* </tr>
* <tr>
* <td><code>USER_OR_PASSWORD_INCORRECT<code></td>
* <td>Error en el usuario o la contraseña</td>
* </tr>
*
* </table>
*
* <br><b>Case:</b> CONNECTION_SUCCESSFUL
*
* <table border = 1 >
* <tr><th>Key</th>
* <th>Associated Value</th><th>Description</th></tr>
* <tr>
* <td ><code>SESSION_NAME</code></td>
* <td><code>String<code></td>
* <td>Nombre de la sesión de comunicación.</td>
* </tr>
* <tr>
* <td ><code>SEEKERS_SESSION</code></td>
* <td><code>ArrayList<Seeker><code></td>
* <td>Lista de seekers conectados al sistema.</td>
* </tr>
* <tr>
* <td ><code>SEARCHERS</code></td>
* <td><code>String[]<code></td>
* <td>Lista de nombres de buscadores disponibles.</td>
* </tr>
* <tr>
* <td ><code>PERSISTENT_SESSIONS</code></td>
* <td><code>ArrayList<Session> <code></td>
* <td>Lista de sesiones, de las cuales es miembro el seeker.</td>
* </tr>
* <tr>
* <td ><code>OPEN_SESSIONS</code></td>
* <td><code>ArrayList<Session> <code></td>
* <td>Sessiones de búsquedas abiertas en sistema.</td>
* </tr>
*
* <tr>
* <td ><code>SEARCH_PRINCIPLES</code></td>
* <td><code>ArrayList<String> <code></td>
* <td>Principios de búsquedas disponibles para el seeker.</td>
* </tr>
*
* </table>
*
*/
public void notifyRequestConnection(SeekerEvent evt);
/**
*
* @param evt
*/
public void notifyCloseConnection(SeekerEvent evt);
/**
* Notifica la acción del usuario en una sesión de comunicación (entrada, salida
* y actualización del su profile).
*
* @param evt instancia de SeekerEvent
*
* <br><br>
* El objeto SeekerEvent, almacena la información referente a la acción a notificar.
* <br><pre>
* public void notifySeekerEvent(SeekerEvent evt){
* Response rsp = evt.getResponse();
* int event = (Integer) rsp.get(DISTRIBUTED_EVENT);
* Seeker item = (Seeker) rsp.get(SEEKER);
* String sessionName = rsp.get(SESSION_NAME).toString();
* ..... // Implementar identificación del tipo de evento
* ...
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de los posibles
* tipos de eventos que pueden originar esta notificación. Las constantes clave(key)
* pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y los valores(values) a
* la clase <b> drakkar.oar.util.KeySession </b>.
*
*
* <br><br><table border = 1 summary="Shows property keys and associated values">
* <tr><th>Key</th>
* <th>Associated Value</th><th>Description</th></tr>
* <tr>
* <td rowspan= 3><code>DISTRIBUTED_EVENT</code></td>
* <td><code>SEEKER_LOGIN<code></td>
* <td>Notificar la entrada del seeker del sistema.</td>
* </tr>
* <tr>
* <td><code>SEEKER_LOGOUT<code></td>
* <td>Notificar la salida del seeker del sistema.</td>
* </tr>
* <tr>
* <td><code>UPDATE_SEEKER_PROFILE<code></td>
* <td>Notificar la actualización del profile del seeker (Cambio estado, avatar).</td>
* </tr>
* <tr>
* <td ><code>SEEKER</code></td>
* <td><code>Objeto Seeker<code></td>
* <td>Instancia del la case Seeker que representa el usuario que originó la notificación.</td>
* </tr>
* <tr>
* <td ><code>SESSION_NAME</code></td>
* <td><code>String<code></td>
* <td>Nombre de la sesión de comunicación del seeker.</td>
* </tr>
* </table>
*
*
*/
public void notifySeekerEvent(SeekerEvent evt);
/**
* Notifica el estado actual del servidor.
*
* @param evt instancia de ServerEvent
*
* <br><br>
* El objeto SeekerEvent(evt), en dependencia de la acción a notificar tiene la
* tiene los siguientes parámetros:
* <br><pre>
* public void notifyServerState(ServerEvent evt){
* Response rsp = evt.getResponse();
* int reply = (Integer) rsp.get(SERVER_STATE);
* switch (reply) {
* case SERVER_STOPPED:
* .......
* case SERVER_RESET:
* .....
* }
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de los posibles
* tipos de acciones que pueden originar esta notificación. Las constantes clave(key)
* pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y los valores(values) a
* la clase <b>drakkar.oar.util.KeySession</b>.
*
*
* <br><br><table border = 1 summary="Shows property keys and associated values">
* <tr><th>Key</th>
* <th>Associated Value</th><th>Description</th></tr>
* <tr>
* <td rowspan= 2><code>SERVER_STATE</code></td>
* <td><code>SERVER_STOPPED<code></td>
* <td>Notifica que el servicio del servidor se ha detenido.</td>
* </tr>
* <tr>
* <td><code>SERVER_RESET<code></td>
* <td>Notifica el reinicio del servicio del servidor.</td>
* </tr>
*
* </table>
*
*
*/
public void notifyServerState(ServerEvent evt);
/**
* Notifica el completamiento de una operación, en caso contrario la
* o las causas que impidieron la misma.
*
* @param evt instancia de TransactionEvent
*
* <br><br>
* El objeto SeekerEvent, en dependencia del tipo de mensaje a notificar tiene la
* tiene los siguientes parámetros:
* <br><pre>
* public void notifyCommitTransaction(TransactionEvent evt) {
* Response response = evt.getResponse();
* int type = (Integer)response.get(MESSAGE_TYPE);
* String msg = response.get(MESSAGE);
* switch (type) {
* case INFORMATION_MESSAGE:
* System.out.println(msg);
* .......
* case ERROR_MESSAGE:
* System.err.println(msg);
* .....
* }
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) del objeto
* response de la instancia TransactionEvent. Las constantes clave(key) pertenecen
* a la clase <b>drakkar.oar.util.KeyTransaction </b> y los valores(values) a
* la clases <b>drakkar.oar.util.KeySession,drakkar.oar.util.KeyMessage</b>.
*
*
* <br><br><table border = 1 summary="Shows property keys and associated values">
* <tr><th>Key</th>
* <th>Associated Value</th><th>Description</th></tr>
* <tr>
* <td rowspan= 2><code>MESSAGE_TYPE</code></td>
* <td><code>INFORMATION_MESSAGE<code></td>
* <td>Mensaje de Información</td>
* </tr>
* <tr>
* <td><code>ERROR_MESSAGE<code></td>
* <td>Mensaje de Error.</td>
* </tr>
*
* <tr>
* <td><code>MESSAGE<code></td>
* <td><code>String<code></td>
* <td>Contenido del Mensaje.</td>
* </tr>
*
* </table>
*
*
*/
public void notifyCommitTransaction(TransactionEvent evt);
}