/* * 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.Seeker; import static drakkar.oar.util.KeyTransaction.*; import static drakkar.oar.util.SeekerAction.*; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Esta clase es permite construir objetos Request para efectuar las diferentes * operaciones soportados por DrakkarKeel referente a sesiones de búsquedas individuales * ó colaborativas */ public class RequestSessionFactory implements Serializable{ private static final long serialVersionUID = 80000000000010L; /** * Devuelve un objeto Request para actualizar la foto del usuario * * @param sessionName nombre de la sesión * @param avatar nueva foto de usuario * * @return objeto request */ public static Request getRFUpdateAvatarSeeker(String sessionName, byte[] avatar) { Map<Object, Object> hash = new HashMap<>(3); hash.put(OPERATION, UPDATE_AVATAR_SEEKER); hash.put(SESSION_NAME, sessionName); hash.put(SEEKER_AVATAR, avatar); return new Request(hash); } /** * Devuelve un objeto Request para salir de una sesión collaborativa de búsqueda * * @param sessionName nombre de la sesión collaborativa de búsqueda * * @return objeto request */ public static Request getRFLogoutCollabSession(String sessionName) { Map<Object, Object> hash = new HashMap<>(2); hash.put(OPERATION, LOGOUT_COLLAB_SESSION); hash.put(SESSION_NAME, sessionName); return new Request(hash); } /** * * @param sessionName * @return */ public static Request getRFCloseCollabSession(String sessionName) { Map<Object, Object> hash = new HashMap<>(2); hash.put(OPERATION, CLOSE_COLLAB_SESSION); hash.put(SESSION_NAME, sessionName); return new Request(hash); } /** * * @param sessionName * @return */ public static Request getRFDeclineSeekerCollabSession(String sessionName) { Map<Object, Object> hash = new HashMap<>(2); hash.put(OPERATION, DECLINE_SEEKER_COLLAB_SESSION); hash.put(SESSION_NAME, sessionName); return new Request(hash); } /** * Devuelve un objeto Request para crear una nueva sesión collaborativa de búsqueda * * @param newSessionName nombre de la nueva sesión * @param description descripción de la sesión * @param membersMinNumber cantidad mínima de miembros * @param membersMaxNumber cantidad máxima de miembros * @param integrityCriteria criterio de integridad de la sesión, posibles * valores <SESSION_SOFT,SESSION_HARD>,ambos definidos * en la clase SessionAssignable * @param membershipPolicy política de membresía de la sesión, posibles valores * <SESSION_STATIC,SESSION_DYNAMIC_AND_CLOSE,SESSION_DYNAMIC_AND_OPEN>, * definidos en la clase SessionAssignable * @param members lista de miembro a integrar la sesión * * @see SessionAssignable * @return objeto request * */ public static Request getRFCreateCollabSession(String newSessionName, String description, int membersMinNumber, int membersMaxNumber, int integrityCriteria, int membershipPolicy, List<Seeker> members) { Map<Object, Object> hash = new HashMap<>(7); hash.put(OPERATION, CREATE_COLLAB_SESSION); hash.put(SESSION_NAME, newSessionName); hash.put(MEMBERS_MIN_NUMBER, membersMinNumber); hash.put(MEMBERS_MAX_NUMBER, membersMaxNumber); hash.put(INTEGRITY_CRITERIA, integrityCriteria); hash.put(MEMBERSHIP_POLICY, membershipPolicy); hash.put(SEEKERS_SESSION, members); hash.put(SESSION_DESCRIPTION, description); return new Request(hash); } /** * Devuelve un objeto Request para para la unión de un usuario a una sesión * colaborativa de búsqueda ó la solitud de admisión si la normativas de esta, * no soportan la entrada libre de cualquier usuario. * * @param sessionName nombre de la sesión a la cual se desea unir * * @return objeto request */ public static Request getRFJoinCollabSession(String sessionName) { Map<Object, Object> hash = new HashMap<>(2); hash.put(OPERATION, JOIN_COLLAB_SESSION); hash.put(SESSION_NAME, sessionName); return new Request(hash); } /** * Devuelve un objeto Request para para que un usuario entre a una sesión * colaborativa de búsqueda, a la cual ya pertenece. * * @param sessionName nombre de la sesión a la cual pertenece * * @return objeto request */ public static Request getRFEnterCollabSession(String sessionName) { Map<Object, Object> hash = new HashMap<>(2); hash.put(OPERATION, ENTER_COLLAB_SESSION); hash.put(SESSION_NAME, sessionName); return new Request(hash); } /** * Devuelve un objeto Request para actualizar el estado de un usuario a todos * los miembros de su sesión. * * @param sessionName nombre de la sesión * @param status nuevo estado del miembro. * * @return objeto request * */ public static Request getRFUpdateSeekerState(String sessionName, int status) { Map<Object, Object> hash = new HashMap<>(3); hash.put(OPERATION, UPDATE_STATE_SEEKER); hash.put(SESSION_NAME, sessionName); hash.put(SEEKER_STATE, status); return new Request(hash); } /** * Devuelve un objeto Request para notificar la admisión de un miembro en una sesión. * * @param sessionName nombre de la sesión * @param seeker miembro que solicitó la admisión * * @return objeto request * */ public static Request getRFAdmissionCollabSession(String sessionName, Seeker seeker) { Map<Object, Object> hash = new HashMap<>(3); hash.put(OPERATION, NOTIFY_ADMISSION_COLLAB_SESSION); hash.put(SESSION_NAME, sessionName); hash.put(SEEKER_NOTIFY, seeker); return new Request(hash); } /** * Devuelve un objeto Request para notificar la no admisión de un miembro en una sesión. * * @param sessionName nombre de la sesión * @param seeker miembro que solicitó la admisión * * @return objeto request * */ public static Request getRFNoAdmissionCollabSession(String sessionName, Seeker seeker) { Map<Object, Object> hash = new HashMap<>(3); hash.put(OPERATION, NOTIFY_NO_ADMISSION_COLLAB_SESSION); hash.put(SESSION_NAME, sessionName); hash.put(SEEKER_NOTIFY, seeker); return new Request(hash); } /** * Devuelve un objeto Request para solicitar la lista de usuarios de una sesión. * * @param sessionName nombre de la sesión * * @return objeto request */ public static Request getRFSeekerList(String sessionName) { Map<Object, Object> hash = new HashMap<>(3); hash.put(OPERATION, GET_ONLINE_SEEKERS); hash.put(SESSION_NAME, sessionName); return new Request(hash); } /** * Devuelve un objeto Request para finalizar una sesión colaborativa de búsqueda. * * @param sessionName nombre de la sesión de búsqueda * * @return objeto request */ public static Request getRFFinalizeCollabSession(String sessionName) { Map<Object, Object> hash = new HashMap<>(2); hash.put(OPERATION, FINALIZE_COLLABORATIVE_SESSION); hash.put(SESSION_NAME, sessionName); return new Request(hash); } /** * Devuelve un objeto Request para notificar al servidor la revisión de un documento. * * @param sessionName nombre de la sesión. * @param query consulta de la búsqueda por la cual se obtuvo el docuemento * @param docIndex índice del documento revisado * @param searcher id del buscador que encontró el documento * * @param uri * @return objeto request */ public static Request getRFNotifyDocViewed(String sessionName, String query ,int docIndex, int searcher, String uri) { Map<Object, Object> hash = new HashMap<>(5); hash.put(OPERATION, NOTIFY_DOCUMENT_VIEWED); hash.put(SESSION_NAME, sessionName); hash.put(QUERY, query); hash.put(DOC_INDEX, docIndex); hash.put(SEARCHER, searcher); hash.put(URI, uri); return new Request(hash); } /** * Devuelve un objeto Request para notificar al servidor la evaluación de un documento. * * @param sessionName nombre de la sesión. * @param query consulta de la búsqueda por la cual se obtuvo el docuemento * @param docIndex índice del documento revisado. * @param relevance calificación dada al documento por su relevancia. * @param searcher id del buscador que encontró el documento * @param source fuente del documento: caché, BD, recomendación * * @param uri * @return objeto request */ public static Request getRFDocEvaluated(String sessionName, String query, int docIndex, byte relevance, int searcher, int source, String uri) { Map<Object, Object> hash = new HashMap<>(5); hash.put(OPERATION, NOTIFY_DOCUMENT_EVALUATED); hash.put(SESSION_NAME, sessionName); hash.put(QUERY, query); hash.put(DOC_INDEX, docIndex); hash.put(SEARCHER, searcher); hash.put(RELEVANCE, relevance); hash.put(SEARCH_RESULT_SOURCE, source); hash.put(URI, uri); return new Request(hash); } /** * Devuelve un objeto Request para notificae al servidor un comentario efectuado sobre un documento. * * @param sessionName nombre de la sesión * @param query consulta de la búsqueda por la cual se obtuvo el docuemento * @param docIndex índice del documento revisado * @param searcher id del buscador que encontró el documento * @param comment comentario del documento * * @param source fuente del documento: caché, BD, recomendación * * @param uri * @return objeto request */ public static Request getRFDocCommented(String sessionName, String query, int docIndex, int searcher, String comment, int source, String uri) { Map<Object, Object> hash = new HashMap<>(6); hash.put(OPERATION, NOTIFY_DOCUMENT_COMMENTED); hash.put(SESSION_NAME, sessionName); hash.put(QUERY, query); hash.put(DOC_INDEX, docIndex); hash.put(SEARCHER, searcher); hash.put(COMMENT, comment); hash.put(SEARCH_RESULT_SOURCE, source); hash.put(URI, uri); return new Request(hash); } }