locsrv_pub/landmarks_api/tsrc/bc_landmarks_api/src/testcposlandmarkencoder.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 10:08:56 +0300
branchRCL_3
changeset 14 b88ebe0cbbbe
parent 0 667063e416a2
permissions -rw-r--r--
Revision: 201021 Kit: 2010123

/*
* Copyright (c) 2007 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:  Provides testing of CPosLandmarkEncoder class methods
*
*/



// INCLUDE FILES
#include <EPos_CPosLandmark.h>
#include <EPos_CPosLandmarkDatabase.h>
#include <EPos_CPosLmCategoryManager.h>
#include <EPos_CPosLandmarkCategory.h>
#include <EPos_CPosLandmarkEncoder.h>
#include <LbsPosition.h>
#include "testcposlandmarkencoder.h"
#include <StifParser.h>
#include <Stiftestinterface.h>

// Literals
_LIT8( KPosMimeTypeLandmarkCollectionXml, "application/vnd.nokia.landmarkcollection+xml" );

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::CTestPosLandmarkEncoder
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CTestPosLandmarkEncoder::CTestPosLandmarkEncoder( CStifLogger* aLog )
	{
	iLog = aLog;
	}

// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::NewL
// 
// 
// -----------------------------------------------------------------------------
//	
CTestPosLandmarkEncoder* CTestPosLandmarkEncoder::NewL(CStifLogger* aLog)
	{
	CTestPosLandmarkEncoder* self = new (ELeave) CTestPosLandmarkEncoder( aLog );
	CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop(); 
    return self; 
	}

// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::ConstructL
// 
// 
// -----------------------------------------------------------------------------
//
void CTestPosLandmarkEncoder::ConstructL()
	{
	
	}	

// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::ConstructL
// 
// 
// -----------------------------------------------------------------------------
//
CTestPosLandmarkEncoder::~CTestPosLandmarkEncoder()
	{
	
	}

// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::CreateEncoder
// 
// 
// -----------------------------------------------------------------------------
//
TInt CTestPosLandmarkEncoder::CreateEncoderL( CStifItemParser& /*aItem*/ )
	{	
	CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL( KPosMimeTypeLandmarkCollectionXml );
	iLog->Log(_L("CreateEncoder successful"));
	delete encoder;
	ReleaseLandmarkResources();
	return KErrNone;
	}

// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::SetOutputFile
// 
// 
// -----------------------------------------------------------------------------
//
TInt CTestPosLandmarkEncoder::SetOutputFileL( CStifItemParser& aItem )
	{
	TPtrC exportFilePath;
	TInt err = aItem.GetNextString( exportFilePath );	
	
	CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL( KPosMimeTypeLandmarkCollectionXml );
	CleanupStack::PushL( encoder );
	// Delete output file if already exists
	RFs rfs;
  rfs.Connect();
  rfs.Delete( exportFilePath );
  rfs.Close();
	// Set output file
	encoder->SetOutputFileL( exportFilePath );
	iLog->Log(_L("SetOutputFile successful"));
	CleanupStack::PopAndDestroy( encoder );
	ReleaseLandmarkResources();
	return KErrNone;
	}
	
// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::SetOutputBuffer
// 
// 
// -----------------------------------------------------------------------------
//
TInt CTestPosLandmarkEncoder::SetOutputBufferL( CStifItemParser& /*aItem*/ )
	{
	CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL( KPosMimeTypeLandmarkCollectionXml );
	CleanupStack::PushL( encoder );
	// Set use output buffer
	CBufBase* buffer = encoder->SetUseOutputBufferL();
	iLog->Log(_L("SetOutputBuffer successful"));
	delete buffer;
	CleanupStack::PopAndDestroy( encoder );
	ReleaseLandmarkResources();
	return KErrNone;
	}	
	
// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::AddCollectionData
// 
// 
// -----------------------------------------------------------------------------
//
TInt CTestPosLandmarkEncoder::AddCollectionDataL( CStifItemParser& aItem )
	{
	TPtrC collNamePtr;
	TPtrC collDescPtr;
	TInt err = aItem.GetNextString( collNamePtr );	
	err = aItem.GetNextString( collDescPtr );
	
	CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL( KPosMimeTypeLandmarkCollectionXml );
	CleanupStack::PushL( encoder );
	// Set use output buffer
	CBufBase* buffer = encoder->SetUseOutputBufferL();
	CleanupStack::PushL( buffer );
	// Add Collection Data
	TPosLmCollectionDataId id = EPosLmCollDataCollectionName;
	encoder->AddCollectionDataL( id, collNamePtr );
	//
	id = EPosLmCollDataCollectionDescription;
	encoder->AddCollectionDataL( id, collDescPtr );
	// Finalize Encoding
	//ExecuteAndDeleteLD(encoder->FinalizeEncodingL());
	//
	iLog->Log(_L("AddCollectionData asdf successful")); 
	CleanupStack::PopAndDestroy( 2, encoder );
	ReleaseLandmarkResources();
	return KErrNone;
	}
	
// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::AddLandmarkToEncode
// 
// 
// -----------------------------------------------------------------------------
//
TInt CTestPosLandmarkEncoder::AddLandmarkToEncodeL( CStifItemParser& /*aItem*/ )
	{
	CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL( KPosMimeTypeLandmarkCollectionXml );
	CleanupStack::PushL( encoder );
	// Set use output buffer
	CBufBase* buffer = encoder->SetUseOutputBufferL();
	CleanupStack::PushL( buffer );
	// Create a landmark
	CPosLandmark* landmark = CPosLandmark::NewL();
	CleanupStack::PushL( landmark );
	// Set name
	_LIT( KLmkName, "A Test Landmark" );
	landmark->SetLandmarkNameL( KLmkName );
	// Add Landmark for encoding
	encoder->AddLandmarkL( *landmark );
	// Finalize Encoding
	ExecuteAndDeleteLD( encoder->FinalizeEncodingL() );
	//
	iLog->Log(_L("AddLandmarkToEncode successful")); 
	CleanupStack::PopAndDestroy( 3, encoder );
	ReleaseLandmarkResources();
	return KErrNone;
	}	
	
// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::AddCategoryForLatestLandmark
// 
// 
// -----------------------------------------------------------------------------
//
TInt CTestPosLandmarkEncoder::AddCategoryForLatestLandmarkL( CStifItemParser& /*aItem*/ )
	{
	CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL( KPosMimeTypeLandmarkCollectionXml );
	CleanupStack::PushL( encoder );
	// Set use output buffer
	CBufBase* buffer = encoder->SetUseOutputBufferL();
	CleanupStack::PushL( buffer );
	// Create a landmark
	CPosLandmark* landmark = CPosLandmark::NewL();
	CleanupStack::PushL( landmark );
	// Set name
	_LIT( KLmkName, "A Test Landmark" );
	landmark->SetLandmarkNameL( KLmkName );
	// Add Landmark for encoding
	encoder->AddLandmarkL( *landmark );
	// Create a category
	CPosLandmarkCategory* category = CPosLandmarkCategory::NewL();
	CleanupStack::PushL( category );
	// Set name
	_LIT( KCategoryName, "A Category Name" );
	category->SetCategoryNameL( KCategoryName );
	// Add category for latest landmark
	encoder->AddCategoryForLatestLandmarkL( *category );
	// Finalize Encoding
	ExecuteAndDeleteLD( encoder->FinalizeEncodingL() );
	//
	iLog->Log(_L("AddCategoryForLatestLandmark successful")); 
	CleanupStack::PopAndDestroy( 4, encoder );
	ReleaseLandmarkResources();
	return KErrNone;
	}

// -----------------------------------------------------------------------------
// CTestPosLandmarkEncoder::FinalizeEncoding
// 
// 
// -----------------------------------------------------------------------------
//
TInt CTestPosLandmarkEncoder::FinalizeEncodingL( CStifItemParser& /*aItem*/ )
	{
	CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL( KPosMimeTypeLandmarkCollectionXml );
	CleanupStack::PushL( encoder );
	// Set use output buffer
	CBufBase* buffer = encoder->SetUseOutputBufferL();
	CleanupStack::PushL( buffer );
	// Create a landmark
	CPosLandmark* landmark = CPosLandmark::NewL();
	CleanupStack::PushL( landmark );
	// Set name
	_LIT( KLmkName, "A Test Landmark" );
	landmark->SetLandmarkNameL( KLmkName );
	// Add Landmark for encoding
	encoder->AddLandmarkL( *landmark );
	// Finalize Encoding
	CPosLmOperation* operation = encoder->FinalizeEncodingL();
	CleanupStack::PushL( operation );
	// Execute operation
	operation->ExecuteL();
	//
	iLog->Log(_L("FinalizeEncoding successful")); 
	CleanupStack::PopAndDestroy( 4, encoder );
	ReleaseLandmarkResources();
	return KErrNone;
	}