#ifndef OPIE_DATE_BOOK_ACCESS_BACKEND_SQL__H #define OPIE_DATE_BOOK_ACCESS_BACKEND_SQL__H #include #include #include "odatebookaccessbackend.h" namespace Opie { namespace DB { class OSQLDriver; }} /** * This is the default SQL implementation for DateBoook SQL storage * It fully implements the interface * @see ODateBookAccessBackend * @see OPimAccessBackend */ class ODateBookAccessBackend_SQL : public ODateBookAccessBackend { public: ODateBookAccessBackend_SQL( const QString& appName, const QString& fileName = QString::null); ~ODateBookAccessBackend_SQL(); bool load(); bool reload(); bool save(); QArray allRecords()const; QArray matchRegexp(const QRegExp &r) const; QArray queryByExample( const OEvent&, int, const QDateTime& d = QDateTime() ); OEvent find( int uid )const; void clear(); bool add( const OEvent& ev ); bool remove( int uid ); bool replace( const OEvent& ev ); QArray rawEvents()const; QArray rawRepeats()const; QArray nonRepeats()const; OEvent::ValueList directNonRepeats(); OEvent::ValueList directRawRepeats(); private: bool loadFile(); QString m_fileName; QArray m_uids; QMap m_fieldMap; QMap m_reverseFieldMap; Opie::DB::OSQLDriver* m_driver; class Private; Private *d; void initFields(); void update(); QArray extractUids( Opie::DB::OSQLResult& res ) const; }; #endif