logsui/logsengine/logssymbianos/src/logsdbconnector.cpp
changeset 17 90fe74753f71
parent 15 76d2cf7a585e
child 18 acd4e87b24b4
equal deleted inserted replaced
15:76d2cf7a585e 17:90fe74753f71
    23 #include "logslogger.h"
    23 #include "logslogger.h"
    24 #include "logsremove.h"
    24 #include "logsremove.h"
    25 #include "logscommondata.h"
    25 #include "logscommondata.h"
    26 #include <logcli.h>
    26 #include <logcli.h>
    27 #include <f32file.h>
    27 #include <f32file.h>
    28 #include <centralrepository.h>
    28 #include <QApplication>
    29 #include <LogsDomainCRKeys.h>
       
    30 
       
    31 // CONSTANTS
    29 // CONSTANTS
    32 
    30 
    33 // Telephony Configuration API
       
    34 // Keys under this category are used in defining telephony configuration.
       
    35 const TUid logsTelConfigurationCRUid = {0x102828B8};
       
    36 
       
    37 // Amount of digits to be used in contact matching.
       
    38 // This allows a customer to variate the amount of digits to be matched.
       
    39 const TUint32 logsTelMatchDigits = 0x00000001;
       
    40 
    31 
    41 
    32 
    42 // ----------------------------------------------------------------------------
    33 // ----------------------------------------------------------------------------
    43 // LogsDbConnector::LogsDbConnector
    34 // LogsDbConnector::LogsDbConnector
    44 // ----------------------------------------------------------------------------
    35 // ----------------------------------------------------------------------------
    50   mCheckAllEvents( checkAllEvents ),
    41   mCheckAllEvents( checkAllEvents ),
    51   mResourceControl( resourceControl ),
    42   mResourceControl( resourceControl ),
    52   mLogClient( 0 ), 
    43   mLogClient( 0 ), 
    53   mReader( 0 ),
    44   mReader( 0 ),
    54   mLogsRemove( 0 ),
    45   mLogsRemove( 0 ),
    55   mRepository( 0 ),
    46   mCompressionEnabled(false),
    56   mCompressionEnabled(false)
    47   mFirstReadCompleted(false)
    57 {
    48 {
    58     LOGS_QDEBUG( "logs [ENG] <-> LogsDbConnector::LogsDbConnector()" )
    49     LOGS_QDEBUG( "logs [ENG] <-> LogsDbConnector::LogsDbConnector()" )
    59     mFsSession = new RFs();
    50     mFsSession = new RFs();
    60 }
    51 }
    61 
    52 
    75     }
    66     }
    76     delete mFsSession;
    67     delete mFsSession;
    77     
    68     
    78     qDeleteAll( mEvents );
    69     qDeleteAll( mEvents );
    79     qDeleteAll( mDuplicatedEvents );
    70     qDeleteAll( mDuplicatedEvents );
    80     
       
    81     delete mRepository;
       
    82     
    71     
    83     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::~LogsDbConnector()" )
    72     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::~LogsDbConnector()" )
    84 }
    73 }
    85 
    74 
    86 // ----------------------------------------------------------------------------
    75 // ----------------------------------------------------------------------------
   196     mLogEventStrings.iFetched = DESC_TO_QSTRING( logString );
   185     mLogEventStrings.iFetched = DESC_TO_QSTRING( logString );
   197     
   186     
   198     mReader = new LogsReader( 
   187     mReader = new LogsReader( 
   199         *mFsSession, *mLogClient, mLogEventStrings, mEvents, *this, mCheckAllEvents );
   188         *mFsSession, *mLogClient, mLogEventStrings, mEvents, *this, mCheckAllEvents );
   200     
   189     
   201     mRepository = CRepository::NewL( KCRUidLogs );
       
   202     
       
   203     if ( mResourceControl ){
   190     if ( mResourceControl ){
   204         LOGS_QDEBUG( "logs [ENG] -> LogsDbConnector::initL(), resource control enabled" )
   191         LOGS_QDEBUG( "logs [ENG] -> LogsDbConnector::initL(), resource control enabled" )
   205         LogsCommonData::getInstance().configureReadSize(
   192         LogsCommonData::getInstance().configureReadSize(
   206                 logsReadSizeCompressEnabled, LogsEvent::DirUndefined);
   193                 logsReadSizeCompressEnabled, LogsEvent::DirUndefined);
   207         mCompressionEnabled = true;
   194         mCompressionEnabled = true;
   208     }
   195     }
   209     
   196     
   210     //Get number of digits used to match   
   197     //Get number of digits used to match   
   211     int matchLen;
   198     int matchLen;
   212     TRAPD( err, getTelNumMatchLenL(matchLen) )
   199     LogsCommonData::getInstance().getTelNumMatchLen(matchLen);
   213     if ( err ){
       
   214         LOGS_QDEBUG( "logs [ENG]    Getting tel num match len failed, use default" );
       
   215         matchLen = logsDefaultMatchLength;
       
   216     }
       
   217     LOGS_QDEBUG_2( "logs [ENG]    Tel number match length", matchLen )
   200     LOGS_QDEBUG_2( "logs [ENG]    Tel number match length", matchLen )
   218     LogsCommonData::getInstance().setTelNumMatchLen(matchLen);
       
   219 }
   201 }
   220 
   202 
   221 // ----------------------------------------------------------------------------
   203 // ----------------------------------------------------------------------------
   222 // LogsDbConnector::clearList
   204 // LogsDbConnector::clearList
   223 // ----------------------------------------------------------------------------
   205 // ----------------------------------------------------------------------------
   279     
   261     
   280     int err = doMarkEventSeen();
   262     int err = doMarkEventSeen();
   281     LOGS_QDEBUG_2( "logs [ENG] <- LogsDbConnector::markEventsSeen(), marking err:", 
   263     LOGS_QDEBUG_2( "logs [ENG] <- LogsDbConnector::markEventsSeen(), marking err:", 
   282                    err )
   264                    err )
   283     return ( err == 0 );
   265     return ( err == 0 );
   284 }
       
   285 
       
   286 // ----------------------------------------------------------------------------
       
   287 // LogsDbConnector::clearMissedCallsCounter
       
   288 // ----------------------------------------------------------------------------
       
   289 //
       
   290 int LogsDbConnector::clearMissedCallsCounter()
       
   291 {
       
   292     LOGS_QDEBUG( "logs [ENG] -> LogsDbConnector::clearMissedCallsCounter()" )
       
   293     if ( !mRepository ){
       
   294         return -1;
       
   295     }
       
   296     TInt value(0);
       
   297     int err = mRepository->Get( KLogsNewMissedCalls, value );
       
   298     if ( !err && value != 0 ){
       
   299         err = mRepository->Set( KLogsNewMissedCalls, 0 );
       
   300     }
       
   301     LOGS_QDEBUG_2( "logs [ENG] <- LogsDbConnector::clearMissedCallsCounter(), err", err )
       
   302     return err;
       
   303 }
   266 }
   304 
   267 
   305 // ----------------------------------------------------------------------------
   268 // ----------------------------------------------------------------------------
   306 // LogsDbConnector::readDuplicates
   269 // LogsDbConnector::readDuplicates
   307 // ----------------------------------------------------------------------------
   270 // ----------------------------------------------------------------------------
   349     if ( mReader ){
   312     if ( mReader ){
   350         if ( prevCompressionEnabled && !mReader->IsActive() ){
   313         if ( prevCompressionEnabled && !mReader->IsActive() ){
   351             err = mReader->start();
   314             err = mReader->start();
   352         }
   315         }
   353     }
   316     }
       
   317     if ( !mLogsRemove ){
       
   318         mLogsRemove = new LogsRemove( *this, mCheckAllEvents );
       
   319     }   
   354     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::refreshData()" )
   320     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::refreshData()" )
   355     return err;
   321     return err;
   356 }
   322 }
   357 
   323 
   358 // -----------------------------------------------------------------------------
   324 // -----------------------------------------------------------------------------
   384                 removedIndexes.append(mEvents.at(i)->index());
   350                 removedIndexes.append(mEvents.at(i)->index());
   385             }
   351             }
   386         }
   352         }
   387         emit dataRemoved(removedIndexes);
   353         emit dataRemoved(removedIndexes);
   388         deleteInvalidEvents( numEventsLeftInMemory );
   354         deleteInvalidEvents( numEventsLeftInMemory );
   389         mReader->stop();
   355     }
   390     }
   356     
       
   357     releaseDbConnections();
       
   358     
   391     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::compressData()" )
   359     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::compressData()" )
   392     return 0;
   360     return 0;
   393 }
       
   394 
       
   395 // ----------------------------------------------------------------------------
       
   396 // LogsDbConnector::predictiveSearchStatus
       
   397 // ----------------------------------------------------------------------------
       
   398 //
       
   399 int LogsDbConnector::predictiveSearchStatus()
       
   400 {
       
   401     LOGS_QDEBUG( "logs [ENG] -> LogsDbConnector::predictiveSearchStatus()" )
       
   402     int status(-1);   
       
   403     if ( mRepository ) {
       
   404         TInt value(0);
       
   405         status = mRepository->Get( KLogsPredictiveSearch, value );
       
   406         if ( !status ) { 
       
   407             status = value;
       
   408         }
       
   409     }    
       
   410     LOGS_QDEBUG_2( "logs [ENG] <- LogsDbConnector::predictiveSearchStatus(), status:",
       
   411             status )
       
   412     return status;
       
   413 }
       
   414 
       
   415 // ----------------------------------------------------------------------------
       
   416 // LogsDbConnector::setPredictiveSearch
       
   417 // ----------------------------------------------------------------------------
       
   418 //
       
   419 int LogsDbConnector::setPredictiveSearch(bool enabled)
       
   420 {
       
   421     int err(-1);
       
   422     int status = predictiveSearchStatus();
       
   423     //if status == 0, it means that predictive search is permanently Off
       
   424     //and we are not allowed to modify it
       
   425     if (status != 0 && mRepository) {
       
   426         int value = enabled ? 1 : 2;
       
   427         err = mRepository->Set( KLogsPredictiveSearch, value );
       
   428     }
       
   429     return err;
       
   430 }
   361 }
   431 
   362 
   432 // ----------------------------------------------------------------------------
   363 // ----------------------------------------------------------------------------
   433 // LogsDbConnector::handleTemporaryError
   364 // LogsDbConnector::handleTemporaryError
   434 // ----------------------------------------------------------------------------
   365 // ----------------------------------------------------------------------------
   534             emit dataAdded(mAddedEventIndexes);
   465             emit dataAdded(mAddedEventIndexes);
   535         }
   466         }
   536         if ( !mUpdatedEventIndexes.isEmpty() ){
   467         if ( !mUpdatedEventIndexes.isEmpty() ){
   537             emit dataUpdated(mUpdatedEventIndexes);
   468             emit dataUpdated(mUpdatedEventIndexes);
   538         }
   469         }
   539     }
   470     }  
   540     
       
   541     qDeleteAll(toBeDeletedEvents);
   471     qDeleteAll(toBeDeletedEvents);
   542 
   472 	
       
   473     if ( qApp && !mFirstReadCompleted){
       
   474         // Just used for testing purposes
       
   475         QMetaObject::invokeMethod(qApp, "testLogsAppEngineReady" );
       
   476         mFirstReadCompleted = true;
       
   477     }
       
   478     if ( mCompressionEnabled ){
       
   479         releaseDbConnections();
       
   480     }    
   543     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::readCompleted()" )
   481     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::readCompleted()" )
   544 }
   482 }
   545 
   483 
   546 // ----------------------------------------------------------------------------
   484 // ----------------------------------------------------------------------------
   547 // LogsDbConnector::errorOccurred
   485 // LogsDbConnector::errorOccurred
   640     }
   578     }
   641     return continueModify;
   579     return continueModify;
   642 }
   580 }
   643 
   581 
   644 // ----------------------------------------------------------------------------
   582 // ----------------------------------------------------------------------------
   645 // LogsDbConnector::getTelNumMatchLenL
   583 //
   646 // ----------------------------------------------------------------------------
   584 // ----------------------------------------------------------------------------
   647 //
   585 //
   648 void LogsDbConnector::getTelNumMatchLenL(int& matchLen)
   586 void LogsDbConnector::releaseDbConnections()
   649 {
   587 {
   650     TInt tempMatchLen;
   588     LOGS_QDEBUG( "logs [ENG] -> LogsDbConnector::releaseDbConnections()" )
   651     CRepository* repository = CRepository::NewL(logsTelConfigurationCRUid);
   589     if ( mReader ){
   652     CleanupStack::PushL(repository);
   590         mReader->stop();
   653     User::LeaveIfError( repository->Get(logsTelMatchDigits, tempMatchLen) );
   591     }
   654     CleanupStack::PopAndDestroy(repository);
   592     delete mLogsRemove;
   655     matchLen = tempMatchLen;
   593     mLogsRemove = 0;
   656 }
   594     LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::releaseDbConnections()" )
       
   595 }