mtpdataproviders/mtppictbridgedp/pictbridgeengine/src/dpsxmlparser.cpp
branchRCL_3
changeset 20 4a793f564d72
parent 19 0aa8cc770c8a
child 21 74aa6861c87d
--- a/mtpdataproviders/mtppictbridgedp/pictbridgeengine/src/dpsxmlparser.cpp	Tue Aug 31 16:03:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,445 +0,0 @@
-/*
-* Copyright (c) 2006, 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:  This class parses the dps xml script. 
-*
-*/
-
-
-#include <e32debug.h>
-#include "dpsxmlparser.h"
-#include "dpsconst.h"
-#include "pictbridge.h"
-#include "dpsxmlstring.h"
-
-#ifdef _DEBUG
-#	define IF_DEBUG(t) {RDebug::t;}
-#   define PRINT_DES(t)\
- {TBuf<KMaxArgLen> _buf; _buf.Copy(t);RDebug::Print(_L("---%S"), &_buf);}
-#else
-#	define IF_DEBUG(t)
-#   define PRINT_DES(t)
-#endif
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CDpsXmlParser* CDpsXmlParser::NewL(CDpsEngine* aEngine)
-	{
-    IF_DEBUG(Print(_L("CDpsXmlParser::NewL")));
-    CDpsXmlParser* self = new (ELeave) CDpsXmlParser(aEngine);
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-CDpsXmlParser::~CDpsXmlParser()
-    {
-    IF_DEBUG(Print(_L(">>>~CDpsXmlParser")));
-    iDpsArgs.Close();
-    __IF_DEBUG(Print(_L("<<<~CDpsXmlParser")));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-CDpsXmlParser::CDpsXmlParser(CDpsEngine* aEngine) : iEngine(aEngine)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::Ctor")));
-	Reset();
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::Ctor")));
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CDpsXmlParser::OnStartDocumentL(
-		const RDocumentParameters& /*aDocParam*/, TInt aErrorCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnStartDocumentL")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("---, error code is %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnStartDocumentL")));
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CDpsXmlParser::OnEndDocumentL(TInt aErrorCode)
-	{
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnEndDocumentL")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("---, error code is %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-    
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnEndDocumentL")));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-void CDpsXmlParser::OnStartElementL(const RTagInfo& aElement, 
-									const RAttributeArray& aAttributes, 
-									TInt aErrCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnStartElementL")));
-    
-    if (aErrCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("---, error code is %d"), aErrCode));
-        User::Leave(aErrCode);
-        }
-    if (aAttributes.Count() > 1)
-        {
-        IF_DEBUG(Print(_L("---cannot have more than one attribute!")));
-        User::Leave(KErrArgument);
-        }
-    	
-    // Gets the name of the tag
-    const TDesC8& name = aElement.LocalName().DesC();
-    
-    IF_DEBUG(Print(_L("---Start"))); PRINT_DES(name);
-	
-    //Checks the element
-    // this is the first layer <dps>
-    if (!name.Compare(KDpsXml))
-        {
-        iAction = EDpsXmlStart;
-        }
-    // this is the second layer	<input|output>
-    else if (!name.Compare(KDpsXmlOutput))
-        {
-        iAction = EDpsXmlOutput;
-        }
-    else if (!name.Compare(KDpsXmlInput))
-        {
-        // operation and event cannot be distiguised here
-        iAction = EDpsXmlInput;
-        }
-    // this is the third layer <operation|event|result>	
-    else if (iAction == EDpsXmlOutput && !name.Compare(KDpsXmlResult))
-        {
-        // output must be result
-        iAction = EDpsXmlResult;
-        }		
-    else if (iAction == EDpsXmlInput &&
-        (!name.Compare(iEngine->DpsParameters()->iDpsEventStrings[0]) ||
-        !name.Compare(iEngine->DpsParameters()->iDpsEventStrings[1])))
-        {
-        if (!name.Compare(iEngine->DpsParameters()->iDpsEventStrings[0]))
-            {
-            iDpsEvent = EDpsEvtNotifyJobStatus;
-            }
-        else
-            {
-            iDpsEvent = EDpsEvtNotifyDeviceStatus;	
-            }
-        iAction = EDpsXmlEvent;	
-        }
-    else if (iAction == EDpsXmlInput || iAction == EDpsXmlResult)
-        {
-        iAction = EDpsXmlOperation;
-        for (TInt i= 0; i < EDpsOpMax-1; i++) //i=0 as AppendL() method adds item on first free position in array
-            {
-            if (!name.Compare(iEngine->DpsParameters()->iDpsOperationStrings[i]))
-                {
-                IF_DEBUG(Print(_L("---found the operation")));
-                PRINT_DES(name);
-                iDpsOperation = (TDpsOperation)(i+1);// i+1 to by pass first operation EDpsOpEmpty in enum which is not added to array
-                break;
-                }
-            }
-        }
-		
-    // below is the fourth layer, e.g. the argument list/element. there
-    // could be many arugments, but only one element	
-    else if (iAction == EDpsXmlOperation || iAction == EDpsXmlEvent)
-        {
-        // only element in output is capability
-        if (!name.Compare(iEngine->DpsParameters()->iDpsElementStrings[0]))
-            {
-            IF_DEBUG(Print(_L("---the element is")));
-            PRINT_DES(name);
-            iElement = EDpsCapability;
-            }
-        else
-            {
-            for (TInt i = 0; i < EDpsArgMax; i++)
-                {
-                if (!name.Compare(iEngine->DpsParameters()->iDpsArgStrings[i]))
-                    {
-                    IF_DEBUG(Print(_L("---the argument is ")));
-                    PRINT_DES(name);	
-                    TDpsArg arg;
-                    arg.iElement = (TDpsArgument)i;
-                    arg.iContent.Copy(_L(""));
-                    iDpsArgs.Append(arg);
-                    break;
-                    }
-                }
-            }
-		
-        }
-    else
-        {
-        // something wrong
-        IF_DEBUG(Print(_L("--- non-PB element! %S"), &name));
-        User::Leave(KErrNotSupported);
-        }
-    if (aAttributes.Count() == 1)
-        {
-        ParseAttributesL(aAttributes, name);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnStartElementL")));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	     
-void CDpsXmlParser::ParseAttributesL(const RAttributeArray& aAttributes, 
-                                     const TDesC8& tag)
-    {
-    // element
-    const TDesC8& name = aAttributes[0].Attribute().LocalName().DesC();
-    // only "layouts" and "paperTypes" have attributes
-    if (tag.Compare(KDpsXmlPaperTypes) && tag.Compare(KDpsXmlLayouts))
-        {
-        // error
-        IF_DEBUG(Print(_L("--- this tag have no attribute")));
-        PRINT_DES(name);
-        User::Leave(KErrArgument);
-        }
-    // the element of the attributes must be "paperSize"	
-    if (name.Compare(KDpsXmlPaperSize))
-        {
-        // error
-        IF_DEBUG(Print(_L("--- wrong attribute")))
-        PRINT_DES(name);
-        User::Leave(KErrArgument);
-        }
-    // value
-    HBufC8* value = aAttributes[0].Value().DesC().AllocLC();
-    TUint32 result;    
-    TLex8 converter(*value);
-    TInt error = converter.Val(result, EHex);
-    if (error != KErrNone)
-        {
-        IF_DEBUG(Print(_L("--- convert error %d"), error));
-        User::Leave(error);
-        }
-    iAttrib = result >> KShiftLength; 
-    CleanupStack::PopAndDestroy(value);
-    IF_DEBUG(Print(_L("--- attribte value %x"), result));
-     
-    }
-    
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-void CDpsXmlParser::OnEndElementL(const RTagInfo& aElement, 
-								  TInt aErrorCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnEndElementL")));
-    
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("--- error code is %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-        
-    // Get the name of the tag
-    const TDesC8& name = aElement.LocalName().DesC();
-    PRINT_DES(name);
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnEndElementL")));	
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CDpsXmlParser::OnContentL(const TDesC8& aBytes, TInt aErrorCode)
-	{
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnContentL content is")));
-    PRINT_DES(aBytes);
-    
-    if (aErrorCode != KErrNone)
-   	    {
-        IF_DEBUG(Print(_L("--- error code %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }	
-    if (aBytes[0] >= KSOH && aBytes[0] <= KSpace)
-        {
-        IF_DEBUG(Print(_L("the unprintable char %d"), aBytes[0]));
-        return; 
-        }
-    // parses the result	
-    if (iAction == EDpsXmlResult)
-        {
-        TUint32 value;
-        TLex8 converter(aBytes);
-        TInt error = converter.Val(value, EHex);
-        if (error != KErrNone)
-            {
-            IF_DEBUG(Print(_L("--- convert error %d"), error));
-            User::Leave(error);
-            }
-        IF_DEBUG(Print(_L("--- result %x"), value));
-        // we have got the result
-        iDpsResult.iMajorCode = 
-            static_cast<TDpsResultMajorCode>(value >> KShiftLength);
-        iDpsResult.iMinorCode = 
-            static_cast<TDpsResultMinorCode>(value & KDpsMinorMask);
-        }
-    // gets the argument	
-    else if (iAction == EDpsXmlOperation || iAction == EDpsXmlEvent)
-        {
-        iDpsArgs[iDpsArgs.Count() - 1].iContent.Copy(aBytes);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnContentL")));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CDpsXmlParser::OnStartPrefixMappingL(const RString& /*aPrefix*/, 
-										  const RString& /*aUri*/, 
-										  TInt aErrorCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnStartPrefixMappingL")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("--- error code %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnStartPrefixMappingL")));	
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-void CDpsXmlParser::OnEndPrefixMappingL(const RString& /*aPrefix*/, 
-									    TInt aErrorCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnEndPrefixMappingL")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("--- error code %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnEndPrefixMappingL")));	
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CDpsXmlParser::OnIgnorableWhiteSpaceL(const TDesC8& /*aBytes*/, 
-                                           TInt aErrorCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnIgnorableWhiteSpaceL")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("---error code %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnIgnorableWhiteSpaceL")));	
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-void CDpsXmlParser::OnSkippedEntityL(const RString& /*aName*/, 
-								     TInt aErrorCode)
-	{
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnSkippedEntityL")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("--- error code %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnSkippedEntityL")));	
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-void CDpsXmlParser::OnProcessingInstructionL(const TDesC8& /*aTarget*/, 
-											 const TDesC8& /*aData*/, 
-											 TInt aErrorCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnProcessingInstructionL")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("--- error code %d"), aErrorCode));
-        User::Leave(aErrorCode);
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnProcessingInstructionL")));	
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-void CDpsXmlParser::OnError(TInt aErrorCode)
-    {
-    IF_DEBUG(Print(_L(">>>CDpsXmlParser::OnError()")));
-    if (aErrorCode != KErrNone)
-        {
-        IF_DEBUG(Print(_L("---error code %d"), aErrorCode));
-        }
-    IF_DEBUG(Print(_L("<<<CDpsXmlParser::OnError()")));	
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//	
-
-TAny* CDpsXmlParser::GetExtendedInterface(const TInt32 aUid)
-    {
-    return aUid == MDpsExtensionHandler::EInterfaceUid ?
-    static_cast<MDpsExtensionHandler*>(this) : 0;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//  
-void CDpsXmlParser::Reset()
-    {
-    iDpsArgs.Reset();
-    iAction = EDpsXmlEmpty;
-    iDpsEvent = EDpsEvtEmpty; 
-    iDpsOperation = EDpsOpEmpty;
-    iElement = EDpsEleEmpty; 
-    iAttrib = 0;
-    }
-