diff -r b3cee849fa46 -r fad26422216a creator/engine/src/creator_randomdataparser.cpp --- a/creator/engine/src/creator_randomdataparser.cpp Tue Aug 31 15:15:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,325 +0,0 @@ -/* -* Copyright (c) 2010 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: -* -*/ - - - -#include -#include -#include -#include "creator_randomdataparser.h" -#include "creator_traces.h" - -// XML element names -_LIT(KRootElement, "creatordata"); -_LIT(KFirstName, "firstname"); -_LIT(KSurname, "surname"); -_LIT(KCompany, "company"); -_LIT(KAddress, "address"); -_LIT(KJobTitle, "jobtitle"); -_LIT(KPhoneNumber, "phonenumber"); -_LIT(KGroupName, "groupname"); -_LIT(KMeetingReason, "meetingreason"); -_LIT(KMeetingPlace, "meetingplace"); -_LIT(KMemoText, "memo"); -_LIT(KAnniversaryReason, "anniversary"); -_LIT(KToDoText, "todo"); -_LIT(KReminderText, "reminder"); -_LIT(KMessageSubject, "messagesubject"); -_LIT(KMessageText, "messagetext"); -_LIT(KCity, "city"); -_LIT(KCountry, "country"); -_LIT(KPostcode, "postcode"); -_LIT(KState, "state"); -_LIT(KPobox, "pobox"); -_LIT(KPrefix, "prefix"); -_LIT(KSuffix, "suffix"); -_LIT(KLandmarkName, "landmarkname"); -_LIT(KLandmarkDescription, "landmarkdescription"); - -using namespace Xml; - -CCreatorRandomDataParser::CCreatorRandomDataParser() - { - } - -void CCreatorRandomDataParser::ConstructL() - { - LOGSTRING("Creator: CCreatorRandomDataParser::ConstructL"); - iElementNameArray = new (ELeave) CDesCArrayFlat(32); - iElementNameArray->InsertL(EFirstName, KFirstName); - iElementNameArray->InsertL(ESurname, KSurname); - iElementNameArray->InsertL(ECompany, KCompany); - iElementNameArray->InsertL(EAddress, KAddress); - iElementNameArray->InsertL(EJobTitle, KJobTitle); - iElementNameArray->InsertL(EPhoneNumber, KPhoneNumber); - iElementNameArray->InsertL(EGroupName, KGroupName); - iElementNameArray->InsertL(EMeetingReason, KMeetingReason); - iElementNameArray->InsertL(EMeetingPlace, KMeetingPlace); - iElementNameArray->InsertL(EMemoText, KMemoText); - iElementNameArray->InsertL(EAnniversaryReason, KAnniversaryReason); - iElementNameArray->InsertL(EToDoText, KToDoText); - iElementNameArray->InsertL(EReminderText, KReminderText); - iElementNameArray->InsertL(EMessageSubject, KMessageSubject); - iElementNameArray->InsertL(EMessageText, KMessageText); - iElementNameArray->InsertL(ECity, KCity); - iElementNameArray->InsertL(ECountry, KCountry); - iElementNameArray->InsertL(EPostcode, KPostcode); - iElementNameArray->InsertL(EState, KState); - iElementNameArray->InsertL(EPobox, KPobox); - iElementNameArray->InsertL(EPrefix, KPrefix); - iElementNameArray->InsertL(ESuffix, KSuffix); - iElementNameArray->InsertL(ELandmarkName, KLandmarkName); - iElementNameArray->InsertL(ELandmarkDescription, KLandmarkDescription); - iContentData = HBufC::NewL(16); - iResultArray = new (ELeave) CDesCArrayFlat(16); - } - -CCreatorRandomDataParser* CCreatorRandomDataParser::NewL() - { - LOGSTRING("Creator: CCreatorRandomDataParser::NewL"); - CCreatorRandomDataParser* self = CCreatorRandomDataParser::NewLC(); - CleanupStack::Pop(); - return self; - } - -CCreatorRandomDataParser* CCreatorRandomDataParser::NewLC() - { - LOGSTRING("Creator: CCreatorRandomDataParser::NewLC"); - CCreatorRandomDataParser* self = new (ELeave) CCreatorRandomDataParser; - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CCreatorRandomDataParser::~CCreatorRandomDataParser() - { - delete iParser; - delete iResultArray; - delete iContentData; - delete iElementNameArray; - } - -void CCreatorRandomDataParser::GetTextFileMode(RFile& aFile, TInt& aFileSize) - { - LOGSTRING("Creator: CCreatorRandomDataParser::GetTextFileMode"); - iScriptTextFormat = EFormatANSIASCII; - - // if we are working with text files, check the type first - TBuf8<4> BOM; - - // first check for UTF-16 - if (aFileSize >= 2 && aFile.Read(0, BOM, 2) == KErrNone) - { - if (BOM.Length()==2 && BOM[0]==0xFF && BOM[1]==0xFE) - { - iScriptTextFormat = EFormatUTF16LE; - aFileSize -= 2; - return; - } - else if (BOM.Length()==2 && BOM[0]==0xFE && BOM[1]==0xFF) - { - iScriptTextFormat = EFormatUTF16BE; - aFileSize -= 2; - return; - } - } - // then check for UTF-8 - if (aFileSize >= 3 && aFile.Read(0, BOM, 3) == KErrNone) - { - if (BOM.Length()==3 && BOM[0]==0xEF && BOM[1]==0xBB && BOM[2]==0xBF) - { - iScriptTextFormat = EFormatUTF8; - aFileSize -= 3; - return; - } - } - - // none of those, seek back to beginning - TInt pos(0); - aFile.Seek(ESeekStart, pos); - } - - - -CDesCArrayFlat* CCreatorRandomDataParser::ParseL(const TDesC& aFileName, const TRandomDataType aDataType) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::ParseL: %S", &aFileName); - - iDataType = aDataType; - - // Create and start XML-parser - if( iParser == 0) - { - _LIT8(KXmlMimeType, "text/xml"); - iParser = CParser::NewL(KXmlMimeType, *this); - } - - RFs filesession; - CleanupClosePushL(filesession); - User::LeaveIfError( filesession.Connect() ); - - iResultArray->Reset(); - - Xml::ParseL(*iParser, filesession, aFileName); - - CleanupStack::PopAndDestroy(&filesession); // filesession - - CDesCArrayFlat* tempArray = new (ELeave) CDesCArrayFlat(8); - CleanupStack::PushL(tempArray); - for (TInt i = 0; i < iResultArray->MdcaCount(); i++) - { - tempArray->AppendL(iResultArray->MdcaPoint(i)); - } - CleanupStack::Pop(tempArray); - return tempArray; - } - -void CCreatorRandomDataParser::OnStartDocumentL(const Xml::RDocumentParameters& /*aDocParam*/, TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnStartDocumentL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - iInsideRootElement = EFalse; - iContentParsingActive = EFalse; - } - -void CCreatorRandomDataParser::OnEndDocumentL(TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnEndDocumentL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - } - -void CCreatorRandomDataParser::OnStartPrefixMappingL(const RString& /*aPrefix*/, - const RString& /*aUri*/, - TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnStartPrefixMappingL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - } - -void CCreatorRandomDataParser::OnEndPrefixMappingL(const RString& /*aPrefix*/, TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnEndPrefixMappingL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - } - -void CCreatorRandomDataParser::OnIgnorableWhiteSpaceL(const TDesC8& /*aBytes*/, TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnIgnorableWhiteSpaceL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - } - -void CCreatorRandomDataParser::OnSkippedEntityL(const RString& /*aName*/, TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnSkippedEntityL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - } - -void CCreatorRandomDataParser::OnProcessingInstructionL(const TDesC8& /*aTarget*/, - const TDesC8& /*aData*/, - TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnProcessingInstructionL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - } - -void CCreatorRandomDataParser::OnError(TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnError: %d", aErrorCode); - - iLastError = aErrorCode; - } - -TAny* CCreatorRandomDataParser::GetExtendedInterface(const TInt32 aUid) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::GetExtendedInterface (UID: %d)", aUid); - return this; - } - -void CCreatorRandomDataParser::OnStartElementL(const Xml::RTagInfo& aElement, - const Xml::RAttributeArray& /*aAttributes*/, - TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnStartElementL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - - const TDesC8& elementName8 = aElement.LocalName().DesC(); - HBufC* elementName16 = Convert8BitTo16BitLC(elementName8); - if (iInsideRootElement || (elementName16->Des() == KRootElement)) - { - iInsideRootElement = ETrue; - } - if (iInsideRootElement && (elementName16->Des() == iElementNameArray->MdcaPoint(iDataType))) - { - iContentParsingActive = ETrue; - iContentData->Des().Zero(); - } - CleanupStack::PopAndDestroy(elementName16); - } - -void CCreatorRandomDataParser::OnEndElementL(const Xml::RTagInfo& aElement, TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnEndElementL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - - const TDesC8& elementName8 = aElement.LocalName().DesC(); - HBufC* elementName16 = Convert8BitTo16BitLC(elementName8); - if (!iInsideRootElement || (elementName16->Des() == KRootElement)) - { - iInsideRootElement = EFalse; - } - CleanupStack::PopAndDestroy(elementName16); - - if (iContentParsingActive) - { - if (iContentData->Des().Length() > 0) - { - iResultArray->AppendL(*iContentData); - } - iContentParsingActive = EFalse; - } - } - -void CCreatorRandomDataParser::OnContentL(const TDesC8& aBytes, TInt aErrorCode) - { - LOGSTRING2("Creator: CCreatorRandomDataParser::OnContentL (Error code: %d)", aErrorCode); - User::LeaveIfError(aErrorCode); - - if (iContentParsingActive) - { - HBufC* data16 = Convert8BitTo16BitLC(aBytes); - TInt newLen = iContentData->Des().Length() + data16->Des().Length(); - iContentData = iContentData->ReAllocL(newLen); - iContentData->Des().Append(*data16); - CleanupStack::PopAndDestroy(data16); - } - } - -HBufC16* CCreatorRandomDataParser::Convert8BitTo16BitLC(const TDesC8& aInput) - { - LOGSTRING("Creator: CCreatorRandomDataParser::Convert8BitTo16BitLC"); - HBufC16* output = NULL; - - output = CnvUtfConverter::ConvertToUnicodeFromUtf8L(aInput); - - CleanupStack::PushL(output); - return output; - } - -TInt CCreatorRandomDataParser::GetError() const - { - return iLastError; - }