/*
* 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.RecommendTracker;
import drakkar.oar.SearchTracker;
import drakkar.oar.Seeker;
import drakkar.oar.SeekerQuery;
import drakkar.oar.exception.QueryNotExistException;
import drakkar.oar.exception.SeekerException;
import drakkar.oar.exception.TrackException;
import drakkar.oar.slice.client.ClientSidePrx;
import static drakkar.oar.util.KeyMessage.*;
import static drakkar.oar.util.KeySession.*;
import drakkar.oar.util.OutputMonitor;
import drakkar.stern.ResponseTrackerFactory;
import drakkar.stern.ResponseUtilFactory;
import drakkar.stern.callback.NotifyAMICallback;
import drakkar.stern.controller.DataBaseController;
import drakkar.stern.facade.event.FacadeListener;
import drakkar.stern.tracker.cache.SeekerRecommends;
import drakkar.stern.tracker.cache.SeekerSearchResults;
import drakkar.stern.tracker.cache.SessionProfile;
import drakkar.stern.tracker.persistent.DBUtil;
import java.io.IOException;
import java.sql.Date;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
public class Tracker extends Service implements Trackable {
private long trackerCount = 0;
/**
* Constructor de la clase
*
* @param defaultSessionName
* @param collaborativeSessions listado de sesiones
* @param defaultSessionProfile
* @param htTempSessions
*/
public Tracker(String defaultSessionName, SessionProfile defaultSessionProfile, Map<String, SessionProfile> collaborativeSessions, Map<String, SessionProfile> htTempSessions) {
super(defaultSessionName, defaultSessionProfile, collaborativeSessions, htTempSessions);
}
/**
* Constructor de la clase
*
* @param defaultSessionName
* @param defaultSessionProfile
* @param collaborativeSessions listado de sesiones
* @param htTempSessions
* @param dbController
*/
public Tracker(String defaultSessionName, SessionProfile defaultSessionProfile, Map<String, SessionProfile> collaborativeSessions, Map<String, SessionProfile> htTempSessions, DataBaseController dbController) {
super(defaultSessionName, defaultSessionProfile, collaborativeSessions, htTempSessions, dbController);
}
/**
* Constructor de la clase
*
* @param defaultSessionName
* @param collaborativeSessions listado de sesiones
* @param defaultSessionProfile
* @param htTempSessions
* @param listener oyente de la aplicación servidora
* @param dbController
*/
public Tracker(String defaultSessionName, SessionProfile defaultSessionProfile, Map<String, SessionProfile> collaborativeSessions, Map<String, SessionProfile> htTempSessions, FacadeListener listener, DataBaseController dbController) {
super(defaultSessionName, defaultSessionProfile, collaborativeSessions, htTempSessions, listener, dbController);
}
/**
* {@inheritDoc}
*/
public void trackRecommendation(String sessionName, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackRecommendation SessionName: " + sessionName + "]");
List<RecommendTracker> recommend = null;
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*
*/
@Override
public void trackRecommendation(String sessionName, Seeker seeker, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ method: trackRecommendation SessionName: " + sessionName + " Seeker: " + seeker.getUser() + "]");
List<RecommendTracker> recommend = null;
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, seeker);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*
*/
@Override
public void trackRecommendation(String sessionName, Date date, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ method: trackRecommendation SessionName: " + sessionName + " Date: " + date.toString() + "]");
List<RecommendTracker> recommend = null;
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
//cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerRecommends().values.isEmpty()) {
SeekerRecommends recommends = profile.getSeekerRecommends();
recommend = this.getRecommendData(recommends);
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
/**
* Obtener todas las recomendaciones de toda la sesión
*/
private List<RecommendTracker> getRecommendData(SeekerRecommends srec) {
List<RecommendTracker> list = srec.getRecommendations();
return list;
}
/**
* Obtener todas las recomendaciones de toda la sesión
*/
private List<RecommendTracker> getRecommendData(SeekerRecommends srec, String query) {
List<RecommendTracker> list = srec.getRecommendations(query);
return list;
}
/**
* Obtener todas las recomendaciones de toda la sesión
*/
private List<RecommendTracker> getRecommendData(SeekerRecommends srec, Seeker seeker) {
List<RecommendTracker> list = srec.getRecommendations(seeker);
return list;
}
/**
* Obtener todas las recomendaciones de toda la sesión
*/
private List<RecommendTracker> getRecommendData(SeekerRecommends srec, String query, Seeker seeker) {
List<RecommendTracker> list = srec.getRecommendations(query, seeker);
return list;
}
/**
* {@inheritDoc}
*/
@Override
public void trackRecommendation(String sessionName, String query, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackRecommendation SessionName: " + sessionName + " Query: " + query + "]");
List<RecommendTracker> recommend = null;
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, query);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackRecommendation(String sessionName, Seeker seeker, String query, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackRecommendation SessionName: " + sessionName + " Seeker: " + seeker.getUser() + " Query: " + query + "]");
List<RecommendTracker> recommend = null;
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, seeker, query);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackRecommendation(String sessionName, String query, Date date, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackRecommendation SessionName: " + sessionName + " Date: " + date.toString() + " Query: " + query + "]");
List<RecommendTracker> recommend = null;
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
//cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerRecommends().values.isEmpty()) {
SeekerRecommends recommends = profile.getSeekerRecommends();
recommend = this.getRecommendData(recommends, query);
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, query, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, query, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackRecommendation(String sessionName, Seeker seeker, Date date, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackRecommendation SessionName: " + sessionName + " Date: " + date.toString() + " Seeker: " + seeker.getUser() + "]");
List<RecommendTracker> recommend = null;
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
//cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerRecommends().values.isEmpty()) {
SeekerRecommends recommends = profile.getSeekerRecommends();
recommend = this.getRecommendData(recommends, seeker);
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, seeker, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, seeker, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackRecommendation(String sessionName, Seeker seeker, Date date, String query, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackRecommendation SessionName: " + sessionName + " Date: " + date.toString() + " Query: " + query +" Seeker: "+seeker.getUser() +"]");
List<RecommendTracker> recommend = null;
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
//cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerRecommends().values.isEmpty()) {
SeekerRecommends recommends = profile.getSeekerRecommends();
recommend = this.getRecommendData(recommends, query, seeker);
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, seeker, query, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
recommend = dbController.getTrackRecommendation(sessionName, seeker, query, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifyRecommendation(sessionName, recommend, emitter, emitterPrx);
}
//////////////////////////////////////////////////////////
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackSearch SessionName: " + sessionName + " Group: " + group + "]");
List<SearchTracker> search = null;
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, Seeker seeker, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
List<SearchTracker> search = null;
OutputMonitor.printLine("Tracker[ Method: trackSearch Seeker: " + seeker.getUser() + " SessionName: " + sessionName + " Group: " + group + "]");
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, seeker, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, Date date, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
List<SearchTracker> search = null;
OutputMonitor.printLine("Tracker[ Method: trackSearch Date:" + date.toString() + " SessionName: " + sessionName + " Group: " + group +" Date: "+date.toString() +"]");
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
//cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerSearchResults().record.isEmpty()) {
SeekerSearchResults searchResults = profile.getSeekerSearchResults();
search = searchResults.getSearchResults();
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, date, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, date, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, String query, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackSearch Query: " + query + " SessionName: " + sessionName + " Group: " + group + "]");
List<SearchTracker> search = null;
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, query, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, Seeker seeker, String query, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackSearch Seeker: " + seeker.getUser() + " Query: " + query + " SessionName: " + sessionName + " Group: " + group + "]");
List<SearchTracker> search = null;
// obtener de la BD
if (dbController != null && dbController.isOpen()) {
try {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, seeker, query, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, String query, Date date, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackSearch Date: " + date.toString() + "Query: " + query + " SessionName: " + sessionName + " Group: " + group + "]");
List<SearchTracker> search = null;
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerSearchResults().record.isEmpty()) {
SeekerSearchResults searchResults = profile.getSeekerSearchResults();
try {
search = searchResults.getSearchResults(query, group);
} catch (QueryNotExistException ex) {
throw new TrackException(ex.getMessage());
}
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, query, date, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, query, date, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, Seeker seeker, Date date, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackSearch Date: " + date.toString() + " Seeker: " + seeker.getUser() + " SessionName: " + sessionName + " Group: " + group + "]");
List<SearchTracker> search = null;
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
//cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerSearchResults().record.isEmpty()) {
SeekerSearchResults searchResults = profile.getSeekerSearchResults();
try {
search = searchResults.getSearchResults(seeker, group);
} catch (SeekerException ex) {
throw new TrackException(ex.getMessage());
}
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, seeker, date, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, seeker, date, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*/
@Override
public void trackSearch(String sessionName, Seeker seeker, Date date, String query, int group, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ Method: trackSearch Date: " + date.toString() + " Query: " + query + " Seeker: " + seeker.getUser() + " Group: " + group + "]");
List<SearchTracker> search = null;
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
//cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerSearchResults().record.isEmpty()) {
SeekerSearchResults searchResults = profile.getSeekerSearchResults();
try {
search = searchResults.getSearchResults(query, seeker, group);
} catch ( SeekerException | QueryNotExistException ex) {
throw new TrackException(ex.getMessage());
}
} else if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, seeker, date, query, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
search = dbController.getTrackSearch(sessionName, seeker, date, query, group);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifySearch(sessionName, search, emitter, emitterPrx);
}
/**
* {@inheritDoc}
*
* @param emitterPrx
*/
@Override
public void trackSession(String sessionName, Date date, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
OutputMonitor.printLine("Tracker[ method: trackSession Date: " + date.toString() + "Session: " + sessionName + "]");
SeekerQuery result = new SeekerQuery();
try {
if (date.toString().equals(DBUtil.getCurrentDate().toString())) { //cache
SessionProfile profile = getTrackSessionProfile(sessionName);
if (profile != null && !profile.getSeekerSearchResults().record.isEmpty()) {
SeekerSearchResults searchResults = profile.getSeekerSearchResults();
result = searchResults.getSeekerQuery();
} else if (dbController != null && dbController.isOpen() && dbController.existSession(sessionName)) {
result = this.dbController.getSeekerQueries(sessionName, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
if (dbController != null && dbController.isOpen()) {
if (dbController.existSession(sessionName)) {
result = this.dbController.getSeekerQueries(sessionName, date);
} else {
throw new TrackException("La sesión " + sessionName + "no existe.");
}
} else {
throw new TrackException("Conexión DB cerrada.");
}
}
} catch (SQLException ex) {
throw new TrackException(ex.getMessage());
}
this.notifySession(sessionName, result, emitter, emitterPrx);
}
/**
*
* @return
*/
public String getDefaultSession() {
return defaultSessionName;
}
/**
*
* @param defaultSession
*/
public void setDefaultSession(String defaultSession) {
this.defaultSessionName = defaultSession;
}
/**
*
* @return
*/
public long getTrackerCount() {
return trackerCount;
}
/**
*
* @param trackerCount
*/
public void setTrackerCount(long trackerCount) {
this.trackerCount = trackerCount;
}
/**
*
* @param sessionName
* @param search
* @param emitter
* @param emitterPrx
* @throws TrackException
*/
public void notifySearch(String sessionName, List<SearchTracker> search, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
if (search != null) {
try {
byte[] array = ResponseTrackerFactory.getResponse(sessionName, COLLAB_SEARCH_TRACK, search).toArray();
OutputMonitor.printLine("Tracker: notifySearch Total of Documents: " + search.size());
emitterPrx.notify_async(new NotifyAMICallback(emitter, "notifySearch"), array);
} catch (IOException ex) {
throw new TrackException(ex.getMessage());
}
} else {
try {
byte[] array = ResponseUtilFactory.getResponse(INFORMATION_MESSAGE, "No existen búsquedas para la sesión.").toArray();
emitterPrx.notify_async(new NotifyAMICallback(emitter, "notifySearch"), array);
} catch (IOException ex) {
throw new TrackException(ex.getMessage());
}
}
}
/**
*
* @param sessionName
* @param seekerQuery
* @param emitter
* @param emitterPrx
* @throws TrackException
*/
public void notifySession(String sessionName, SeekerQuery seekerQuery, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
if (seekerQuery != null) {
try {
byte[] array = ResponseTrackerFactory.getResponse(sessionName, seekerQuery).toArray();
OutputMonitor.printLine("Tracker: notifySession Total of Queries: " + seekerQuery.getQueries().size());
emitterPrx.notify_async(new NotifyAMICallback(emitter, "notifySession"), array);
} catch (IOException ex) {
throw new TrackException(ex.getMessage());
}
} else {
try {
byte[] array = ResponseUtilFactory.getResponse(INFORMATION_MESSAGE, "No existen búsquedas para la sesión.").toArray();
emitterPrx.notify_async(new NotifyAMICallback(emitter, "notifySession"), array);
} catch (IOException ex) {
throw new TrackException(ex.getMessage());
}
}
}
/**
*
* @param sessionName
* @param recommend
* @param emitter
* @param emitterPrx
* @throws TrackException
*/
public void notifyRecommendation(String sessionName, List<RecommendTracker> recommend, Seeker emitter, ClientSidePrx emitterPrx) throws TrackException {
if (recommend != null) {
try {
byte[] array = ResponseTrackerFactory.getResponse(sessionName, COLLAB_RECOMMENDATION_TRACK, recommend).toArray();
OutputMonitor.printLine("Tracker: notifyRecommendation Total of recommendations: " + recommend.size());
emitterPrx.notify_async(new NotifyAMICallback(emitter, "notifyRecommendation"), array);
} catch (IOException ex) {
throw new TrackException(ex.getMessage());
}
} else {
try {
byte[] array = ResponseUtilFactory.getResponse(INFORMATION_MESSAGE, "No existen recomendaciones para la sesión.").toArray();
emitterPrx.notify_async(new NotifyAMICallback(emitter, "notifyRecommendation"), array);
} catch (IOException ex) {
throw new TrackException(ex.getMessage());
}
}
}
private SessionProfile getTrackSessionProfile(String sessionName) {
SessionProfile profile = collaborativeSessions.get(sessionName);
if (profile.getSeekerSearchResults().record.isEmpty()) {
profile = htTempSessions.get(sessionName);
}
return profile;
}
}