summaryrefslogtreecommitdiff
authorzecke <zecke>2004-09-12 23:48:59 (UTC)
committer zecke <zecke>2004-09-12 23:48:59 (UTC)
commitdf292cd5dbd8f3c11efa06db1a2ed565a6efa9b8 (patch) (side-by-side diff)
tree749fce3927b9dad57bb4e836771860a8607963ba
parent03d8f31d45fa569d944ff635428ad9a946f077b9 (diff)
downloadopie-df292cd5dbd8f3c11efa06db1a2ed565a6efa9b8.zip
opie-df292cd5dbd8f3c11efa06db1a2ed565a6efa9b8.tar.gz
opie-df292cd5dbd8f3c11efa06db1a2ed565a6efa9b8.tar.bz2
-Sorry for the whitespaces
-Delete endDate which is used by queryByExample Eilers can you look if a QDate::isValid makes more sense?
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
index 221e977..3d284f7 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
@@ -284,64 +284,64 @@ namespace {
QString qu = "DELETE from addressbook where uid = "
+ QString::number(m_uid) + ";";
qu += "DELETE from custom_data where uid = "
+ QString::number(m_uid) + ";";
return qu;
}
FindQuery::FindQuery(int uid)
: OSQLQuery(), m_uid( uid ) {
}
FindQuery::FindQuery(const QArray<int>& ints)
: OSQLQuery(), m_uids( ints ){
}
FindQuery::~FindQuery() {
}
QString FindQuery::query()const{
if ( m_uids.count() == 0 )
return single();
else
return multi();
}
-
+
QString FindQuery::multi()const {
QString qu = "select * from addressbook where";
for (uint i = 0; i < m_uids.count(); i++ ) {
qu += " uid = " + QString::number( m_uids[i] ) + " OR";
}
qu.remove( qu.length()-2, 2 ); // Hmmmm..
odebug << "find query: " << qu << "" << oendl;
return qu;
}
QString FindQuery::single()const{
QString qu = "select *";
qu += " from addressbook where uid = " + QString::number(m_uid);
-
+
// owarn << "find query: " << qu << "" << oendl;
return qu;
}
FindCustomQuery::FindCustomQuery(int uid)
: OSQLQuery(), m_uid( uid ) {
}
FindCustomQuery::FindCustomQuery(const QArray<int>& ints)
: OSQLQuery(), m_uids( ints ){
}
FindCustomQuery::~FindCustomQuery() {
}
QString FindCustomQuery::query()const{
// if ( m_uids.count() == 0 )
return single();
}
QString FindCustomQuery::single()const{
QString qu = "select uid, type, value from custom_data where uid = ";
qu += QString::number(m_uid);
return qu;
}
};
@@ -471,52 +471,52 @@ bool OPimContactAccessBackend_SQL::replace ( const OPimContact &contact )
return add( contact );
}
OPimContact OPimContactAccessBackend_SQL::find ( int uid ) const
{
odebug << "OPimContactAccessBackend_SQL::find(" << uid << ")" << oendl;
QTime t;
t.start();
OPimContact retContact( requestNonCustom( uid ) );
retContact.setExtraMap( requestCustom( uid ) );
odebug << "OPimContactAccessBackend_SQL::find() needed: " << t.elapsed() << " ms" << oendl;
return retContact;
}
OPimContact OPimContactAccessBackend_SQL::find( int uid, const QArray<int>& queryUids, uint current, Frontend::CacheDirection direction ) const
{
odebug << "OPimContactAccessBackend_SQL::find( ..multi.. )" << oendl;
odebug << "searching for " << uid << "" << oendl;
QTime t;
t.start();
-
+
uint numReadAhead = readAhead();
QArray<int> searchList( numReadAhead );
-
+
uint size =0;
// Build an array with all elements which should be requested and cached
// We will just request "numReadAhead" elements, starting from "current" position in
// the list of many uids !
switch( direction ) {
/* forward */
case Frontend::Forward:
for ( uint i = current; i < queryUids.count() && size < numReadAhead; i++ ) {
searchList[size] = queryUids[i];
size++;
}
break;
/* reverse */
case Frontend::Reverse:
for ( uint i = current; i != 0 && size < numReadAhead; i-- ) {
searchList[size] = queryUids[i];
size++;
}
break;
}
//Shrink to real size..
searchList.resize( size );
@@ -603,48 +603,50 @@ QArray<int> OPimContactAccessBackend_SQL::queryByExample ( const OPimContact &qu
if ( ( settings & OPimContactAccess::DateDiff )
|| ( settings & OPimContactAccess::DateYear )
|| ( settings & OPimContactAccess::DateMonth ) )
searchQuery += " AND";
searchQuery += QString( " (\"%1\" LIKE '%-%-%2')" )
.arg( *it )
.arg( QString::number( endDate->day() ).rightJustify( 2, '0' ) );
}
break;
default:
// Switching between case sensitive and insensitive...
// LIKE is not case sensitive, GLOB is case sensitive
// Do exist a better solution to switch this ?
if ( settings & OPimContactAccess::IgnoreCase )
searchQuery += "(\"" + *it + "\"" + " LIKE " + "'"
+ queryStr.replace(QRegExp("\\*"),"%") + "'" + ")";
else
searchQuery += "(\"" + *it + "\"" + " GLOB " + "'"
+ queryStr + "'" + ")";
}
}
+
+ delete endDate;
}
// Skip trailing "AND"
// if ( isAnyFieldSelected )
// qu = qu.left( qu.length() - 4 );
qu += searchQuery;
odebug << "queryByExample query: " << qu << "" << oendl;
// Execute query and return the received uid's
OSQLRawQuery raw( qu );
OSQLResult res = m_driver->query( &raw );
if ( res.state() != OSQLResult::Success ){
QArray<int> empty;
return empty;
}
QArray<int> list = extractUids( res );
return list;
}
QArray<int> OPimContactAccessBackend_SQL::matchRegexp( const QRegExp &r ) const
{
@@ -804,100 +806,100 @@ QArray<int> OPimContactAccessBackend_SQL::extractUids( OSQLResult& res ) const
return ints;
}
QMap<int, QString> OPimContactAccessBackend_SQL::requestNonCustom( int uid ) const
{
QTime t;
t.start();
int t2needed = 0;
int t3needed = 0;
QTime t2;
t2.start();
FindQuery query( uid );
OSQLResult res_noncustom = m_driver->query( &query );
t2needed = t2.elapsed();
OSQLResultItem resItem = res_noncustom.first();
QMap<int, QString> nonCustomMap;
QTime t3;
t3.start();
nonCustomMap = fillNonCustomMap( resItem );
t3needed = t3.elapsed();
-
+
// odebug << "Adding UID: " << resItem.data( "uid" ) << "" << oendl;
odebug << "RequestNonCustom needed: insg.:" << t.elapsed() << " ms, query: " << t2needed
<< " ms, mapping: " << t3needed << " ms" << oendl;
return nonCustomMap;
}
-/* Returns contact requested by uid and fills cache with contacts requested by uids in the cachelist */
+/* Returns contact requested by uid and fills cache with contacts requested by uids in the cachelist */
OPimContact OPimContactAccessBackend_SQL::requestContactsAndCache( int uid, const QArray<int>& uidlist )const
{
// We want to get all contacts with one query.
// We don't have to add the given uid to the uidlist, it is expected to be there already (see opimrecordlist.h).
// All contacts will be stored in the cache, afterwards the contact with the user id "uid" will be returned
- // by using the cache..
+ // by using the cache..
QArray<int> cachelist = uidlist;
OPimContact retContact;
odebug << "Reqest and cache" << cachelist.size() << "elements !" << oendl;
QTime t;
t.start();
int t2needed = 0;
int t3needed = 0;
QTime t2;
t2.start();
FindQuery query( cachelist );
OSQLResult res_noncustom = m_driver->query( &query );
t2needed = t2.elapsed();
QMap<int, QString> nonCustomMap;
QTime t3;
t3.start();
OSQLResultItem resItem = res_noncustom.first();
do {
OPimContact contact( fillNonCustomMap( resItem ) );
contact.setExtraMap( requestCustom( contact.uid() ) );
odebug << "Caching uid: " << contact.uid() << oendl;
cache( contact );
if ( contact.uid() == uid )
retContact = contact;
resItem = res_noncustom.next();
} while ( ! res_noncustom.atEnd() ); //atEnd() is true if we are past(!) the list !!
t3needed = t3.elapsed();
-
+
// odebug << "Adding UID: " << resItem.data( "uid" ) << "" << oendl;
odebug << "RequestContactsAndCache needed: insg.:" << t.elapsed() << " ms, query: " << t2needed
<< " ms, mapping: " << t3needed << " ms" << oendl;
-
+
return retContact;
}
QMap<int, QString> OPimContactAccessBackend_SQL::fillNonCustomMap( const OSQLResultItem& resultItem ) const
{
QMap<int, QString> nonCustomMap;
// Now loop through all columns
QStringList fieldList = OPimContactFields::untrfields( false );
QMap<QString, int> translate = OPimContactFields::untrFieldsToId();
for ( QStringList::Iterator it = ++fieldList.begin(); it != fieldList.end(); ++it ){
// Get data for the selected column and store it with the
// corresponding id into the map..
int id = translate[*it];
QString value = resultItem.data( (*it) );
// odebug << "Reading " << (*it) << "... found: " << value << "" << oendl;
switch( id ){
case Qtopia::Birthday:
case Qtopia::Anniversary:{
// Birthday and Anniversary are encoded special ( yyyy-mm-dd )
QStringList list = QStringList::split( '-', value );