remotestoragefw/remotefileengine/src/rsfwdeletestatemachine.cpp
changeset 13 6b4fc789785b
parent 2 c32dc0be5eb4
--- a/remotestoragefw/remotefileengine/src/rsfwdeletestatemachine.cpp	Mon Jan 18 21:00:57 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Delete a file or directory
-*
-*/
-
-
-#include "rsfwdeletestatemachine.h"
-#include "rsfwfileentry.h"
-#include "rsfwfiletable.h"
-#include "rsfwinterface.h"
-#include "rsfwfileengine.h"
-#include "mdebug.h"
-#include "rsfwdirent.h"
-
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::CRsfwDeleteStateMachine
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::CRsfwDeleteStateMachine(TUint aNodeType)
-    : iNodeType(aNodeType)
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::~CRsfwDeleteStateMachine
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::~CRsfwDeleteStateMachine()
-    {
-    iDirEnts.ResetAndDestroy();
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::CompleteRequestL
-// ----------------------------------------------------------------------------
-//
-CRsfwRfeStateMachine::TState* CRsfwDeleteStateMachine::CompleteRequestL(TInt aError)
-    {
-    if (iKidPath)
-        {
-        delete iKidPath;
-        iKidPath = NULL;
-        }
-
-    // If the return code was KErrInUse, the directory we were about to delete
-    // was not empty, and we couldn't delete it. In this case it has anyway
-    //been added to the cache (as a side effect),
-    // so we don't want to delete the fep.
-    if (aError != KErrInUse && iKidCreated)
-        {
-        delete iKidFep;
-        iKidFep = NULL;
-        }
-
-    CompleteAndDestroyState()->SetErrorCode(aError);
-    return CompleteAndDestroyState();
-    }
-
-// Check if exists
-
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TCheckIfCanBeDeleted::TCheckIfCanBeDeleted
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::
-TCheckIfCanBeDeleted::TCheckIfCanBeDeleted(CRsfwDeleteStateMachine* aParent)
-    : iOperation(aParent)
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TCheckIfCanBeDeleted::EnterL
-// ----------------------------------------------------------------------------
-//
-void CRsfwDeleteStateMachine::TCheckIfCanBeDeleted::EnterL()
-    {
-    // Kidname is in the same place in remove and rmdir structures,,,
-    TRfeRemoveInArgs* inArgs =
-        static_cast<TRfeRemoveInArgs*>(iOperation->iInArgs);
-    TPtrC kidName(inArgs->iName);
-
-    // the parent from which we are removing
-    if (!iOperation->Node())
-        {
-        User::Leave(KErrNotFound);
-        }
-
-    DEBUGSTRING16(("removing entry '%S' from fid %d",
-                   &kidName,
-                   iOperation->Node()->Fid().iNodeId));
-
-    // Do we know about the kid yet?
-    iOperation->iKidFep = iOperation->Node()->FindKidByName(kidName);
-    if (!iOperation->iKidFep)
-        {
-        // Create a temporary file entry for the target
-        iOperation->iKidFep = CRsfwFileEntry::NewL(kidName, iOperation->Node());
-        iOperation->iKidCreated = ETrue;
-        }
-
-    // Ensure the type matches with the operation (RmDir() or Delete())
-    if ((iOperation->iKidFep->Type() != KNodeTypeUnknown) &&
-        (iOperation->iKidFep->Type() != iOperation->iNodeType))
-        {
-        DEBUGSTRING(("object type does not match the parameter type!"));
-        User::Leave(KErrArgument);
-        }
-
-    // if the type is unknown, set it from the operation parameter
-    if (iOperation->iKidFep->Type() == KNodeTypeUnknown)
-        {
-        iOperation->iKidFep->SetType(iOperation->iNodeType);
-        }
-
-    // If it is a directory, check that it is empty
-    if (!iOperation->FileEngine()->Disconnected() &&
-        iOperation->iNodeType == KNodeTypeDir)
-        {
-        TInt zero = 0;
-        iOperation->FileEngine()->
-            FetchAndCacheL(*iOperation->iKidFep,
-                           0,
-                           &zero,
-                           &iOperation->iDirEnts,
-                           iOperation);
-        }
-    else
-        {
-        iOperation->HandleRemoteAccessResponse(0, KErrNone);
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TCheckIfCanBeDeleted::CompleteL
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::TState*
-CRsfwDeleteStateMachine::TCheckIfCanBeDeleted::CompleteL()
-    {
-    if ((iOperation->iNodeType == KNodeTypeDir) &&
-        ((iOperation->iDirEnts).Count() > 0))
-        {
-        // Attach the directory itself if it was unknown
-        if (iOperation->iKidCreated)
-            {
-            iOperation->FileEngine()->iFileTable->AddL(iOperation->iKidFep);
-            iOperation->Node()->AddKid(*iOperation->iKidFep);
-            }
-            
-        // if the directory is not empty we cannot delete it
-        // however, let's add its entries to the cache
-        iOperation->FileEngine()->AddToCacheL(
-            *iOperation->iKidFep,
-            &iOperation->iDirEnts,
-            iOperation->FileEngine(),
-            0);
-
-        return iOperation->CompleteRequestL(KErrInUse);
-        }
-    else
-        {
-        return new CRsfwDeleteStateMachine::TDeleteNodeState(iOperation);
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TCheckIfCanBeDeleted::ErrorL
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::TState*
-CRsfwDeleteStateMachine::TCheckIfCanBeDeleted::ErrorL(TInt aCode)
-    {
-    DEBUGSTRING(("kid didn't exist!"));
-    return iOperation->CompleteRequestL(aCode);
-    }
-
-// Remove directory
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TDeleteNodeState::TDeleteNodeState
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::
-TDeleteNodeState::TDeleteNodeState(CRsfwDeleteStateMachine* aParent)
-    : iOperation(aParent)
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TDeleteNodeState::EnterL
-// ----------------------------------------------------------------------------
-//
-void CRsfwDeleteStateMachine::TDeleteNodeState::EnterL()
-    {
-    // Get the path for the actual remove
-    iOperation->iKidPath =
-        iOperation->FileEngine()->FullNameL(*iOperation->iKidFep);
-    if (!iOperation->FileEngine()->Disconnected())
-        {
-        if (iOperation->iNodeType == KNodeTypeDir)
-            {
-            iOperation->
-                FileEngine()->
-                RemoteAccessL()->DeleteDirectoryL(*iOperation->iKidPath,
-                                                  iOperation);
-            }
-        else // KNodeTypFile
-            {
-            iOperation->
-                FileEngine()->
-                RemoteAccessL()->DeleteFileL(*iOperation->iKidPath,
-                                             iOperation);
-            }
-        }
-    else
-        {
-        // Disconnected
-        iOperation->HandleRemoteAccessResponse(0, KErrNone);
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TDeleteNodeState::CompleteL
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::TState* CRsfwDeleteStateMachine::TDeleteNodeState::CompleteL()
-    {
-    if (!iOperation->FileEngine()->Disconnected())
-        {
-        // If the target was already known, remove and destroy it
-        if (!iOperation->iKidCreated)
-            {
-            iOperation->FileEngine()->iFileTable->RemoveL(iOperation->iKidFep);
-            delete iOperation->iKidFep;
-            iOperation->iKidFep = NULL;
-            }
-        }
-
-    iOperation->Node()->SetLocallyDirty();
-    return iOperation->CompleteRequestL(KErrNone);
-    }
-
-// ----------------------------------------------------------------------------
-// CRsfwDeleteStateMachine::TDeleteNodeState::ErrorL
-// ----------------------------------------------------------------------------
-//
-CRsfwDeleteStateMachine::TState*
-CRsfwDeleteStateMachine::TDeleteNodeState::ErrorL(TInt aCode)
-    {
-    return iOperation->CompleteRequestL(aCode);
-    }
-
-
-