/*
* 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;
/**
* The <code>SynchronousAwarenessListener</code> iterface se encargará de notificar los diferentes eventos de awareness.
*/
public interface SynchronousAwarenessListener extends FacadeDesktopListener {
/**
* Notifica a la aplicación del cliente, para habilitar o inabilitar la creación de
* consulta de búsqueda de forma colaborativa (PQT).
*
* @param evt instancia de SynchronousAwarenessEvent
*
* <br><br>
* El objeto SynchronousAwarenessEvent contiene la información sobre el evento.
*
* <br><pre>
* public void notifyPuttingQueryTermsTogether(SynchronousAwarenessEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
*
* ...
* ..
* }
*
* 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.KeyAwareness</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>
*
* <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>KeyAwareness.ENABLE_PQT<code></td>
* <td>Habilitar la confección de la consulta de búsqueda.</td>
* </tr>
* <tr>
* <td><code>KeyAwareness.DISABLE_PQT<code></td>
* <td>Inabilitar la confección de la consulta de búsqueda.</td>
* </tr>
*
* </table>
*
* <br><b> Case:</b> ENABLE_PQT
* <table border = 1 >
* <tr><th>Key</th>
* <th>Associated Value</th><th>Description</th></tr>
* <tr>
* <td><code>KeyTransaction.IS_CHAIRMAN</code></td>
* <td><code>boolean<code></td>
* <td>Especifica si el usuario a notificar es el chairman
* de la sesión colaborativa de búsqueda.</td>
* </tr>
*
* </table>
*
*/
public void notifyPuttingQueryTermsTogether(SynchronousAwarenessEvent evt);
/**
* Notifica a la aplicación del cliente el cambio de la consulta PQT de un
* seeker de la sesion colaborativa de búsqueda.
*
* @param evt instancia de SynchronousAwarenessEvent
*
* <br><br>
* El objeto SynchronousAwarenessEvent contiene la información sobre los nuevos términos
* de consulta.
*
* <br><pre>
* public void notifyQueryChange(SynchronousAwarenessEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
*
* ...
* ..
* }
*
* 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>
*
* <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><code>SEEKER_NICKNAME</code></td>
* <td><code>String <code></td>
* <td>Nombre del usuario emisor de la acción.</td>
* </tr>
*
* <tr>
* <td><code>QUERY</code></td>
* <td><code>String <code></td>
* <td>Nueva consulta propuesta por el usuario emisor de la acción.</td>
* </tr>
*
* <tr>
* <td><code>SCORE_PQT</code></td>
* <td><code>Map<String,ScorePQT> <code></td>
* <td>Relación de votos(término, votos) efectuados, por término de la consulta propuesta.</td>
* </tr>
*
* </table>
*
*/
public void notifyQueryChange(SynchronousAwarenessEvent evt);
/**
* Notifica el inicio o fin de la confección(Es decir notifica cuando comienza y termina de escribir)
* de una consulta de búsqueda PQT, por por un miembro de la sesión colaborativa de búsqueda.
*
* @param evt instancia de SynchronousAwarenessEvent
*
* <br><br>
* El objeto SynchronousAwarenessEvent contiene la información relacionada con la confección
* de la consulta de búsqueda PQT.
*
* <br><pre>
* public void notifyQueryTyped(SynchronousAwarenessEvent 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> 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>
*
* <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><code>SEEKER_NICKNAME</code></td>
* <td><code>String <code></td>
* <td>Nombre del usuario emisor de la acción.</td>
* </tr>
*
* <tr>
* <td><code>QUERY_TYPED</code></td>
* <td><code>boolean <code></td>
* <td>true si es el inicio de confección de la consulta, false en caso contrario.</td>
* </tr>
*
* </table>
*/
public void notifyQueryTyped(SynchronousAwarenessEvent evt);
/**
* Notifica la votación de aceptación o no, de un término de la consulta de un seeker, de la sesión
* colaborativa de búsqueda, por otro miembro de la misma.
*
* @param evt instancia de SynchronousAwarenessEvent
*
* <br><br>
* El objeto SynchronousAwarenessEvent contiene la información relacionada
* con el cambio del chairman de una sesión colaborativad de búsqueda.
*
* <br><pre>
* public void notifyChairmanSetting(SynchronousAwarenessEvent evt){
* Response rsp = evt.getResponse();
* String sessionName = rsp.get(SESSION_NAME).toString();
*
* .....
* }
*
* La siguiente tabla muestra la relación de campos(clave-valor) de esta notificación.
* Las constantes clave(key) pertenecen a las clases <b>drakkar.oar.util.KeyTransaction </b>,
* <b>drakkar.oar.util.KeyAwareness</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>
*
* <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><code>SEEKER_NICKNAME</code></td>
* <td><code>String <code></td>
* <td>Nombre del usuario emisor de la acción.</td>
* </tr>
*
* <tr>
* <td><code>QUERY_TERM</code></td>
* <td><code>String <code></td>
* <td>término de la consulta búsqueda propuesta a votar.</td>
* </tr>
*
* <tr>
* <td rowspan= 2><code>DISTRIBUTED_EVENT</code></td>
* <td><code>KeyAwareness.TERM_AGREE<code></td>
* <td>No aceptación del témino de la consulta.</td>
* </tr>
* <tr>
* <td><code>KeyAwareness.TERM_DISAGREE<code></td>
* <td>Aceptación del témino de la consulta.</td>
* </tr>
*
* </table>
*/
public void notifyQueryTermAcceptance(SynchronousAwarenessEvent evt);
}