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 } |