extratorTXT.h 1.73 KB
/**
 * \file extratorTXT.h
 *
 * \author Erickson Silva <erickson.silva@lavid.ufpb.br>
 * \date 2014
 */

#ifndef EXTRATORTXT_H
#define	EXTRATORTXT_H

#include <list>
#include "jthread.h"
#include "extrator.h"
#include "listenerTXT.h"
#include "extratorException.h"

#define TEMP_TXT "/tmp/temptxt.txt"

using namespace jthread;
using namespace std;

/** \brief Classe que implementa o extrator de texto.
*
* Instâncias desta classe extraem o conteúdo de
* arquivos txt.
*
* \headerfile extrator/src/include/extratorTXT.h
*/
class ExtratorTXT: public Extrator, public Thread {

public:
    /** Construtor */
    ExtratorTXT();

    /** Destrutor */
    ~ExtratorTXT();

    /** Adiciona ouvintes do extratorTXT.
     *
     * \param listener O ouvinte a ser registrado.
     */
    void addListener(ListenerTXT* listener);

    /** Notifica os ouvintes sobre novas extrações realizadas.
     *
     * \param line A linha extraída.
     */
    void notifyListeners(unsigned char* line);

    /** Notifica o fim da extração do texto.
     *
     * \param size Quantidade de linhas extraídas.
     */
    void notifyEndExtraction(int size);

    /** Define o path do arquivo de entrada.
     *
     * \param path O path do arquivo.
     */
    void setFilePath(char* path);

    /** Inicializa o processo de extração do texto.
     *
     * \exception ExtratorException caso o arquivo de texto não seja encontrado.
     */
    void initialize();

    /** Indica o fim do processo de extração do texto.
     *
     * \return O status do do processo.
     */
    bool isFinished();

    /** Este método é chamado quando a Thread for iniciada. */
    void Run();

private:
	list<ListenerTXT*> *listeners;
  void encodingfiletoUTF8();
};

#endif	/* EXTRATORTXT_H */