/*
* 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;
/**
* Esta interfaz se encargará de notificarán los eventos del entorno colaborativo
*/
public interface CollaborativeEnvironmentListener extends FacadeDesktopListener {
/**
* Notifica a la aplicación del cliente la apertura o cierre de una sesión
* colaborativa de búsqueda.
*
* @param evt instancia de SessionEvent
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con el evento efectuado sobre las sesiones colaborativas de búsqueda.
*
* <br><pre>
* public void notifyAvailableCollabSession(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
* int event = (Integer) rsp.get(DISTRIBUTED_EVENT);
* switch (reply) {
* case BEGIN_COLLAB_SESSION:
* String desc = rsp.get(SESSION_DESCRIPTION).toString();
* .......
* case END_COLLAB_SESSION:
* .....
* }
* ...
* ..
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y
* los valores 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><code>SESSION_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre de la sesión colaborativa de búsqueda.</td>
* </tr>
* <tr>
* <td rowspan = 2><code>DISTRIBUTED_EVENT</code></td>
* <td><code>BEGIN_COLLAB_SESSION <code></td>
* <td>Inicio de una sesión colaborativa de búsqueda.</td>
* </tr>
*
* <tr>
* <td><code>END_COLLAB_SESSION <code></td>
* <td>Fin de una sesión colaborativa de búsqueda.</td>
* </tr>
*
* </table>
*
* <br><b>Case:</b> BEGIN_COLLAB_SESSION
* <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><code>SESSION_DESCRIPTION</code></td>
* <td><code>String <code></td>
* <td>Descripción de la sesión colaborativa de búsqueda.</td>
* </tr>
* <tr>
* <td><code>CHAIRMAN_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre del chairman de la sesión colaborativa de búsqueda.</td>
* </tr>
*
* </table>
*/
public void notifyAvailableCollabSession(CollaborativeEnvironmentEvent evt);
/**
* Notifica respuesta de la solicitud de creación de una sesión colaborativa de búsqueda.
*
* @param evt instancia de CollaborativeEnvironmentEvent
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con la respuesta de la solicitud de creación de una sesión colaborativa de búsqueda.
*
* <br><pre>
* public void notifyCollabSessionCreation(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
* ArrayList<Seekers> seekers = (ArrayList<Seekers>) rsp.get(SEEKERS_SESSION);
* ArrayList<String> principles = (ArrayList<String>) rsp.get(SEARCH_PRINCIPLES);
* .....
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y
* los valores 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 ><code>SESSION_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre de sesión de búsqueda colaborativa.</td>
* </tr>
*
* <tr>
* <td ><code>SEEKERS_SESSION</code></td>
* <td><code>ArrayList<Seeker> <code></td>
* <td>Lista de seekers de la sesión colaborativa de búsqueda.</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 notifyCollabSessionCreation(CollaborativeEnvironmentEvent evt);
/**
* Notifica los cambios de los chairmans de la sesiones colaborativas de búsqueda.
*
* @param evt instancia de CollaborativeEnvironmentEvent
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con el cambio del chairman de una sesión colaborativad de búsqueda.
*
* <br><pre>
* public void notifyChairmanSetting(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
* String chairmanName = rsp.get(CHAIRMAN_NAME).toString();
*
* int event = (Integer) rsp.get(DISTRIBUTED_EVENT);
* switch (event) {
* case NEW_CHAIRMAN_COLLAB_SESSION:
* System.out.println("New chairman "+chairmanName+" of session "+sessionName+"!!!")
* break;
* case CHANGE_CHAIRMAN_COLLAB_SESSION:
* ArrayList<String> newPrinciples = (ArrayList<String>) rsp.get(SEARCH_PRINCIPLES);
* ..... // actualizar los principios de la GUI del cliente
* boolean isChairman = (Boolean) rsp.get(IS_CHAIRMAN);
* ..... // Mostrar un mensaje de información en dependencia del valor de isChairman
* ..
* }
*
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y
* los valores 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>DISTRIBUTED_EVENT</code></td>
* <td><code>NEW_CHAIRMAN_COLLAB_SESSION <code></td>
* <td>Nofificar al los miembro de la sesión de búsqueda colaborativa el
* nuevo chairman de la misma.</td>
* </tr>
*
* <tr>
* <td><code>CHANGE_CHAIRMAN_COLLAB_SESSION <code></td>
* <td>Nofificar al nuevo y al anterior chairman de sesión de búsqueda colaborativa el cambio.</td>
* </tr>
*
* <tr>
* <td ><code>SESSION_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre de sesión de búsqueda colaborativa.</td>
* </tr>
*
* <tr>
* <td ><code>CHAIRMAN_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre del chairman de la sesión de búsqueda colaborativa.</td>
* </tr>
*
* </table>
*
* <br><b>Case:</b> CHANGE_CHAIRMAN_COLLAB_SESSION
* <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 ><code>IS_CHAIRMAN</code></td>
* <td><code>boolean <code></td>
* <td>True si se notifica al chairman de la sesión de búsqueda colaborativa, false
* en caso contrario.</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 notifyChairmanSetting(CollaborativeEnvironmentEvent evt);
/**
* Notifica la sesión colaborativa de búsqueda eliminada.
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con la sesión colaborativa de búsqueda eliminada.
*
* <br><pre>
* public void notifyCollabSessionDeleted(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
* ........
* .....
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </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 ><code>SESSION_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre de sesión de búsqueda colaborativa.</td>
* </tr>
*
*
* </table>
*
*/
public void notifyCollabSessionDeleted(CollaborativeEnvironmentEvent evt);
/**
* Notifica la sesión colaborativa de búsqueda finalizada.
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con la sesión colaborativa de búsqueda finalizada.
*
* <br><pre>
* public void notifyCollabSessionEnding(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
* ........
* .....
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </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 ><code>SESSION_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre de sesión de búsqueda colaborativa.</td>
* </tr>
*
*
* </table>
*
*/
public void notifyCollabSessionEnding(CollaborativeEnvironmentEvent evt);
/**
* Notifica las acciones de entrada y salida de los seekers en las sesiones
* colaborativas de búsqueda.
*
* @param evt instancia de CollaborativeEnvironmentEvent
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con la respuesta de la solicitud de entrada o la entrada a una sesión colaborativa de búsqueda.
*
* <br><pre>
* public void notifyCollabSessionAuthentication(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
*
* int event = (Integer) rsp.get(DISTRIBUTED_EVENT);
* switch (event) {
* case SEEKER_LOGIN_COLLAB_SESSION:
* Seeker seeker = (Seeker)rsp.get(SEEKER);
* ........
* break;
* case SEEKER_LOGOUT_COLLAB_SESSION:
* .....
* break;
* case SELF_LOGIN_COLLAB_SESSION:
* .....
* break;
*
* }
*
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y
* los valores 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=4><code>DISTRIBUTED_EVENT</code></td>
* <td><code>SEEKER_LOGIN_COLLAB_SESSION <code></td>
* <td>Nofifica la entrada de un seeker de una sesión de búsqueda colaborativa.</td>
* </tr>
*
* <tr>
* <td><code>SEEKER_LOGOUT_COLLAB_SESSION <code></td>
* <td>Nofifica la salida de un seeker de una sesión de búsqueda colaborativa.</td>
* </tr>
*
* <tr>
* <td><code>SELF_LOGIN_COLLAB_SESSION <code></td>
* <td>Nofifica al seeker su entrada a la sesión de búsqueda colaborativa.</td>
* </tr>
* <tr>
* <td><code>DECLINE_SEEKER_COLLAB_SESSION <code></td>
* <td>Nofifica al seeker su salida permanente de una sesión búsqueda colaborativa.</td>
* </tr>
* <tr>
* <td ><code>SESSION_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre de sesión de búsqueda colaborativa.</td>
* </tr>
*
*
* </table>
*
* <br><b>Case:</b> SEEKER_LOGIN_COLLAB_SESSION y SEEKER_LOGOUT_COLLAB_SESSION
* <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 ><code>SEEKER</code></td>
* <td><code>Seeker <code></td>
* <td>Instancia del objeto seeker que representa al usuario que originó el evento.</td>
* </tr>
* </table>
*
* <br><b>Case:</b> SEEKER_LOGOUT_COLLAB_SESSION
* <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>CAUSE</code></td>
* <td><code>SEEKER_LOGOUT<code></td>
* <td>Salida del seeker de la sesión colaborativa de búsqueda.</td>
* </tr>
*
* <tr>
* <td><code>END_SESSION<code></td>
* <td>Fin de la sesión colaborativa de búsqueda.</td>
* </tr>
* </table>
*
* <br><b>Case:</b> SELF_LOGIN_COLLAB_SESSION
* <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 ><code>SEEKERS_SESSION</code></td>
* <td><code>ArrayList<Seeker> <code></td>
* <td>Lista de seekers de la sesión colaborativa de búsqueda.</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 notifyCollabSessionAuthentication(CollaborativeEnvironmentEvent evt);
/**
* Notifica la solicitud o respuesta de entrada a una sesión colaborativa de búsqueda.
*
* @param evt instancia de CollaborativeEnvironmentEvent
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con la solicitud o respuesta de entrada a una sesión colaborativa de búsqueda.
*
* <br><pre>
* public void notifyCollabSessionAcceptance(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
*
* int event = (Integer) rsp.get(DISTRIBUTED_EVENT);
* switch (event) {
* case CONFIRM_COLLAB_SESSION:
* ArrayList<Seekers> seekers = (ArrayList<Seekers>) rsp.get(SEEKERS_SESSION);
* break;
* case DECLINE_COLLAB_SESSION:
* .....
* case REQUEST_CONFIRM_COLLAB_SESSION:
* .....
* ..
* }
*
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y
* los valores 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>CONFIRM_COLLAB_SESSION <code></td>
* <td>Nofifica la aceptación en la sesión de búsqueda colaborativa.</td>
* </tr>
*
* <tr>
* <td><code>DECLINE_COLLAB_SESSION <code></td>
* <td>Nofifica la no aceptación en la sesión de búsqueda colaborativa.</td>
* </tr>
*
* <tr>
* <td><code>REQUEST_CONFIRM_COLLAB_SESSION <code></td>
* <td>Nofifica la solicitud de entrada al chairman de la sesión de búsqueda colaborativa.</td>
* </tr>
*
* <tr>
* <td ><code>SESSION_NAME</code></td>
* <td><code>String <code></td>
* <td>Nombre de sesión de búsqueda colaborativa.</td>
* </tr>
*
*
* </table>
*
* <br><b>Case:</b> CONFIRM_COLLAB_SESSION
* <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 ><code>SEEKERS_SESSION</code></td>
* <td><code>ArrayList<Seeker> <code></td>
* <td>Lista de seekers de la sesión colaborativa de búsqueda.</td>
* </tr>
* </table>
*
* <br><b>Case:</b> REQUEST_CONFIRM_COLLAB_SESSION
* <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 ><code>SEEKER</code></td>
* <td><code>Seeker<code></td>
* <td>Instancia del objeto Seeker que representa al remitente de la solicitud.</td>
* </tr>
* </table>
*
*/
public void notifyCollabSessionAcceptance(CollaborativeEnvironmentEvent evt);
/**
* Notifica los historiales del ámbito seleccionado.
*
* @param evt instancia de CollaborativeEnvironmentEvent
*
* <br><br>
* El objeto CollaborativeEnvironmentEvent contiene la información relacionada
* con el historial solicitado.
*
* <br><pre>
* public void notifyActionTrack(CollaborativeEnvironmentEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
* int track = (Integer) rsp.get(ACTION);
* switch (track) {
* case COLLAB_SESSION_TRACK:
* SeekerQuery q = (SeekerQuery )rsp.get(SESSION_DATA);
* .......
* case COLLAB_SEARCH_TRACK:
* .....
* case COLLAB_RECOMMENDATION_TRACK:
* .....
* }
* ...
* ..
* }
* </pre>
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a la clase <b>drakkar.oar.util.KeyTransaction </b> y
* los valores 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>ACTION</code></td>
* <td><code>COLLAB_SESSION_TRACK <code></td>
* <td>Historiales de consultas de sesiones de búsqueda colaborativa.</td>
* </tr>
* <tr>
* <td><code>COLLAB_SEARCH_TRACK <code></td>
* <td>Historiales de búsquedas colaborativas.</td>
* </tr>
*
* <tr>
* <td><code>COLLAB_RECOMMENDATION_TRACK <code></td>
* <td>Historiales de recomendaciones.</td>
* </tr>
*
* </table>
*
* <br><b>Case:</b> COLLAB_SESSION_TRACK
* <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><code>SESSION_DATA</code></td>
* <td><code>SeekerQuery <code></td>
* <td>Listado de consultas de búsqueda por usuarios de la sesión.</td>
* </tr>
*
* </table>
*
* <br><b>Case:</b> COLLAB_SEARCH_TRACK
* <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><code>SEARCH_DATA</code></td>
* <td><code>ArrayList<SearchTracker><code></td>
* <td>Listado de resultados de búsqueda.</td>
* </tr>
*
* </table>
*
* <br><b>Case:</b> COLLAB_SEARCH_TRACK
* <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><code>RECOMMEND_DATA</code></td>
* <td><code>ArrayList<RecommendTracker><code></td>
* <td>Listado de recomendaciones.</td>
* </tr>
*
* </table>
*/
public void notifyActionTrack(CollaborativeEnvironmentEvent evt);
}