summaryrefslogtreecommitdiff
path: root/libopie
Unidiff
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/opimaccessbackend.h16
-rw-r--r--libopie/pim/opimaccesstemplate.h7
-rw-r--r--libopie/pim/otodoaccesssql.cpp2
3 files changed, 22 insertions, 3 deletions
diff --git a/libopie/pim/opimaccessbackend.h b/libopie/pim/opimaccessbackend.h
index 27d3cb8..0bd2723 100644
--- a/libopie/pim/opimaccessbackend.h
+++ b/libopie/pim/opimaccessbackend.h
@@ -74,34 +74,41 @@ public:
74 virtual bool remove( int uid ) = 0; 74 virtual bool remove( int uid ) = 0;
75 75
76 /** 76 /**
77 * replace a record with T.uid() 77 * replace a record with T.uid()
78 */ 78 */
79 virtual bool replace( const T& t ) = 0; 79 virtual bool replace( const T& t ) = 0;
80 80
81 /* 81 /*
82 * setTheFrontEnd!!! 82 * setTheFrontEnd!!!
83 */ 83 */
84 void setFrontend( Frontend* front ); 84 void setFrontend( Frontend* front );
85 85
86 /**
87 * set the read ahead count
88 */
89 void setReadAhead( uint count );
86protected: 90protected:
87 void cache( const T& t )const; 91 void cache( const T& t )const;
88 92
89 /** 93 /**
90 * use a prime number here! 94 * use a prime number here!
91 */ 95 */
92 void setSaneCacheSize( int ); 96 void setSaneCacheSize( int );
93 97
98 uint readAhead()const;
99
94private: 100private:
95 Frontend* m_front; 101 Frontend* m_front;
102 uint m_read;
96 103
97}; 104};
98 105
99template <class T> 106template <class T>
100OPimAccessBackend<T>::OPimAccessBackend() { 107OPimAccessBackend<T>::OPimAccessBackend() {
101 m_front = 0l; 108 m_front = 0l;
102} 109}
103template <class T> 110template <class T>
104OPimAccessBackend<T>::~OPimAccessBackend() { 111OPimAccessBackend<T>::~OPimAccessBackend() {
105 112
106} 113}
107template <class T> 114template <class T>
@@ -114,14 +121,21 @@ void OPimAccessBackend<T>::cache( const T& t )const {
114 m_front->cache( t ); 121 m_front->cache( t );
115} 122}
116template <class T> 123template <class T>
117void OPimAccessBackend<T>::setSaneCacheSize( int size) { 124void OPimAccessBackend<T>::setSaneCacheSize( int size) {
118 if (m_front ) 125 if (m_front )
119 m_front->setSaneCacheSize( size ); 126 m_front->setSaneCacheSize( size );
120} 127}
121template <class T> 128template <class T>
122T OPimAccessBackend<T>::find( int uid, const QArray<int>&, 129T OPimAccessBackend<T>::find( int uid, const QArray<int>&,
123 uint, Frontend::CacheDirection )const { 130 uint, Frontend::CacheDirection )const {
124 return find( uid ); 131 return find( uid );
125} 132}
126 133template <class T>
134void OPimAccessBackend<T>::setReadAhead( uint count ) {
135 m_read = count;
136}
137template <class T>
138uint OPimAccessBackend<T>::readAhead()const {
139 return m_read;
140}
127#endif 141#endif
diff --git a/libopie/pim/opimaccesstemplate.h b/libopie/pim/opimaccesstemplate.h
index 50cb1e4..c5523a8 100644
--- a/libopie/pim/opimaccesstemplate.h
+++ b/libopie/pim/opimaccesstemplate.h
@@ -56,25 +56,25 @@ public:
56 * You should use the signal handling instead of polling possible changes ! 56 * You should use the signal handling instead of polling possible changes !
57 * zecke: Do you implement a signal for otodoaccess ? 57 * zecke: Do you implement a signal for otodoaccess ?
58 */ 58 */
59 bool wasChangedExternally()const; 59 bool wasChangedExternally()const;
60 60
61 /** 61 /**
62 * return a List of records 62 * return a List of records
63 * you can iterate over them 63 * you can iterate over them
64 */ 64 */
65 virtual List allRecords()const; 65 virtual List allRecords()const;
66 66
67 /** 67 /**
68 * queryByExample. 68 * queryByExample.
69 * @see otodoaccess, ocontactaccess 69 * @see otodoaccess, ocontactaccess
70 */ 70 */
71 virtual List queryByExample( const T& t, int querySettings ); 71 virtual List queryByExample( const T& t, int querySettings );
72 72
73 /** 73 /**
74 * find the OPimRecord uid 74 * find the OPimRecord uid
75 */ 75 */
76 virtual T find( int uid )const; 76 virtual T find( int uid )const;
77 77
78 /** 78 /**
79 * read ahead cache find method ;) 79 * read ahead cache find method ;)
80 */ 80 */
@@ -107,24 +107,25 @@ public:
107 * @param uid The ID of the item to remove 107 * @param uid The ID of the item to remove
108 * @return <i>true</i> if successful. 108 * @return <i>true</i> if successful.
109 */ 109 */
110 virtual bool remove( int uid ); 110 virtual bool remove( int uid );
111 111
112 /** 112 /**
113 * replace T from backend 113 * replace T from backend
114 * @param t The item to replace 114 * @param t The item to replace
115 * @return <i>true</i> if successful. 115 * @return <i>true</i> if successful.
116 */ 116 */
117 virtual bool replace( const T& t) ; 117 virtual bool replace( const T& t) ;
118 118
119 void setReadAhead( uint count );
119 /** 120 /**
120 * @internal 121 * @internal
121 */ 122 */
122 void cache( const T& )const; 123 void cache( const T& )const;
123 void setSaneCacheSize( int ); 124 void setSaneCacheSize( int );
124protected: 125protected:
125 /** 126 /**
126 * invalidate the cache 127 * invalidate the cache
127 */ 128 */
128 void invalidateCache(); 129 void invalidateCache();
129 130
130 void setBackEnd( BackEnd* end ); 131 void setBackEnd( BackEnd* end );
@@ -242,13 +243,17 @@ void OPimAccessTemplate<T>::setBackEnd( BackEnd* end ) {
242 if (m_backEnd ) 243 if (m_backEnd )
243 m_backEnd->setFrontend( this ); 244 m_backEnd->setFrontend( this );
244} 245}
245template <class T> 246template <class T>
246void OPimAccessTemplate<T>::cache( const T& t ) const{ 247void OPimAccessTemplate<T>::cache( const T& t ) const{
247 /* hacky we need to work around the const*/ 248 /* hacky we need to work around the const*/
248 ((OPimAccessTemplate<T>*)this)->m_cache.add( t ); 249 ((OPimAccessTemplate<T>*)this)->m_cache.add( t );
249} 250}
250template <class T> 251template <class T>
251void OPimAccessTemplate<T>::setSaneCacheSize( int size ) { 252void OPimAccessTemplate<T>::setSaneCacheSize( int size ) {
252 m_cache.setSize( size ); 253 m_cache.setSize( size );
253} 254}
255template <class T>
256void OPimAccessTemplate<T>::setReadAhead( uint count ) {
257 m_backEnd->setReadAhead( count );
258}
254#endif 259#endif
diff --git a/libopie/pim/otodoaccesssql.cpp b/libopie/pim/otodoaccesssql.cpp
index 9ef6b7c..8c2ea3a 100644
--- a/libopie/pim/otodoaccesssql.cpp
+++ b/libopie/pim/otodoaccesssql.cpp
@@ -277,27 +277,27 @@ QArray<int> OTodoAccessBackendSQL::allRecords()const {
277 277
278 return m_uids; 278 return m_uids;
279} 279}
280QArray<int> OTodoAccessBackendSQL::queryByExample( const OTodo& , int ){ 280QArray<int> OTodoAccessBackendSQL::queryByExample( const OTodo& , int ){
281 QArray<int> ints(0); 281 QArray<int> ints(0);
282 return ints; 282 return ints;
283} 283}
284OTodo OTodoAccessBackendSQL::find(int uid ) const{ 284OTodo OTodoAccessBackendSQL::find(int uid ) const{
285 FindQuery query( uid ); 285 FindQuery query( uid );
286 return todo( m_driver->query(&query) ); 286 return todo( m_driver->query(&query) );
287 287
288} 288}
289#define CACHE 32
290OTodo OTodoAccessBackendSQL::find( int uid, const QArray<int>& ints, 289OTodo OTodoAccessBackendSQL::find( int uid, const QArray<int>& ints,
291 uint cur, Frontend::CacheDirection dir ) const{ 290 uint cur, Frontend::CacheDirection dir ) const{
291 int CACHE = readAhead();
292 qWarning("searching for %d", uid ); 292 qWarning("searching for %d", uid );
293 QArray<int> search( CACHE ); 293 QArray<int> search( CACHE );
294 uint size =0; 294 uint size =0;
295 OTodo to; 295 OTodo to;
296 296
297 // we try to cache CACHE items 297 // we try to cache CACHE items
298 switch( dir ) { 298 switch( dir ) {
299 /* forward */ 299 /* forward */
300 case 0: 300 case 0:
301 for (uint i = cur; i < ints.count() && size < CACHE; i++ ) { 301 for (uint i = cur; i < ints.count() && size < CACHE; i++ ) {
302 qWarning("size %d %d", size, ints[i] ); 302 qWarning("size %d %d", size, ints[i] );
303 search[size] = ints[i]; 303 search[size] = ints[i];