activityfw/storage/server/src/afstorage.cpp
changeset 124 e36b2f4799c0
parent 121 0b3699f6c654
equal deleted inserted replaced
121:0b3699f6c654 124:e36b2f4799c0
   240     CleanupStack::PopAndDestroy(query);
   240     CleanupStack::PopAndDestroy(query);
   241     }
   241     }
   242 
   242 
   243 // -----------------------------------------------------------------------------
   243 // -----------------------------------------------------------------------------
   244 /**
   244 /**
   245  * Register new activity
       
   246  * @param appId - application id
       
   247  * @param actId - activity id
       
   248  * @param flags - activity flags
       
   249  * @param imgSrc - activity thumbnail source
       
   250  * @param privateData - activity private data
       
   251  * @param publicData - activity public data
       
   252  */
       
   253 void CAfStorage::AddActivityL(CAfEntry& entry)
       
   254     {
       
   255     //verify if row already exists
       
   256     TInt errNo(KErrNone);
       
   257     RDbView view;
       
   258     CleanupClosePushL(view);
       
   259     TRAP( errNo, GetActivityForUpdateL(view, entry.ApplicationId(), entry.ActivityId()));
       
   260     if( KErrNone == errNo ) 
       
   261         {
       
   262         User::Leave(KErrAlreadyExists);
       
   263         }
       
   264     CleanupStack::PopAndDestroy(&view);
       
   265 
       
   266     //write table
       
   267     RDbTable table;
       
   268     CleanupClosePushL(table);
       
   269     User::LeaveIfError(table.Open(iActDb, KActivityTableName, table.EUpdatable));
       
   270     CDbColSet *row = table.ColSetL();
       
   271     CleanupStack::PushL(row);
       
   272     
       
   273     TTime time;
       
   274     time.UniversalTime();
       
   275     
       
   276     table.InsertL();
       
   277     TRAP(errNo,
       
   278     table.SetColL(row->ColNo(KApplicationColumnName), TInt64(entry.ApplicationId()));
       
   279     table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId());
       
   280     table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName());    
       
   281     table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags());
       
   282     table.SetColL(row->ColNo(KTimestampColumnName), time.DateTime());
       
   283     ExternalizeDataL(table, entry, row->ColNo(KDataColumnName) );
       
   284     
       
   285     table.PutL();)
       
   286     if( KErrNone != errNo )
       
   287         {
       
   288         table.Cancel();
       
   289         User::Leave(errNo);
       
   290         }
       
   291     CleanupStack::PopAndDestroy(row);
       
   292     CleanupStack::PopAndDestroy(&table);
       
   293     }
       
   294 
       
   295 // -----------------------------------------------------------------------------
       
   296 /**
       
   297  * Update activity
       
   298  * @param entry - activity data
       
   299  */
       
   300 void CAfStorage::UpdateActivityL(CAfEntry& entry)
       
   301     {
       
   302     TTime time;
       
   303     time.UniversalTime();
       
   304     RDbView view;
       
   305     CleanupClosePushL(view);
       
   306     GetActivityForUpdateL(view, entry.ApplicationId(), entry.ActivityId());
       
   307     view.UpdateL();
       
   308     TRAPD(errNo,
       
   309     CDbColSet* colSet = view.ColSetL();
       
   310     CleanupStack::PushL(colSet);
       
   311 
       
   312     view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags());
       
   313     view.SetColL(colSet->ColNo(KTimestampColumnName), time.DateTime());
       
   314     view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName());    
       
   315     ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName));
       
   316 
       
   317     view.PutL();
       
   318     CleanupStack::PopAndDestroy(colSet);)
       
   319 
       
   320     if(KErrNone != errNo)
       
   321         {
       
   322         view.Cancel();
       
   323         User::Leave(errNo);
       
   324         }
       
   325     CleanupStack::PopAndDestroy(&view);
       
   326     }
       
   327 
       
   328 // -----------------------------------------------------------------------------
       
   329 /**
       
   330  * Save activity
   245  * Save activity
   331  * @param entry - activity data
   246  * @param entry - activity data
   332  */
   247  */
   333 void CAfStorage::SaveActivityL(CAfEntry &entry)
   248 void CAfStorage::SaveActivityL(CAfEntry &entry)
   334 {
   249 {
   335     TTime time;
       
   336     time.UniversalTime();
       
   337     // @todo check if this can be tidied up
   250     // @todo check if this can be tidied up
   338     //verify if row already exists
   251     //verify if row already exists
   339     TInt errNo(KErrNone);
   252     TInt errNo(KErrNone);
   340     RDbView view;
   253     RDbView view;
   341     CleanupClosePushL(view);
   254     CleanupClosePushL(view);
   347         TRAPD(errNo,
   260         TRAPD(errNo,
   348         CDbColSet* colSet = view.ColSetL();
   261         CDbColSet* colSet = view.ColSetL();
   349         CleanupStack::PushL(colSet);
   262         CleanupStack::PushL(colSet);
   350 
   263 
   351         view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags());
   264         view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags());
   352         view.SetColL(colSet->ColNo(KTimestampColumnName), time.DateTime());
   265         view.SetColL(colSet->ColNo(KTimestampColumnName), entry.Timestamp());
   353         view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName());
   266         view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName());
   354         ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName));
   267         ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName));
   355 
   268 
   356         view.PutL();
   269         view.PutL();
   357         CleanupStack::PopAndDestroy(colSet);)
   270         CleanupStack::PopAndDestroy(colSet);)
   363             }
   276             }
   364         }
   277         }
   365     else
   278     else
   366         {
   279         {
   367         // insert
   280         // insert
   368 
   281         
   369         //write table
   282         //write table
   370         RDbTable table;
   283         RDbTable table;
   371         CleanupClosePushL(table);
   284         CleanupClosePushL(table);
   372         User::LeaveIfError(table.Open(iActDb, KActivityTableName, table.EUpdatable));
   285         User::LeaveIfError(table.Open(iActDb, KActivityTableName, table.EUpdatable));
   373         CDbColSet *row = table.ColSetL();
   286         CDbColSet *row = table.ColSetL();
   377         TRAP(errNo,
   290         TRAP(errNo,
   378         table.SetColL(row->ColNo(KApplicationColumnName), TInt64(entry.ApplicationId()));
   291         table.SetColL(row->ColNo(KApplicationColumnName), TInt64(entry.ApplicationId()));
   379         table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId());
   292         table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId());
   380         table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName());
   293         table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName());
   381         table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags());
   294         table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags());
   382         table.SetColL(row->ColNo(KTimestampColumnName), time.DateTime());
   295         table.SetColL(row->ColNo(KTimestampColumnName), entry.Timestamp());
   383         ExternalizeDataL(table, entry, row->ColNo(KDataColumnName));
   296         ExternalizeDataL(table, entry, row->ColNo(KDataColumnName));
   384         table.PutL();)
   297         table.PutL();)
   385         if (KErrNone != errNo) {
   298         if (KErrNone != errNo) {
   386             table.Cancel();
   299             table.Cancel();
   387             User::Leave(errNo);
   300             User::Leave(errNo);
   584 
   497 
   585     const TInt flagsOffset(row->ColNo(KFlagsColumnName)),
   498     const TInt flagsOffset(row->ColNo(KFlagsColumnName)),
   586                applicationOffset(row->ColNo(KApplicationColumnName)),
   499                applicationOffset(row->ColNo(KApplicationColumnName)),
   587                activityOffset(row->ColNo(KActivityColumnName)),
   500                activityOffset(row->ColNo(KActivityColumnName)),
   588                customNameOffset(row->ColNo(KCustomNameColumnName)),
   501                customNameOffset(row->ColNo(KCustomNameColumnName)),
   589                dataOffset(row->ColNo(KDataColumnName));
   502                dataOffset(row->ColNo(KDataColumnName)),
       
   503                timestampOffset(row->ColNo(KTimestampColumnName));
   590 
   504 
   591     RBuf activityName;
   505     RBuf activityName;
   592     CleanupClosePushL(activityName);
   506     CleanupClosePushL(activityName);
   593 
   507 
   594     RBuf customName;
   508     RBuf customName;
   609                                           src.ColInt64(applicationOffset),
   523                                           src.ColInt64(applicationOffset),
   610                                           activityName,
   524                                           activityName,
   611                                           customName,
   525                                           customName,
   612                                           KNullDesC,
   526                                           KNullDesC,
   613                                           KNullDesC8,
   527                                           KNullDesC8,
   614                                           KNullDesC8);
   528                                           KNullDesC8,
       
   529                                           src.ColTime(timestampOffset));
   615         if( CAfEntry::Public == rights && 
   530         if( CAfEntry::Public == rights && 
   616             (entry->Flags() & CAfEntry::Invisible) )
   531             (entry->Flags() & CAfEntry::Invisible) )
   617             {
   532             {
   618             CleanupStack::PopAndDestroy(entry);
   533             CleanupStack::PopAndDestroy(entry);
   619             continue;
   534             continue;