diff options
Diffstat (limited to 'src/translators/xmlstatehandler.h')
-rw-r--r-- | src/translators/xmlstatehandler.h | 345 |
1 files changed, 345 insertions, 0 deletions
diff --git a/src/translators/xmlstatehandler.h b/src/translators/xmlstatehandler.h new file mode 100644 index 0000000..8b5c137 --- /dev/null +++ b/src/translators/xmlstatehandler.h @@ -0,0 +1,345 @@ +/*************************************************************************** + copyright : (C) 2008 by Robby Stephenson + email : [email protected] + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 |