/*
* 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.mast.retrieval;
import drakkar.oar.DocumentMetaData;
import drakkar.oar.Response;
import drakkar.oar.facade.event.FacadeDesktopEvent;
import drakkar.oar.facade.event.FacadeDesktopListener;
import static drakkar.oar.util.KeyTransaction.*;
import drakkar.oar.util.NotifyAction;
import drakkar.mast.IndexException;
import drakkar.mast.SearchException;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
/**
* Clase abstracta para los CVS
*
*/
public abstract class CVSContextable implements Contextable {
protected FacadeDesktopListener listener;
/**
*
*/
public String defaultIndexPath;
/**
*
*/
public CVSContextable() {
}
/**
*
* @param listener
*/
public CVSContextable(FacadeDesktopListener listener) {
this.listener = listener;
}
/**
* Crea un índice del repositorio SVN en la dirección por defecto
*
* @return cantidad de documentos indexados
*
* @throws IndexException si ocurre algún error en el proceso de indexación
*/
public abstract long makeIndex() throws IndexException;
/**
* Carga el índice que se encuentra en la ubicación por defecto
*
* @return true si cargó el índice de la dirección especificada, false en caso contrario
*
* @throws IndexException si ocurre algún error en el proceso de carga del indice
* @throws IOException
*/
public abstract boolean loadIndex() throws IndexException, IOException;
/**
* Carga el índice que se encuentra en la ubicación especificada
*
* @param indexPath dirección del índice
*
* @return true si cargó el índice de la dirección especificada, false en caso contrario
*
* @throws IndexException si ocurre algún error en el proceso de carga del indice
* @throws IOException
*/
public abstract boolean loadIndex(File indexPath) throws IndexException, IOException;
/**
* Ejecuta una búsqueda a partir de los parámetros de entrada
*
* @param query consulta
*
* @param sort
* @param fileType
* @param date
* @param user
* @param fileBody
* @return resultados de la búsqueda
*
* @throws SearchException si ocurre alguna excepción durante el proceso de búsqueda
*/
public abstract ArrayList<DocumentMetaData> search(String query, String sort, String fileType, String date, String user, boolean fileBody) throws SearchException;
/////////////////////////////////////////////
/**
* Este método notifica al servidor el progreso de las actividades invocadas
* para actualizar el tablón de Log y Monitor.
*
* @param messageType tipo de mensage:<tt>INFORMATION_MESSAGE,ERROR_MESSAGE</tt>
* @param message contenido del mensaje
*/
public void notifyTaskProgress(int messageType, String message) {
if (listener != null) {
Response rs = new Response();
rs.put(OPERATION, NotifyAction.NOTIFY_TEXT_MESSAGE);
rs.put(MESSAGE_TYPE, messageType);
rs.put(MESSAGE, message);
FacadeDesktopEvent evt = new FacadeDesktopEvent(this, rs);
listener.notify(evt);
}
}
/**
* Este método notifica al servidor el progreso de la indexación de documentos
* @param count
*/
public void notifyLoadedDocument(int count) {
if (listener != null) {
Response rs = new Response();
rs.put(OPERATION, NotifyAction.NOTIFY_LOADED_DOCUMENT);
rs.put(VALUE, count);
FacadeDesktopEvent evt = new FacadeDesktopEvent(this, rs);
listener.notify(evt);
}
}
/**
*
* @param count
*/
public void notifyIndexedDocument(int count) {
if (listener != null) {
Response rs = new Response();
rs.put(OPERATION, NotifyAction.NOTIFY_INDEXED_DOCUMENT_COUNT);
rs.put(VALUE, count);
FacadeDesktopEvent evt = new FacadeDesktopEvent(this, rs);
listener.notify(evt);
}
}
}