summaryrefslogtreecommitdiff
authorerik <erik>2007-01-31 21:57:44 (UTC)
committer erik <erik>2007-01-31 21:57:44 (UTC)
commit958e042c5a4d4e38fd1baae50b78a2febfd306ab (patch) (unidiff)
tree7d86d03549cea01b03ce08926624a50fb086890c
parent6b321230cf24e50b11783b3511a457f22ae79a58 (diff)
downloadopie-958e042c5a4d4e38fd1baae50b78a2febfd306ab.zip
opie-958e042c5a4d4e38fd1baae50b78a2febfd306ab.tar.gz
opie-958e042c5a4d4e38fd1baae50b78a2febfd306ab.tar.bz2
The queryByExample member function was not properly overridden by the child
class. This means that the last child in the chain would be called instead. Seeing as how the function is not really implemented in this class I am sure that they do want the override so a user is A. not fooled into thinking it is and B. running into a parent function doing the wrong thing.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp2
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend_sql.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp b/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp
index 629e4da..78c3bf7 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp
+++ b/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp
@@ -162,97 +162,97 @@ bool ODateBookAccessBackend_SQL::load()
162 QMap<int, QString>::Iterator it; 162 QMap<int, QString>::Iterator it;
163 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){ 163 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){
164 qu += QString( ",%1 VARCHAR(10)" ).arg( it.data() ); 164 qu += QString( ",%1 VARCHAR(10)" ).arg( it.data() );
165 } 165 }
166 qu += " );"; 166 qu += " );";
167 167
168 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR(10), priority INTEGER, value VARCHAR(10), PRIMARY KEY /* identifier */ (uid, id) );"; 168 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR(10), priority INTEGER, value VARCHAR(10), PRIMARY KEY /* identifier */ (uid, id) );";
169 169
170 OSQLRawQuery raw( qu ); 170 OSQLRawQuery raw( qu );
171 OSQLResult res = m_driver->query( &raw ); 171 OSQLResult res = m_driver->query( &raw );
172 if ( res.state() != OSQLResult::Success ) 172 if ( res.state() != OSQLResult::Success )
173 return false; 173 return false;
174 174
175 update(); 175 update();
176 176
177 return true; 177 return true;
178} 178}
179 179
180void ODateBookAccessBackend_SQL::update() 180void ODateBookAccessBackend_SQL::update()
181{ 181{
182 182
183 QString qu = "select uid from datebook"; 183 QString qu = "select uid from datebook";
184 OSQLRawQuery raw( qu ); 184 OSQLRawQuery raw( qu );
185 OSQLResult res = m_driver->query( &raw ); 185 OSQLResult res = m_driver->query( &raw );
186 if ( res.state() != OSQLResult::Success ){ 186 if ( res.state() != OSQLResult::Success ){
187 // m_uids.clear(); 187 // m_uids.clear();
188 return; 188 return;
189 } 189 }
190 190
191 m_uids = extractUids( res ); 191 m_uids = extractUids( res );
192 192
193} 193}
194 194
195bool ODateBookAccessBackend_SQL::reload() 195bool ODateBookAccessBackend_SQL::reload()
196{ 196{
197 return load(); 197 return load();
198} 198}
199 199
200bool ODateBookAccessBackend_SQL::save() 200bool ODateBookAccessBackend_SQL::save()
201{ 201{
202 return m_driver->close(); // Shouldn't m_driver->sync be better than close ? (eilers) 202 return m_driver->close(); // Shouldn't m_driver->sync be better than close ? (eilers)
203} 203}
204 204
205QArray<int> ODateBookAccessBackend_SQL::allRecords()const 205QArray<int> ODateBookAccessBackend_SQL::allRecords()const
206{ 206{
207 return m_uids; 207 return m_uids;
208} 208}
209 209
210QArray<int> ODateBookAccessBackend_SQL::queryByExample(const OPimEvent&, int, const QDateTime& ) { 210QArray<int> ODateBookAccessBackend_SQL::queryByExample(const int& unUsed, int settings, const QDateTime& ) {
211 qDebug( "Accessing ODateBookAccessBackend_SQL::queryByExample() which is not implemented!" ); 211 qDebug( "Accessing ODateBookAccessBackend_SQL::queryByExample() which is not implemented!" );
212 return QArray<int>(); 212 return QArray<int>();
213} 213}
214 214
215void ODateBookAccessBackend_SQL::clear() 215void ODateBookAccessBackend_SQL::clear()
216{ 216{
217 QString qu = "drop table datebook;"; 217 QString qu = "drop table datebook;";
218 qu += "drop table custom_data;"; 218 qu += "drop table custom_data;";
219 219
220 OSQLRawQuery raw( qu ); 220 OSQLRawQuery raw( qu );
221 OSQLResult res = m_driver->query( &raw ); 221 OSQLResult res = m_driver->query( &raw );
222 222
223 reload(); 223 reload();
224} 224}
225 225
226 226
227OPimEvent ODateBookAccessBackend_SQL::find( int uid ) const{ 227OPimEvent ODateBookAccessBackend_SQL::find( int uid ) const{
228 odebug << "ODateBookAccessBackend_SQL::find( " << uid << " )" << oendl; 228 odebug << "ODateBookAccessBackend_SQL::find( " << uid << " )" << oendl;
229 229
230 QString qu = "select *"; 230 QString qu = "select *";
231 qu += "from datebook where uid = " + QString::number(uid); 231 qu += "from datebook where uid = " + QString::number(uid);
232 232
233 odebug << "Query: " << qu << "" << oendl; 233 odebug << "Query: " << qu << "" << oendl;
234 234
235 OSQLRawQuery raw( qu ); 235 OSQLRawQuery raw( qu );
236 OSQLResult res = m_driver->query( &raw ); 236 OSQLResult res = m_driver->query( &raw );
237 237
238 OSQLResultItem resItem = res.first(); 238 OSQLResultItem resItem = res.first();
239 239
240 // Create Map for date event and insert UID 240 // Create Map for date event and insert UID
241 QMap<int,QString> dateEventMap; 241 QMap<int,QString> dateEventMap;
242 dateEventMap.insert( OPimEvent::FUid, QString::number( uid ) ); 242 dateEventMap.insert( OPimEvent::FUid, QString::number( uid ) );
243 243
244 // Now insert the data out of the columns into the map. 244 // Now insert the data out of the columns into the map.
245 QMapConstIterator<int, QString> it; 245 QMapConstIterator<int, QString> it;
246 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){ 246 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){
247 dateEventMap.insert( m_reverseFieldMap[*it], resItem.data( *it ) ); 247 dateEventMap.insert( m_reverseFieldMap[*it], resItem.data( *it ) );
248 } 248 }
249 249
250 // Last step: Put map into date event, add custom map and return it 250 // Last step: Put map into date event, add custom map and return it
251 OPimEvent retDate( dateEventMap ); 251 OPimEvent retDate( dateEventMap );
252 retDate.setExtraMap( requestCustom( uid ) ); 252 retDate.setExtraMap( requestCustom( uid ) );
253 253
254 odebug << "ODateBookAccessBackend_SQL::find( " << uid << " ) end" << oendl; 254 odebug << "ODateBookAccessBackend_SQL::find( " << uid << " ) end" << oendl;
255 return retDate; 255 return retDate;
256} 256}
257 257
258// FIXME: Speed up update of uid's.. 258// FIXME: Speed up update of uid's..
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_sql.h b/libopie2/opiepim/backend/odatebookaccessbackend_sql.h
index a649d25..2de2dca 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend_sql.h
+++ b/libopie2/opiepim/backend/odatebookaccessbackend_sql.h
@@ -14,85 +14,85 @@
14 .i_,=:_. -<s. This program is distributed in the hope that 14 .i_,=:_. -<s. This program is distributed in the hope that
15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
16 : .. .:, . . . without even the implied warranty of 16 : .. .:, . . . without even the implied warranty of
17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.= = ; Library General Public License for more 19..}^=.= = ; Library General Public License for more
20++= -. .` .: details. 20++= -. .` .: details.
21 : = ...= . :.=- 21 : = ...= . :.=-
22 -. .:....=;==+<; You should have received a copy of the GNU 22 -. .:....=;==+<; You should have received a copy of the GNU
23 -_. . . )=. = Library General Public License along with 23 -_. . . )=. = Library General Public License along with
24 -- :-=` this library; see the file COPYING.LIB. 24 -- :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29#ifndef OPIE_DATE_BOOK_ACCESS_BACKEND_SQL__H 29#ifndef OPIE_DATE_BOOK_ACCESS_BACKEND_SQL__H
30#define OPIE_DATE_BOOK_ACCESS_BACKEND_SQL__H 30#define OPIE_DATE_BOOK_ACCESS_BACKEND_SQL__H
31 31
32#include <qmap.h> 32#include <qmap.h>
33#include <opie2/osqlresult.h> 33#include <opie2/osqlresult.h>
34 34
35#include <opie2/odatebookaccessbackend.h> 35#include <opie2/odatebookaccessbackend.h>
36 36
37namespace Opie { 37namespace Opie {
38namespace DB { 38namespace DB {
39class OSQLDriver; 39class OSQLDriver;
40} 40}
41} 41}
42 42
43namespace Opie { 43namespace Opie {
44/** 44/**
45 * This is the default SQL implementation for DateBoook SQL storage 45 * This is the default SQL implementation for DateBoook SQL storage
46 * It fully implements the interface 46 * It fully implements the interface
47 * @see ODateBookAccessBackend 47 * @see ODateBookAccessBackend
48 * @see OPimAccessBackend 48 * @see OPimAccessBackend
49 */ 49 */
50class ODateBookAccessBackend_SQL : public ODateBookAccessBackend { 50class ODateBookAccessBackend_SQL : public ODateBookAccessBackend {
51public: 51public:
52 ODateBookAccessBackend_SQL( const QString& appName, 52 ODateBookAccessBackend_SQL( const QString& appName,
53 const QString& fileName = QString::null); 53 const QString& fileName = QString::null);
54 ~ODateBookAccessBackend_SQL(); 54 ~ODateBookAccessBackend_SQL();
55 55
56 bool load(); 56 bool load();
57 bool reload(); 57 bool reload();
58 bool save(); 58 bool save();
59 59
60 QArray<int> allRecords()const; 60 QArray<int> allRecords()const;
61 QArray<int> matchRegexp(const QRegExp &r) const; 61 QArray<int> matchRegexp(const QRegExp &r) const;
62 QArray<int> queryByExample( const OPimEvent&, int, const QDateTime& d = QDateTime() ); 62 QArray<int> queryByExample( const int& unUsed, int settings, const QDateTime& d = QDateTime() );
63 OPimEvent find( int uid )const; 63 OPimEvent find( int uid )const;
64 void clear(); 64 void clear();
65 bool add( const OPimEvent& ev ); 65 bool add( const OPimEvent& ev );
66 bool remove( int uid ); 66 bool remove( int uid );
67 bool replace( const OPimEvent& ev ); 67 bool replace( const OPimEvent& ev );
68 68
69 QArray<UID> rawRepeats()const; 69 QArray<UID> rawRepeats()const;
70 QArray<UID> nonRepeats()const; 70 QArray<UID> nonRepeats()const;
71 71
72 OPimEvent::ValueList directNonRepeats()const; 72 OPimEvent::ValueList directNonRepeats()const;
73 OPimEvent::ValueList directRawRepeats()const; 73 OPimEvent::ValueList directRawRepeats()const;
74 74
75private: 75private:
76 bool loadFile(); 76 bool loadFile();
77 QString m_fileName; 77 QString m_fileName;
78 QArray<int> m_uids; 78 QArray<int> m_uids;
79 79
80 QMap<int, QString> m_fieldMap; 80 QMap<int, QString> m_fieldMap;
81 QMap<QString, int> m_reverseFieldMap; 81 QMap<QString, int> m_reverseFieldMap;
82 82
83 Opie::DB::OSQLDriver* m_driver; 83 Opie::DB::OSQLDriver* m_driver;
84 84
85 class Private; 85 class Private;
86 Private *d; 86 Private *d;
87 87
88 void initFields(); 88 void initFields();
89 void update(); 89 void update();
90 90
91 QArray<int> extractUids( Opie::DB::OSQLResult& res ) const; 91 QArray<int> extractUids( Opie::DB::OSQLResult& res ) const;
92 QMap<QString, QString> requestCustom( int uid ) const; 92 QMap<QString, QString> requestCustom( int uid ) const;
93 93
94}; 94};
95 95
96} 96}
97 97
98#endif 98#endif