diff -r 4843bb5893b6 -r 8b094906a049 mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp Fri Mar 12 15:46:41 2010 +0200 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp Mon Mar 15 12:43:12 2010 +0200 @@ -23,6 +23,7 @@ #include #include +#include "cmtpstoragemgr.h" #include "cmtpmoveobject.h" #include "mtpdppanic.h" @@ -65,6 +66,7 @@ delete iFileMan; delete iPathToMove; delete iNewRootFolder; + iSingletons.Close(); __FLOG_CLOSE; } @@ -77,7 +79,35 @@ { __FLOG_OPEN(KMTPSubsystem, KComponent); } + +TMTPResponseCode CMTPMoveObject::CheckRequestL() + { + __FLOG(_L8("CheckRequestL - Entry")); + TMTPResponseCode result = CMTPRequestProcessor::CheckRequestL(); + if (EMTPRespCodeOK != result) + { + __FLOG(_L8("CheckRequestL with error- Exit")); + return result; + } + const TUint32 KObjectHandle = Request().Uint32(TMTPTypeRequest::ERequestParameter1); + //not taking owernship + iObjectInfo = iRequestChecker->GetObjectInfo(KObjectHandle); + __ASSERT_DEBUG(iObjectInfo, Panic(EMTPDpObjectNull)); + if(!iSingletons.StorageMgr().IsReadWriteStorage(iObjectInfo->Uint(CMTPObjectMetaData::EStorageId))) + { + result = EMTPRespCodeStoreReadOnly; + } + + if ( (EMTPRespCodeOK == result) && (!iSingletons.StorageMgr().IsReadWriteStorage(Request().Uint32(TMTPTypeRequest::ERequestParameter2))) ) + { + result = EMTPRespCodeStoreReadOnly; + } + + __FLOG(_L8("CheckRequestL - Exit")); + return result; + } + /** MoveObject request handler */ @@ -95,20 +125,9 @@ */ void CMTPMoveObject::ConstructL() { + iSingletons.OpenL(); } -void CMTPMoveObject::RunL() - { - __FLOG(_L8("RunL - Entry")); - SendResponseL( EMTPRespCodeOK ); - __FLOG(_L8("RunL - Exit")); - } - -TInt CMTPMoveObject::RunError(TInt /*aError*/) - { - TRAP_IGNORE(SendResponseL(EMTPRespCodeGeneralError)); - return KErrNone; - } /** A helper function of MoveObjectL. @@ -239,13 +258,8 @@ __FLOG(_L8("GetParametersL - Entry")); __ASSERT_DEBUG(iRequestChecker, Panic(EMTPDpRequestCheckNull)); - TUint32 objectHandle = Request().Uint32(TMTPTypeRequest::ERequestParameter1); iStorageId = Request().Uint32(TMTPTypeRequest::ERequestParameter2); iNewParentHandle = Request().Uint32(TMTPTypeRequest::ERequestParameter3); - - //not taking owernship - iObjectInfo = iRequestChecker->GetObjectInfo(objectHandle); - __ASSERT_DEBUG(iObjectInfo, Panic(EMTPDpObjectNull)); if(iNewParentHandle == 0) { @@ -329,74 +343,6 @@ } -/* This function will actually delete the orginal folders from the file system. */ -TMTPResponseCode CMTPMoveObject::FinalPhaseMove() - { - __FLOG(_L8("FinalPhaseMove - Entry")); - TMTPResponseCode ret = EMTPRespCodeOK; - __FLOG(*iPathToMove); - TInt rel = iFileMan->RmDir(*iPathToMove); - __FLOG_VA((_L8("Error code of RmDir is %d"),rel)); - if (rel != KErrNone) - { - ret = EMTPRespCodeGeneralError; - } - __FLOG(_L8("FinalPhaseMove - Exit")); - return ret; - } - -/* Move a single object and update the database */ -void CMTPMoveObject::MoveAndUpdateL(TUint32 aObjectHandle) - { - __FLOG(_L8("MoveAndUpdateL - Entry")); - CMTPObjectMetaData* objectInfo(CMTPObjectMetaData::NewLC()); - RBuf fileName; - fileName.CreateL(KMaxFileName); - fileName.CleanupClosePushL(); - RBuf rightPartName; - rightPartName.CreateL(KMaxFileName); - rightPartName.CleanupClosePushL(); - RBuf oldName; - oldName.CreateL(KMaxFileName); - oldName.CleanupClosePushL(); - - if(iFramework.ObjectMgr().ObjectL(TMTPTypeUint32(aObjectHandle), *objectInfo)) - { - fileName = objectInfo->DesC(CMTPObjectMetaData::ESuid); - oldName = fileName; - - if (objectInfo->Uint(CMTPObjectMetaData::EDataProviderId) == iFramework.DataProviderId()) - { - rightPartName = fileName.Right(fileName.Length() - iPathToMove->Length()); - - if((iNewRootFolder->Length() + rightPartName.Length()) > fileName.MaxLength()) - { - User::Leave(KErrCorrupt); - } - - fileName.Zero(); - fileName.Append(*iNewRootFolder); - fileName.Append(rightPartName); - objectInfo->SetDesCL(CMTPObjectMetaData::ESuid, fileName); - objectInfo->SetUint(CMTPObjectMetaData::EStorageId, iStorageId); - iFramework.ObjectMgr().ModifyObjectL(*objectInfo); - } - } - else - { - User::Leave(KErrCorrupt); - } - - iFileMan->Move(oldName, fileName); - - CleanupStack::PopAndDestroy(&oldName); - CleanupStack::PopAndDestroy(&rightPartName); - CleanupStack::PopAndDestroy(&fileName); - CleanupStack::PopAndDestroy(objectInfo); - __FLOG(_L8("MoveAndUpdateL - Exit")); - } - -