--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/brandingserver/tools/bsimport/src/cbsimportfilereader.cpp Thu Dec 17 08:54:49 2009 +0200
@@ -0,0 +1,145 @@
+/*
+* Copyright (c) 2006-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: Import reader opens and reads the XML file to CMDXMLDocument
+* object
+*
+*/
+
+
+#include <f32file.h>
+#include <gmxmldocument.h>
+
+#include "cbsimportfilereader.h"
+#include "importlogwriter.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CBSImportManager::NewL
+// ---------------------------------------------------------------------------
+//
+CBSImportFileReader* CBSImportFileReader::NewL( TBool aUseScheduler )
+ {
+ CBSImportFileReader* self = NewLC( aUseScheduler );
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CBSImportManager::NewLC
+// ---------------------------------------------------------------------------
+//
+CBSImportFileReader* CBSImportFileReader::NewLC( TBool aUseScheduler )
+ {
+ CBSImportFileReader* self = new (ELeave) CBSImportFileReader( aUseScheduler );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CBSImportManager::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CBSImportFileReader::ConstructL()
+ {
+ if( iUseScheduler )
+ {
+ // Install active scheduler
+ iScheduler = new (ELeave) CActiveScheduler();
+ CActiveScheduler::Install( iScheduler );
+ }
+ else
+ {
+ iWaiter = new (ELeave) CActiveSchedulerWait();
+ }
+
+ // Create XML parser
+ iParser = CMDXMLParser::NewL( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CBSImportManager::~CBSImportFileReader
+// ---------------------------------------------------------------------------
+//
+CBSImportFileReader::~CBSImportFileReader()
+ {
+ delete iParser;
+ delete iDocument;
+ delete iWaiter;
+ delete iScheduler;
+ if( iUseScheduler )
+ {
+ CActiveScheduler::Install( NULL );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CBSImportManager::CBSImportFileReader
+// ---------------------------------------------------------------------------
+//
+CBSImportFileReader::CBSImportFileReader( TBool aUseScheduler ) :
+ iUseScheduler( aUseScheduler )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CBSImportManager::ReadXMLFileL
+// ---------------------------------------------------------------------------
+//
+CMDXMLDocument* CBSImportFileReader::ReadXMLFileL( RFs& aFs, const TDesC& aFileName )
+ {
+ RFile file;
+ TInt err = file.Open( aFs, aFileName, EFileRead );
+ if( err )
+ {
+ IMPORT_DP( D_IMPORT_LIT( "ERROR: Unable to open XML file (%S)!" ), &aFileName );
+ User::Leave( err );
+ }
+
+ // takes ownership of file
+ err = iParser->ParseFile( file );
+ if( err )
+ {
+ IMPORT_DP( D_IMPORT_LIT( "ERROR: Unable to read XML file (%S)!" ), &aFileName );
+ User::Leave( err );
+ }
+
+ // Start waiting, so that parser can start working
+ // Code scanner warning active object called without checking whether it is active
+ // or cancelling it first (id:10 )
+ // The active object cannot be active at this point.
+ // Code scanner warning using CActiveScheduler::Start (Id:3)
+ // It is required to use here
+ iUseScheduler ? CActiveScheduler::Start() : iWaiter->Start(); // CSI: 10,3 # See above
+
+ CMDXMLDocument* tmp = iDocument;
+ iDocument = NULL;
+ return tmp;
+ }
+
+// ---------------------------------------------------------------------------
+// From class MMDXMLParserObserver.
+// CBSImportManager::ParseFileCompleteL
+// ---------------------------------------------------------------------------
+//
+void CBSImportFileReader::ParseFileCompleteL()
+ {
+ iDocument = iParser->DetachXMLDoc();
+ // Codescanner warning using CActiveScheduler::Start (Id:4)
+ // It is required to use here
+ iUseScheduler ? CActiveScheduler::Stop() : iWaiter->AsyncStop(); // CSI: 4 # See above
+ }
+
+// End of file