You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tellico/src/translators/xmlstatehandler.h

346 lines
11 KiB

/***************************************************************************
copyright : (C) 2008 by Robby Stephenson
email : robby@periapsis.org
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of version 2 of the GNU General Public License as *
* published by the Free Software Foundation; *
* *
***************************************************************************/
#ifndef TELLICO_IMPORT_XMLSTATEHANDLER_H
#define TELLICO_IMPORT_XMLSTATEHANDLER_H
#ifdef QT_NO_CAST_ASCII
#define HAD_QT_NO_CAST_ASCII
#undef QT_NO_CAST_ASCII
#endif
#include <tqxml.h>
#ifdef HAD_QT_NO_CAST_ASCII
#define QT_NO_CAST_ASCII
#undef HAD_QT_NO_CAST_ASCII
#endif
#include "../datavectors.h"
namespace Tellico {
namespace Import {
namespace SAX {
class StateData {
public:
TQString text;
TQString error;
TQString ns; // namespace
TQString textBuffer;
uint syntaxVersion;
TQString collTitle;
int collType;
TQString entryName;
Data::CollPtr coll;
Data::FieldVec fields;
Data::FieldPtr currentField;
Data::EntryVec entries;
FilterPtr filter;
Data::BorrowerPtr borrower;
bool defaultFields;
bool loadImages;
bool hasImages;
};
class StateHandler {
public:
StateHandler(StateData* data) : d(data) {}
virtual ~StateHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&) = 0;
virtual bool end(const TQString&, const TQString&, const TQString&) = 0;
StateHandler* nextHandler(const TQString&, const TQString&, const TQString&);
protected:
StateData* d;
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&) { return 0; }
};
class NullHandler : public StateHandler {
public:
NullHandler(StateData* data) : StateHandler(data) {}
virtual ~NullHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&) { return true; }
virtual bool end(const TQString&, const TQString&, const TQString&) { return true; }
};
class RootHandler : public StateHandler {
public:
RootHandler(StateData* data) : StateHandler(data) {}
virtual ~RootHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&) { return true; }
virtual bool end(const TQString&, const TQString&, const TQString&) { return true; }
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class DocumentHandler : public StateHandler {
public:
DocumentHandler(StateData* data) : StateHandler(data) {}
virtual ~DocumentHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class CollectionHandler : public StateHandler {
public:
CollectionHandler(StateData* data) : StateHandler(data) {}
virtual ~CollectionHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class FieldsHandler : public StateHandler {
public:
FieldsHandler(StateData* data) : StateHandler(data) {}
virtual ~FieldsHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class FieldHandler : public StateHandler {
public:
FieldHandler(StateData* data) : StateHandler(data) {}
virtual ~FieldHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class FieldPropertyHandler : public StateHandler {
public:
FieldPropertyHandler(StateData* data) : StateHandler(data) {}
virtual ~FieldPropertyHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
TQString m_propertyName;
};
class BibtexPreambleHandler : public StateHandler {
public:
BibtexPreambleHandler(StateData* data) : StateHandler(data) {}
virtual ~BibtexPreambleHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
};
class BibtexMacrosHandler : public StateHandler {
public:
BibtexMacrosHandler(StateData* data) : StateHandler(data) {}
virtual ~BibtexMacrosHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class BibtexMacroHandler : public StateHandler {
public:
BibtexMacroHandler(StateData* data) : StateHandler(data) {}
virtual ~BibtexMacroHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
TQString m_macroName;
};
class EntryHandler : public StateHandler {
public:
EntryHandler(StateData* data) : StateHandler(data) {}
virtual ~EntryHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class FieldValueContainerHandler : public StateHandler {
public:
FieldValueContainerHandler(StateData* data) : StateHandler(data) {}
virtual ~FieldValueContainerHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class FieldValueHandler : public StateHandler {
public:
FieldValueHandler(StateData* data) : StateHandler(data) {}
virtual ~FieldValueHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
bool m_i18n;
bool m_validateISBN;
};
class DateValueHandler : public StateHandler {
public:
DateValueHandler(StateData* data) : StateHandler(data) {}
virtual ~DateValueHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
};
class TableColumnHandler : public StateHandler {
public:
TableColumnHandler(StateData* data) : StateHandler(data) {}
virtual ~TableColumnHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
};
class ImagesHandler : public StateHandler {
public:
ImagesHandler(StateData* data) : StateHandler(data) {}
virtual ~ImagesHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class ImageHandler : public StateHandler {
public:
ImageHandler(StateData* data) : StateHandler(data) {}
virtual ~ImageHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
TQString m_format;
bool m_link;
TQString m_imageId;
int m_width;
int m_height;
};
class FiltersHandler : public StateHandler {
public:
FiltersHandler(StateData* data) : StateHandler(data) {}
virtual ~FiltersHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class FilterHandler : public StateHandler {
public:
FilterHandler(StateData* data) : StateHandler(data) {}
virtual ~FilterHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class FilterRuleHandler : public StateHandler {
public:
FilterRuleHandler(StateData* data) : StateHandler(data) {}
virtual ~FilterRuleHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
};
class BorrowersHandler : public StateHandler {
public:
BorrowersHandler(StateData* data) : StateHandler(data) {}
virtual ~BorrowersHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class BorrowerHandler : public StateHandler {
public:
BorrowerHandler(StateData* data) : StateHandler(data) {}
virtual ~BorrowerHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
virtual StateHandler* nextHandlerImpl(const TQString&, const TQString&, const TQString&);
};
class LoanHandler : public StateHandler {
public:
LoanHandler(StateData* data) : StateHandler(data) {}
virtual ~LoanHandler() {}
virtual bool start(const TQString&, const TQString&, const TQString&, const TQXmlAttributes&);
virtual bool end(const TQString&, const TQString&, const TQString&);
private:
int m_id;
TQString m_uid;
TQString m_loanDate;
TQString m_dueDate;
bool m_inCalendar;
};
}
}
}
#endif