#ifndef OPIE_PIM_ACCESS_TEMPLATE_H #define OPIE_PIM_ACCESS_TEMPLATE_H #include #include #include #include #include "otemplatebase.h" template class OPimAccessTemplate : public OTemplateBase { public: typedef ORecordList List; typedef OPimAccessBackend BackEnd; OPimAccessTemplate( BackEnd* end); virtual ~OPimAccessTemplate(); virtual void load(); virtual void reload(); virtual void save(); /* *do array to Records conversion * QArray ids */ virtual List allRecords()const; virtual List queryByExample( const T& t, int sortOrder ); virtual T find( int uid ); /* invalidate cache here */ virtual void clear() ; virtual bool add( const T& t ) ; /* only the uid matters */ virtual bool remove( const T& t ); virtual bool remove( int uid ); virtual bool replace( const T& t) ; protected: void invalidateCache(); BackEnd* backEnd(); BackEnd* m_backEnd; }; template OPimAccessTemplate::OPimAccessTemplate( BackEnd* end ) : OTemplateBase(), m_backEnd( end ) { } template OPimAccessTemplate::~OPimAccessTemplate() { qWarning("~OPimAccessTemplate"); delete m_backEnd; } template void OPimAccessTemplate::load() { m_backEnd->load(); } template void OPimAccessTemplate::reload() { m_backEnd->reload(); } template void OPimAccessTemplate::save() { m_backEnd->save(); } template OPimAccessTemplate::List OPimAccessTemplate::allRecords()const { QArray ints = m_backEnd->allRecords(); List lis(ints, this ); return lis; } template OPimAccessTemplate::List OPimAccessTemplate::queryByExample( const T& t, int sortOrder ) { QArray ints = m_backEnd->queryByExample( t, sortOrder ); List lis(ints, this ); return lis; } template T OPimAccessTemplate::find( int uid ) { T t = m_backEnd->find( uid ); return t; } template void OPimAccessTemplate::clear() { invalidateCache(); m_backEnd->clear(); } template bool OPimAccessTemplate::add( const T& t ) { return m_backEnd->add( t ); } template bool OPimAccessTemplate::remove( const T& t ) { return m_backEnd->remove( t.uid() ); } template bool OPimAccessTemplate::remove( int uid ) { return m_backEnd->remove( uid ); } template bool OPimAccessTemplate::replace( const T& t ) { return m_backEnd->replace( t ); } template void OPimAccessTemplate::invalidateCache() { } template OPimAccessTemplate::BackEnd* OPimAccessTemplate::backEnd() { return m_backEnd; } #endif