syncmlfw/ds/syncagent/src/nsmldscmds.cpp
branchRCL_3
changeset 24 13d7c31c74e0
parent 18 2de6635c154b
child 25 b183ec05bd8c
equal deleted inserted replaced
23:4af31167ea77 24:13d7c31c74e0
    63 
    63 
    64 
    64 
    65 // CONSTANTS
    65 // CONSTANTS
    66 _LIT8( KNSmlRoot, "/" );
    66 _LIT8( KNSmlRoot, "/" );
    67 static const TInt KMaxLength = 255;
    67 static const TInt KMaxLength = 255;
       
    68 const TUid KRepositoryId =  { 0x2000CF7E };   
       
    69 const TInt KNsmlDsOrphanEvent = 0xB ;
    68 
    70 
    69 // ============================ MEMBER FUNCTIONS ===============================
    71 // ============================ MEMBER FUNCTIONS ===============================
    70 
    72 
    71 // -----------------------------------------------------------------------------
    73 // -----------------------------------------------------------------------------
    72 // CNSmlDSCmds::CNSmlDSCmds()
    74 // CNSmlDSCmds::CNSmlDSCmds()
  3616 							iBatchBuffer->Increase();
  3618 							iBatchBuffer->Increase();
  3617 							}
  3619 							}
  3618 						}
  3620 						}
  3619 						
  3621 						
  3620 					iItemOpened = EFalse;
  3622 					iItemOpened = EFalse;
  3621 					
  3623 					SmlStatus_t* status = NULL;
       
  3624 					SmlItemList_t** itemList;
       
  3625 					CRepository* rep = NULL;
  3622 					switch ( returnCode )
  3626 					switch ( returnCode )
  3623 						{
  3627 						{
  3624 						case KErrNone:
  3628 						case KErrNone:
  3625 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusItemAdded );
  3629 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusItemAdded );
  3626 
  3630 
  3651 							break;
  3655 							break;
  3652 							
  3656 							
  3653 						case KErrNotSupported:
  3657 						case KErrNotSupported:
  3654 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusUnsupportedMediaTypeOrFormat );
  3658 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusUnsupportedMediaTypeOrFormat );
  3655 							break;
  3659 							break;
       
  3660 							
       
  3661 						case KErrPathNotFound:			
       
  3662 						    // Read the Orphan Event ID from the cenrep
       
  3663 						    rep = CRepository::NewLC(KRepositoryId);
       
  3664                             TRAPD( err, rep->Get(KNsmlDsOrphanEvent, iNewUid) );
       
  3665                             DBG_ARGS(_S("read the cenrep %d %d"), err, iNewUid);
       
  3666                             User::LeaveIfError(err);
       
  3667                             CleanupStack::PopAndDestroy(rep);
       
  3668 							
       
  3669 						    _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : Invalid Parent"));
       
  3670 						    statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusMovedPermanently );
       
  3671 						    DBG_ARGS(_S("Invalid parent: statusid %d"), statusId);
       
  3672 						    status = iStatusToServer->StatusItem( statusId );
       
  3673 						    DBG_ARGS(_S("Invalid parent: status %d"), status);
       
  3674 						    if( status )
       
  3675                                 {
       
  3676                                 SmlItemList_t* newItemList = new( ELeave ) SmlItemList_t;
       
  3677                                 _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : creating a new item"));
       
  3678                                 newItemList->item = new( ELeave ) SmlItem_t;
       
  3679                                 _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : creating a new data"));
       
  3680                                 iStatusToServer->FillItemDataL( newItemList->item );
       
  3681                                 _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : updating"));
       
  3682                                 
       
  3683                                 itemList = &(status->itemList);
       
  3684                                 while ( *itemList )
       
  3685                                     {
       
  3686                                     itemList = &(*itemList)->next;
       
  3687                                     }
       
  3688                                 *itemList = newItemList;
       
  3689                                 _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : updated"));
       
  3690                                 }
       
  3691 						    if ( !iBatchModeOn )
       
  3692                                 {
       
  3693                                 iDSContent.IncreaseServerItemsAdded();
       
  3694                                 clientModifications.iNumAdded = 1;
       
  3695                                 
       
  3696                                 if ( !iAtomicModeOn )
       
  3697                                     {
       
  3698                                     iDSContent.CreateNewMapItemL( iNewUid, aUID, 0 );
       
  3699                                     }
       
  3700                                 else
       
  3701                                     {
       
  3702                                     iDSContent.CreateNewMapItemL( iNewUid, aUID, iAtomicId );
       
  3703                                     }
       
  3704                                 }
       
  3705                             else
       
  3706                                 {
       
  3707                                 clientModifications.iNumAdded = 1;
       
  3708                                 iBatchBuffer->SetStatusEntryId( statusId );
       
  3709                                 }
       
  3710 						    break;
  3656 							
  3711 							
  3657 						default:
  3712 						default:
  3658 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusCommandFailed );
  3713 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusCommandFailed );
  3659 							break;
  3714 							break;
  3660 						}
  3715 						}
  3808 							break;
  3863 							break;
  3809 							
  3864 							
  3810 						case KErrNotSupported:
  3865 						case KErrNotSupported:
  3811 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusUnsupportedMediaTypeOrFormat );
  3866 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusUnsupportedMediaTypeOrFormat );
  3812 							break;
  3867 							break;
       
  3868 							
       
  3869 						case KErrPathNotFound:
       
  3870 						    _DBG_FILE(_S8("CNSmlDSCmds:: REPLACE UpdateL : Invalid Parent"));
       
  3871 						    statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusMovedPermanently );
       
  3872 						    break;
  3813 							
  3873 							
  3814 						default:
  3874 						default:
  3815 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusCommandFailed );
  3875 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusCommandFailed );
  3816 							break;
  3876 							break;
  3817 						}
  3877 						}