author | eilers <eilers> | 2004-12-28 14:19:26 (UTC) |
---|---|---|
committer | eilers <eilers> | 2004-12-28 14:19:26 (UTC) |
commit | 47c87c92a46f56bc9190025e7a653fa48718431e (patch) (side-by-side diff) | |
tree | 2c8d87f8a8132d6b59d56cdb35762a479515b1d1 /libopie2 | |
parent | 521e3eed02205bca9baca9000ac7ff095a15abde (diff) | |
download | opie-47c87c92a46f56bc9190025e7a653fa48718431e.zip opie-47c87c92a46f56bc9190025e7a653fa48718431e.tar.gz opie-47c87c92a46f56bc9190025e7a653fa48718431e.tar.bz2 |
Fixing bug #1501 and preparing for implementation of generic QueryByExample and
sorted for datebook and todo..
-rw-r--r-- | libopie2/opiepim/ChangeLog | 4 | ||||
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend.h | 4 | ||||
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp | 29 | ||||
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend_sql.h | 2 | ||||
-rw-r--r-- | libopie2/opiepim/backend/odatebookaccessbackend.cpp | 27 | ||||
-rw-r--r-- | libopie2/opiepim/backend/odatebookaccessbackend.h | 15 | ||||
-rw-r--r-- | libopie2/opiepim/backend/opimaccessbackend.h | 6 | ||||
-rw-r--r-- | libopie2/opiepim/backend/otodoaccessbackend.cpp | 32 | ||||
-rw-r--r-- | libopie2/opiepim/backend/otodoaccessbackend.h | 15 | ||||
-rw-r--r-- | libopie2/opiepim/backend/otodoaccesssql.cpp | 34 | ||||
-rw-r--r-- | libopie2/opiepim/backend/otodoaccesssql.h | 2 | ||||
-rw-r--r-- | libopie2/opiepim/backend/otodoaccessxml.cpp | 5 | ||||
-rw-r--r-- | libopie2/opiepim/backend/otodoaccessxml.h | 1 |
13 files changed, 134 insertions, 42 deletions
diff --git a/libopie2/opiepim/ChangeLog b/libopie2/opiepim/ChangeLog index 564e92a..2007744 100644 --- a/libopie2/opiepim/ChangeLog +++ b/libopie2/opiepim/ChangeLog @@ -2,3 +2,5 @@ * Make improved query by example accessable via frontend - * Some API improvement + * Some API documentation improvement + * Cleanup of backend api.. + * Fixing bug #1501 2004-11-23 Stefan Eilers <stefan@eilers-online.net> diff --git a/libopie2/opiepim/backend/ocontactaccessbackend.h b/libopie2/opiepim/backend/ocontactaccessbackend.h index ee6dbc2..27d70ab 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend.h +++ b/libopie2/opiepim/backend/ocontactaccessbackend.h @@ -82,3 +82,3 @@ class OPimContactAccessBackend: public OPimAccessBackend<OPimContact> { */ - virtual const uint querySettings() const; + const uint querySettings() const; @@ -88,3 +88,3 @@ class OPimContactAccessBackend: public OPimAccessBackend<OPimContact> { */ - virtual bool hasQuerySettings (uint querySettings) const; + bool hasQuerySettings (uint querySettings) const; diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp index 9375f43..2368865 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp +++ b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp @@ -281,3 +281,5 @@ namespace { : OSQLQuery(), m_uid( uid ) {} + RemoveQuery::~RemoveQuery() {} + QString RemoveQuery::query()const { @@ -291,4 +293,2 @@ namespace { - - FindQuery::FindQuery(int uid) @@ -302,8 +302,10 @@ namespace { QString FindQuery::query()const{ - if ( m_uids.count() == 0 ) - return single(); - else - return multi(); + if ( m_uids.count() == 0 ) + return single(); + else + return multi(); } + + QString FindQuery::multi()const { @@ -530,3 +532,3 @@ OPimContact OPimContactAccessBackend_SQL::find( int uid, const UIDArray& queryUi -UIDArray OPimContactAccessBackend_SQL::queryByExample ( const OPimContact &query, int settings, +UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist, const OPimContact &query, int settings, const QDateTime& qd ) const @@ -534,2 +536,15 @@ UIDArray OPimContactAccessBackend_SQL::queryByExample ( const OPimContact &query QString qu = "SELECT uid FROM addressbook WHERE"; + + // Just add uid's selection if we really try to search in a subset of all uids! Otherwise this would + // just take time and memory! + if ( uidlist.count() != m_uids.count() ) { + qu += " ("; + + for ( uint i = 0; i < uidlist.count(); i++ ) { + qu += " uid = " + QString::number( uidlist[i] ) + " OR"; + } + qu.remove( qu.length()-2, 2 ); // Hmmmm.. + qu += " ) AND "; + } + QString searchQuery =""; diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_sql.h b/libopie2/opiepim/backend/ocontactaccessbackend_sql.h index 299c175..1cf1185 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend_sql.h +++ b/libopie2/opiepim/backend/ocontactaccessbackend_sql.h @@ -77,3 +77,3 @@ class OPimContactAccessBackend_SQL : public OPimContactAccessBackend { - UIDArray queryByExample ( const OPimContact &query, int settings, + UIDArray queryByExample ( const UIDArray& uidlist, const OPimContact &query, int settings, const QDateTime& d ) const; diff --git a/libopie2/opiepim/backend/odatebookaccessbackend.cpp b/libopie2/opiepim/backend/odatebookaccessbackend.cpp index 73c7059..e44912a 100644 --- a/libopie2/opiepim/backend/odatebookaccessbackend.cpp +++ b/libopie2/opiepim/backend/odatebookaccessbackend.cpp @@ -102,3 +102,5 @@ OPimBackendOccurrence::List ODateBookAccessBackend::occurrences( const QDate& fr } -OPimBackendOccurrence::List ODateBookAccessBackend::occurrences( const QDateTime& dt )const { + +OPimBackendOccurrence::List ODateBookAccessBackend::occurrences( const QDateTime& dt )const +{ OPimBackendOccurrence::List day = occurrences( dt.date(), dt.date() ); @@ -109,3 +111,4 @@ OPimBackendOccurrence::List ODateBookAccessBackend::occurrences( const QDateTime OPimBackendOccurrence::List ODateBookAccessBackend::effectiveNonRepeatingEvents( const QDate& from, - const QDate& to )const { + const QDate& to )const +{ OPimBackendOccurrence::List tmpList; @@ -118,3 +121,4 @@ OPimBackendOccurrence::List ODateBookAccessBackend::effectiveNonRepeatingEvents( -OPimBackendOccurrence::List ODateBookAccessBackend::effectiveNonRepeatingEvents( const QDateTime& dt )const { +OPimBackendOccurrence::List ODateBookAccessBackend::effectiveNonRepeatingEvents( const QDateTime& dt )const +{ OPimBackendOccurrence::List day = effectiveNonRepeatingEvents( dt.date(), dt.date() ); @@ -123,5 +127,18 @@ OPimBackendOccurrence::List ODateBookAccessBackend::effectiveNonRepeatingEvents( +const uint ODateBookAccessBackend::querySettings() const +{ + return 0; +} + +bool ODateBookAccessBackend::hasQuerySettings (uint querySettings) const +{ + return false; +} + + -UIDArray ODateBookAccessBackend::queryByExample( const OPimEvent&, int settings, - const QDateTime& d )const { +UIDArray ODateBookAccessBackend::queryByExample( const UIDArray& uidlist, const OPimEvent&, int settings, + const QDateTime& d )const +{ + qDebug( "Accessing ODateBookAccessBackend::queryByExample() which is not implemented!" ); return UIDArray(); diff --git a/libopie2/opiepim/backend/odatebookaccessbackend.h b/libopie2/opiepim/backend/odatebookaccessbackend.h index 8927ca1..91f63aa 100644 --- a/libopie2/opiepim/backend/odatebookaccessbackend.h +++ b/libopie2/opiepim/backend/odatebookaccessbackend.h @@ -96,3 +96,16 @@ public: //@{ - UIDArray queryByExample( const OPimEvent&, int settings, const QDateTime& d = QDateTime() )const; + /** + * Return all possible settings. + * @return All settings provided by the current backend + * (i.e.: query_WildCards & query_IgnoreCase) + */ + const uint querySettings() const; + + /** + * Check whether settings are correct. + * @return <i>true</i> if the given settings are correct and possible. + */ + bool hasQuerySettings (uint querySettings) const; + + UIDArray queryByExample( const UIDArray& uidlist, const OPimEvent&, int settings, const QDateTime& d = QDateTime() )const; UIDArray sorted( const UIDArray&, bool asc, int, int, const QArray<int>& )const; diff --git a/libopie2/opiepim/backend/opimaccessbackend.h b/libopie2/opiepim/backend/opimaccessbackend.h index 7321758..6666fd6 100644 --- a/libopie2/opiepim/backend/opimaccessbackend.h +++ b/libopie2/opiepim/backend/opimaccessbackend.h @@ -77,3 +77,3 @@ public: */ - virtual const uint querySettings() const { return 0; } /* FIXME: Make Abstrakt !! = 0; */ + virtual const uint querySettings() const = 0; @@ -84,3 +84,3 @@ public: */ - virtual bool hasQuerySettings (uint querySettings) const { return false; } /* FIXME: Make Abstrakt !! = 0; */ + virtual bool hasQuerySettings (uint querySettings) const = 0; //@} @@ -92,3 +92,3 @@ public: virtual UIDArray queryByExample( const UIDArray&, const T& t, - int settings, const QDateTime& d = QDateTime() )const { return UIDArray(); } /* FIXME: Make Abstrakt !! = 0; */ + int settings, const QDateTime& d = QDateTime() )const = 0; virtual UIDArray queryByExample( const T& t, int settings, const QDateTime& d = QDateTime() )const; diff --git a/libopie2/opiepim/backend/otodoaccessbackend.cpp b/libopie2/opiepim/backend/otodoaccessbackend.cpp index 5f86be9..f979976 100644 --- a/libopie2/opiepim/backend/otodoaccessbackend.cpp +++ b/libopie2/opiepim/backend/otodoaccessbackend.cpp @@ -44,5 +44,31 @@ OPimTodoAccessBackend::~OPimTodoAccessBackend() { -UIDArray OPimTodoAccessBackend::queryByExample( const OPimTodo&, int settings, - const QDateTime& d)const { - return UIDArray(); +const uint OPimTodoAccessBackend::querySettings() const +{ + return 0; +} + +bool OPimTodoAccessBackend::hasQuerySettings (uint querySettings) const +{ + return false; +} + + +UIDArray OPimTodoAccessBackend::queryByExample( const UIDArray& uidlist, const OPimTodo& query, int settings, + const QDateTime& endperiod )const +{ + qDebug( "Accessing OPimTodoAccessBackend::queryByExample() which is not implemented!" ); + return UIDArray(); + +// odebug << "Using Unaccelerated OPimContactAccessBackend implementation of queryByExample!" << oendl; + +// UIDArray m_currentQuery( uid_array.count() ); +// uint arraycounter = 0; + +// for( uint it = 0; it < uid_array.count(); ++it ){ +// /* Search all fields and compare them with query object. Store them into list +// * if all fields matches. +// */ +// } + + } diff --git a/libopie2/opiepim/backend/otodoaccessbackend.h b/libopie2/opiepim/backend/otodoaccessbackend.h index 66297bb..870ee57 100644 --- a/libopie2/opiepim/backend/otodoaccessbackend.h +++ b/libopie2/opiepim/backend/otodoaccessbackend.h @@ -53,3 +53,16 @@ public: //@{ - UIDArray queryByExample( const OPimTodo&, int settings, const QDateTime& d = QDateTime() )const; + /** + * Return all possible settings. + * @return All settings provided by the current backend + * (i.e.: query_WildCards & query_IgnoreCase) + */ + const uint querySettings() const; + + /** + * Check whether settings are correct. + * @return <i>true</i> if the given settings are correct and possible. + */ + bool hasQuerySettings (uint querySettings) const; + + UIDArray queryByExample( const UIDArray& uidlist, const OPimTodo& query, int settings, const QDateTime& endperiod = QDateTime() )const; UIDArray sorted( const UIDArray&, bool asc, int, int, const QArray<int>& )const; diff --git a/libopie2/opiepim/backend/otodoaccesssql.cpp b/libopie2/opiepim/backend/otodoaccesssql.cpp index 2bcab29..70e40e4 100644 --- a/libopie2/opiepim/backend/otodoaccesssql.cpp +++ b/libopie2/opiepim/backend/otodoaccesssql.cpp @@ -303,6 +303,8 @@ namespace { : OSQLQuery(), m_uid( uid ) {} + RemoveQuery::~RemoveQuery() {} + QString RemoveQuery::query()const { QString qu = "DELETE FROM todolist WHERE uid = " + QString::number(m_uid) + " ;"; - qu += "DELETE FROM custom_data WHERE uid = " + QString::number(m_uid); + qu += "DELETE FROM custom_data WHERE uid = " + QString::number(m_uid); return qu; @@ -314,14 +316,22 @@ namespace { ClearQuery::~ClearQuery() {} - QString ClearQuery::query()const { - QString qu = "drop table todolist"; - return qu; + QString ClearQuery::query()const + { + QString qu = "drop table todolist"; + return qu; } + FindQuery::FindQuery(int uid) - : OSQLQuery(), m_uid(uid ) { + : OSQLQuery(), m_uid(uid ) + { } + FindQuery::FindQuery(const QArray<int>& ints) - : OSQLQuery(), m_uids(ints){ + : OSQLQuery(), m_uids(ints) + { } - FindQuery::~FindQuery() { + + FindQuery::~FindQuery() + { } + QString FindQuery::query()const{ @@ -450,6 +460,6 @@ QArray<int> OPimTodoAccessBackendSQL::allRecords()const { } -QArray<int> OPimTodoAccessBackendSQL::queryByExample( const OPimTodo& , int, const QDateTime& ){ - QArray<int> ints(0); - return ints; -} +// QArray<int> OPimTodoAccessBackendSQL::queryByExample( const UIDArray& uidlist, const OPimTodo& , int, const QDateTime& ){ +// QArray<int> ints(0); +// return ints; +// } OPimTodo OPimTodoAccessBackendSQL::find(int uid ) const{ @@ -621,3 +631,3 @@ QArray<int> OPimTodoAccessBackendSQL::sorted( bool asc, int sortOrder, bool OPimTodoAccessBackendSQL::date( QDate& da, const QString& str ) const{ - if ( str == "0-0-0" ) + if ( str == "0000-00-00" ) return false; diff --git a/libopie2/opiepim/backend/otodoaccesssql.h b/libopie2/opiepim/backend/otodoaccesssql.h index 0ba8f3a..ac3476a 100644 --- a/libopie2/opiepim/backend/otodoaccesssql.h +++ b/libopie2/opiepim/backend/otodoaccesssql.h @@ -55,3 +55,3 @@ public: - QArray<UID> queryByExample( const OPimTodo& t, int settings, const QDateTime& d = QDateTime() ); +/* QArray<UID> queryByExample( const UIDArray& uidlist, const OPimTodo& t, int settings, const QDateTime& d = QDateTime() ); */ OPimTodo find(UID uid)const; diff --git a/libopie2/opiepim/backend/otodoaccessxml.cpp b/libopie2/opiepim/backend/otodoaccessxml.cpp index 273f91a..ab50604 100644 --- a/libopie2/opiepim/backend/otodoaccessxml.cpp +++ b/libopie2/opiepim/backend/otodoaccessxml.cpp @@ -328,6 +328,3 @@ QArray<int> OPimTodoAccessXML::allRecords()const { } -QArray<int> OPimTodoAccessXML::queryByExample( const OPimTodo&, int, const QDateTime& ) { - QArray<int> ids(0); - return ids; -} + OPimTodo OPimTodoAccessXML::find( int uid )const { diff --git a/libopie2/opiepim/backend/otodoaccessxml.h b/libopie2/opiepim/backend/otodoaccessxml.h index 134a21a..8a71bb7 100644 --- a/libopie2/opiepim/backend/otodoaccessxml.h +++ b/libopie2/opiepim/backend/otodoaccessxml.h @@ -54,3 +54,2 @@ public: QArray<int> matchRegexp(const QRegExp &r) const; - QArray<int> queryByExample( const OPimTodo&, int querysettings, const QDateTime& d = QDateTime() ); OPimTodo find( int uid )const; |