/*
* 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;
import drakkar.oar.Request;
import drakkar.oar.ScorePQT;
import static drakkar.oar.util.KeyTransaction.*;
import static drakkar.oar.util.SeekerAction.*;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* Esta clase es permite construir objetos Request para invocar las diferentes
* técnicas de awareness soportados por DrakkarKeel para la mensajería
*/
public class RequestSyncAwarenessFactory implements Serializable{
private static final long serialVersionUID = 80000000000011L;
/**
* Devuelve un objeto Request para notificar el cambio de la consulta de un seeker,
* al resto de su sesión de colaboración. Este métdo es utilizado putting query-terms together (PQT).
*
* @param sessionName nombre de la sesión
* @param query términos de la consulta
* @param statistics relación de las estadísticas de los términos de la consulta
* @return objeto request
*
*/
public static Request getRFQueryChange(String sessionName, String query, Map<String, ScorePQT> statistics) {
Map<Object, Object> hash = new HashMap<>(4);
hash.put(OPERATION, SEND_ACTION_QUERY_CHANGE);
hash.put(SESSION_NAME, sessionName);
hash.put(QUERY, query);
hash.put(SCORE_PQT, statistics);
return new Request(hash);
}
/**
* Devuelve un objeto Request para notificar la acción de confección de la consulta de un seeker,
* al resto de su sesión de colaboración. Este métdo es utilizado putting query-terms together (PQT).
*
* @param sessionName nombre de la sesión
* @param flag true si encuentra escribiendo la consulta, false en caso contrario
* @return objeto request
*/
public static Request getRFQueryTyped(String sessionName, boolean flag) {
Map<Object, Object> hash = new HashMap<>(4);
hash.put(OPERATION, SEND_ACTION_QUERY_TYPED);
hash.put(SESSION_NAME, sessionName);
hash.put(QUERY_TYPED, flag);
return new Request(hash);
}
/**
* Devuelve un objeto Request para notificar la acción de aceptar un término de consulta
* especificado por un seeker, a toda la sesión de colaboración. Este métdo es utilizado
* en putting query-terms together (PQT).
*
* @param sessionName nombre de la sesión
* @param term término de la consulta
* @param user usuario que propone el término
*
* @param aceptance SeekerAction.TERM_AGREE para aceptar el término, SeekerAction.TERM_DISAGREE en caso contrario
* @return objeto request
*/
public static Request getRFQueryTermAcceptance(String sessionName, String term, String user, int aceptance) {
Map<Object, Object> hash = new HashMap<>(5);
hash.put(OPERATION, SEND_ACTION_TERM_ACCEPTANCE);
hash.put(DISTRIBUTED_EVENT, aceptance);
hash.put(SESSION_NAME, sessionName);
hash.put(QUERY_TERM, term);
hash.put(SEEKER_NICKNAME, user);
return new Request(hash);
}
/**
* Devuelve un objeto Request para notificar la acción de creación de consulta de búsqueda
* de forma colaborativa (PQT).
*
* @param sessionName nombre de la sesión
* @param event true, para activar PQT, false en caso contrario
* @return objeto request
*/
public static Request getRFPuttingQueryTermsTogether(String sessionName, int event) {
Map<Object, Object> hash = new HashMap<>(3);
hash.put(OPERATION, PUTTING_QUERY_TERMS_TOGETHER);
hash.put(SESSION_NAME, sessionName);
hash.put(DISTRIBUTED_EVENT, event);
return new Request(hash);
}
}