/*
* 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.stern.servant.service;
import drakkar.oar.ScorePQT;
import drakkar.oar.Seeker;
import drakkar.oar.exception.AwarenessException;
import drakkar.oar.exception.SeekerException;
import drakkar.oar.exception.SessionException;
import java.util.Map;
public interface Perceptionable {
/**
* Enviar un mensaje de notificación para habilitar o inabilitar la creación de
* consulta de búsqueda de forma colaborativa (PQT).
*
* @param sessionName nombre de la sesión colaborativa de búsqueda
* @param event
* @param emitter seeker que emite la acción
* @throws SessionException si la sesión no se encuentra registrada en el servidor
* @throws SeekerException si el usuario emisor no se encuentra registrado en la sesión
* @throws AwarenessException si ocurre un error en el proceso de notificación de la acción
*/
public void sendPuttingQueryTermsTogetherAction(String sessionName, int event, Seeker emitter) throws SessionException, SeekerException, AwarenessException;
/**
* Enviar un mensaje de notificación de cambio de la consulta de búsqueda propuesta por el seeker
*
* @param sessionName nombre de la sesión colaborativa de búsqueda
* @param query consulta de búsqueda propuesta
* @param statistics relación de votos por término de la consulta
* @param emitter seeker que emite la acción
* @throws SessionException si la sesión no se encuentra registrada en el servidor
* @throws SeekerException si el usuario emisor no se encuentra registrado en la sesión
* @throws AwarenessException si ocurre un error en el proceso de notificación de la acción
*/
public void sendQueryChangeAction(String sessionName, String query, Map<String, ScorePQT> statistics, Seeker emitter) throws SessionException, SeekerException, AwarenessException;
/**
* Enviar un mensaje de notificación para informar a los miembros de la sesión colaborativa, que el seeker
* está modificando su consulta de búsqueda propuesta
*
* @param sessionName nombre de la sesión colaborativa de búsqueda
* @param typed true si es el inicio de confección de la consulta, false en caso contrario
* @param emitter seeker que emite la acción
* @throws SessionException si la sesión no se encuentra registrada en el servidor
* @throws SeekerException si el usuario emisor no se encuentra registrado en la sesión
* @throws AwarenessException si ocurre un error en el proceso de notificación de la acción
*/
public void sendQueryTypedAction(String sessionName, boolean typed, Seeker emitter) throws SessionException, SeekerException, AwarenessException;
/**
* Enviar un mensaje de notificación para informar a los miembros de la sesión colaborativa, el voto del seeker
* sobre un término de la consulta propuesta por otro seeker
*
* @param sessionName nombre de la sesión colaborativa de búsqueda
* @param term término de la consulta búsqueda propuesta a votar
* @param event tipo de evento, KeyAwareness.TERM_AGREE para aceptar el término, KeyAwareness.TERM_DISAGREE en caso contrario
* @param user usario que propone el término
* @param emitter seeker que emite la acción
* @throws SessionException si la sesión no se encuentra registrada en el servidor
* @throws SeekerException si el usuario emisor no se encuentra registrado en la sesión
* @throws AwarenessException si ocurre un error en el proceso de notificación de la acción
*/
public void sendTermAcceptanceAction(String sessionName, String term, int event, String user, Seeker emitter) throws SessionException, SeekerException, AwarenessException;
}