--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsmessages/src/senatomentry.cpp Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,204 @@
+/*
+* Copyright (c) 2002-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:
+ *
+*/
+
+
+
+
+
+
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <badesca.h>
+
+#include <SenDomFragmentBase.h>
+#include <xmlengnodelist.h>
+
+#include "senatomentry.h"
+
+#include "sendebug.h"
+#include "senlogger.h"
+
+const TInt KStateParsingMediaGroup = 19; // save state (odd number)
+
+EXPORT_C CSenAtomEntry* CSenAtomEntry::NewL()
+ {
+ TLSLOG_L(KSenMessagesLogChannel, KSenMessagesLogLevel, "CSenAtomEntry::NewL()");
+ CSenAtomEntry* pNew = CSenAtomEntry::NewLC();
+ CleanupStack::Pop( pNew ); // pNew
+ return pNew;
+ }
+
+EXPORT_C CSenAtomEntry* CSenAtomEntry::NewLC()
+ {
+ TLSLOG_L(KSenMessagesLogChannel, KSenMessagesLogLevel, "CSenAtomEntry::NewLC()");
+ CSenAtomEntry* pNew = new (ELeave) CSenAtomEntry();
+ CleanupStack::PushL(pNew);
+ pNew->BaseConstructL();
+ return pNew;
+ }
+
+CSenAtomEntry::CSenAtomEntry () :
+ CSenAtomMessage(),localState(KSenStateSave)
+ {
+ }
+
+EXPORT_C CSenAtomEntry::~CSenAtomEntry()
+ {
+ iBuffer.Close();
+ }
+
+EXPORT_C void CSenAtomEntry::BaseConstructL()
+ {
+ CSenFragmentBase::BaseConstructL(KSenAtomEntryXmlns, KSenAtomEntryName);
+
+ }
+
+// CALLBACKS
+
+EXPORT_C void CSenAtomEntry::OnStartElementL(const RTagInfo& aElement,
+ const RAttributeArray& aAttributes,
+ TInt /*aErrorCode*/)
+ {
+
+
+ const TPtrC8 saxLocalName = aElement.LocalName().DesC();
+ const TPtrC8 saxNsUri = aElement.Uri().DesC();
+ const TPtrC8 saxPrefix = aElement.Prefix().DesC();
+
+ if(saxLocalName==KSenAtomGroupName){
+ localState=KStateParsingMediaGroup;
+ }
+ if(saxLocalName==KSenAtomEntryName){
+ iState=KSenStateIgnore;
+ }
+ CSenFragmentBase::OnStartElementL(aElement,aAttributes,TInt(KErrNone));
+
+ }
+
+EXPORT_C void CSenAtomEntry::OnContentL(const TDesC8& aBytes, TInt /*aErrorCode*/)
+ {
+ iBuffer.Close();
+ iBuffer.Create(aBytes);
+ CSenFragmentBase::OnContentL(aBytes, TInt(KErrNone));
+ }
+
+EXPORT_C void CSenAtomEntry::OnEndElementL(
+ const RTagInfo& aElement,
+ TInt /*aErrorCode*/)
+ {
+ TLSLOG_L(KSenMessagesLogChannel, KSenMessagesLogLevel, "CSenAtomEntry::OnEndElementL");
+
+ const TPtrC8 saxLocalName = aElement.LocalName().DesC();
+ const TPtrC8 saxNsUri = aElement.Uri().DesC();
+ const TPtrC8 saxPrefix = aElement.Prefix().DesC();
+
+ const TPtrC8 tLocalName = LocalName();
+ const TPtrC8 tNsUri = NsUri();
+ const TPtrC8 tPrefix = NsPrefix();
+
+ switch (localState)
+ {
+ case KStateParsingMediaGroup:
+ {
+ if(saxLocalName == KSenAtomGroupName)
+ localState = KSenStateSave;
+ CSenFragmentBase::OnEndElementL(aElement, TInt(KErrNone));
+ }
+ break;
+
+ case KSenStateSave:
+ {
+ if(saxLocalName == KSenAtomTitleName && localState != KStateParsingMediaGroup)
+ {
+
+ if ( iTitle )
+ {
+ delete iTitle;
+ iTitle = 0;
+ }
+ if ( iBuffer.Length()> 0 )
+ {
+ iTitle = iBuffer.AllocL();
+
+ CSenFragmentBase::OnEndElementL(aElement, TInt(KErrNone));
+ }
+ }else
+ if(saxLocalName == KSenAtomIdName && localState != KStateParsingMediaGroup)
+ {
+
+ if ( iIdTag )
+ {
+ delete iIdTag;
+ iIdTag = 0;
+ }
+ if ( iBuffer.Length()> 0 )
+ {
+ iIdTag = iBuffer.AllocL();
+
+ CSenFragmentBase::OnEndElementL(aElement, TInt(KErrNone));
+ }
+ }else
+ if(saxLocalName == KSenAtomPublishedName && localState != KStateParsingMediaGroup)
+ {
+
+ if ( iPublished )
+ {
+ delete iPublished;
+ iPublished = 0;
+ }
+ if ( iBuffer.Length()> 0 )
+ {
+ iPublished = iBuffer.AllocL();
+
+ CSenFragmentBase::OnEndElementL(aElement, TInt(KErrNone));
+ }
+ }else
+ if(saxLocalName == KSenAtomUpdatedName && localState != KStateParsingMediaGroup)
+ {
+
+ if ( iUpdated )
+ {
+ delete iUpdated;
+ iUpdated = 0;
+ }
+ if ( iBuffer.Length()> 0 )
+ {
+ iUpdated = iBuffer.AllocL();
+
+ CSenFragmentBase::OnEndElementL(aElement, TInt(KErrNone));
+ }
+ }
+ else {
+ CSenFragmentBase::OnEndElementL(aElement, TInt(KErrNone));
+ }
+ }
+ break;
+
+ default:
+ CSenFragmentBase::OnEndElementL(aElement, TInt(KErrNone));
+ break;
+ }
+
+ iBuffer.Close();
+
+ }
+
+// SET GET COUNT REMOVE
+
+