landmarks/locationlandmarks/tsrc/LandmarkTestModule/TestProvider/src/CDbManTestPluginBase.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:37:04 +0300
branchRCL_3
changeset 44 2b4ea9893b66
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2005 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: 
*   ?description_line
*
*/



// INCLUDE FILES
//#include <EPos_PosLmDbInfoExtension.h>
#include "CDbManTestPluginBase.h"
#include "FT_RPosLandmarkServer.h"


// CONSTANTS
_LIT(KPluginProtocol, "test");

// MEMBER FUNCTIONS

// Destructor
CDbManTestPluginBase::~CDbManTestPluginBase()
    {
    iDatabases.ResetAndDestroy();
    }

CDbManTestPluginBase::CDbManTestPluginBase()
    {
    }

// -----------------------------------------------------------------------------
// CDbManTestPluginBase::NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CDbManTestPluginBase* CDbManTestPluginBase::NewL(TAny* aConstructionParams)
    {
    CDbManTestPluginBase* self = new( ELeave ) CDbManTestPluginBase;
    CleanupStack::PushL(self);
    self->BaseConstructL(aConstructionParams);
    CleanupStack::Pop(self);
    return self;

    }
 
// ---------------------------------------------------------
// CDbManTestPluginBase::ListDatabasesLC
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
CDesCArray* CDbManTestPluginBase::ListDatabasesLC() 
    {
    TInt count = iDatabases.Count();
    CDesCArrayFlat* result = 
       new(ELeave) CDesCArrayFlat(count == 0 ? 1 : count);
    CleanupStack::PushL(result);

    for (TInt i = 0; i < count; i++)
        {
        result->AppendL(iDatabases[i]->DatabaseUri());
        }
    return result;
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::ListDatabasesL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::ListDatabasesL(
               RPointerArray<HPosLmDatabaseInfo>& aDatabaseInfoArray
        ) 
    {
    TInt count = iDatabases.Count();

    for (TInt i = 0; i < count; i++)
        {
        HPosLmDatabaseInfo* tmpDbInfo = 
            HPosLmDatabaseInfo::NewLC(*(iDatabases[i]));
        aDatabaseInfoArray.AppendL(tmpDbInfo);
        CleanupStack::Pop(tmpDbInfo);
        }
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::RegisterDatabaseL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::RegisterDatabaseL(
               HPosLmDatabaseInfo& aDatabaseInfo
        ) 
    {
    if (DatabaseExistsL(aDatabaseInfo.DatabaseUri()))
        {
        User::Leave(KErrAlreadyExists);
        }
    HPosLmDatabaseInfo* tmpDbInfo = 
        HPosLmDatabaseInfo::NewLC(aDatabaseInfo);
    iDatabases.AppendL(tmpDbInfo);
    CleanupStack::Pop(tmpDbInfo);
    
    TPosLmDatabaseEvent event;
    event.iEventType = EPosLmDbDatabaseRegistered;
    Session().ReportEvent(event, aDatabaseInfo.DatabaseUri());    
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::UnregisterDatabaseL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::UnregisterDatabaseL(
               const TDesC& aDatabaseUri
        ) 
    {
    TInt index = FindUri(aDatabaseUri);
    User::LeaveIfError(index);
    delete iDatabases[index];
    iDatabases.Remove(index);
    
    TPosLmDatabaseEvent event;
    event.iEventType = EPosLmDbDatabaseUnregistered;
    Session().ReportEvent(event, aDatabaseUri);
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::UnregisterAllDatabasesL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::UnregisterAllDatabasesL() 
    {
    iDatabases.ResetAndDestroy();
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::ModifyDatabaseSettingsL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::ModifyDatabaseSettingsL(
               const TDesC& aDatabaseUri,
               const TPosLmDatabaseSettings& aDatabaseSettings
        ) 
    {
    TInt index = FindUri(aDatabaseUri);
    User::LeaveIfError(index);
    iDatabases[index]->Settings() = aDatabaseSettings;
    
    TPosLmDatabaseEvent event;
    event.iEventType = EPosLmDbSettingsModified;
    Session().ReportEvent(event, aDatabaseUri);
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::GetDatabaseInfoL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::GetDatabaseInfoL(
            HPosLmDatabaseInfo& aDatabaseInfo
        ) 
    {
    TInt index = FindUri(aDatabaseInfo.DatabaseUri());
    User::LeaveIfError(index);
    HPosLmDatabaseInfo* dbInfo = iDatabases[index];
    aDatabaseInfo.Settings() = dbInfo->Settings();
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::DatabaseExistsL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
TBool CDbManTestPluginBase::DatabaseExistsL( 
               const TDesC&  aDatabaseUri
        ) 
    {
    return FindUri(aDatabaseUri) >= 0 ? ETrue : EFalse;
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::CreateDatabaseL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::CreateDatabaseL( 
               HPosLmDatabaseInfo& aDatabaseInfo
        ) 
    {
    // Do nothing
    //RegisterDatabaseL(aDatabaseInfo);
    //
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::DeleteDatabaseL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::DeleteDatabaseL(
               const TDesC&  aDatabaseUri
        ) 
    {
    UnregisterDatabaseL(aDatabaseUri);
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::CopyDatabaseL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CDbManTestPluginBase::CopyDatabaseL(
               const TDesC&  aSourceUri,
               const TDesC&  aTargetUri
        ) 
    {
    TInt srcIndex = FindUri(aSourceUri);
    User::LeaveIfError(srcIndex);
    TInt trgIndex = FindUri(aTargetUri);
    if (trgIndex >= 0)
        {
        User::Leave(KErrAlreadyExists);
        }
    HPosLmDatabaseInfo* trgInfo = 
        HPosLmDatabaseInfo::NewLC(aTargetUri);
    iDatabases.AppendL(trgInfo);
    CleanupStack::Pop(trgInfo);
    }
    
// ---------------------------------------------------------
// CDbManTestPluginBase::DatabaseMedia
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
TMediaType CDbManTestPluginBase::DatabaseMedia(
               const TDesC& /* aDatabaseUri */
        ) 
    {
    return EMediaRemote;
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::DatabaseDrive
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
TChar CDbManTestPluginBase::DatabaseDrive(
               const TDesC& /* aDatabaseUri */
        ) 
    {
    return 'U';
    }
    
// ---------------------------------------------------------
// CDbManTestPluginBase::Protocol
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
TPtrC CDbManTestPluginBase::Protocol() 
    {
    return TPtrC(KPluginProtocol);
    }

// ---------------------------------------------------------
// CDbManTestPluginBase::FindUri
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
TInt CDbManTestPluginBase::FindUri(const TDesC& aUri) 
    {
    TInt index;
    TInt count = iDatabases.Count();
    TBool found = EFalse;
    
    for (index = 0; index < count && !found; index++)
        {
        if (aUri.Compare(iDatabases[index]->DatabaseUri()) == 0)
            {
            found = ETrue;
            }
        }
    index--;

    if (!found)
        {
        index = KErrNotFound;
        }
    return index;
    }




//  End of File