diff -r 000000000000 -r dd21522fd290 codhandler/codeng/inc/DdParser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/codhandler/codeng/inc/DdParser.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,303 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* Declaration of class TDdParser. +* +* +*/ + + +#ifndef DD_PARSER_H +#define DD_PARSER_H + +// INCLUDES + +#include +#include + +// FORWARD DECLARATION + +class CMediaObjectData; +class CCodData; + +// CLASS DECLARATION + +/** +* DD Parser. +*/ +NONSHARABLE_CLASS( TDdParser ) + { + + public: // constructor + + /** + * Constructor. + */ + inline TDdParser(); + + public: // new methods + + /** + * Parse the buffer into aData. Existing data in aData is lost. + * Leaves on failure; leave code can be KErrCodInvalidDescriptor as well + * as general errors. The resulting data is not checked semantically + * (i.e. mandatory attributes may be missing). + * @param aBuf DD content buffer to be parsed. + * @param aData DD will be parsed into this. + * @param aIsDd2 equals to ETrue for the OMA 2 dd + * @param aIsLicenseTag equals to ETrue if a license tag is presented (for OMA 2 dd) + */ + void ParseL( const TDesC& aBuf, CCodData& aData, const TBool aIsDd2, TBool& aIsLicenseTag ); + + private: // types + + enum TDdAttr ///< DD Attributes. + { + EDdName, ///< DD-Name. + EDdVendor, ///< DD-Vendor. + EDdDescription, ///< DD-Description. + EDdUrl, ///< DD-URL. + EDdSize, ///< DD-Size. + EDdType, ///< DD-Type. + EDdInstallNotify, ///< DD-Install-Notify. + EDdNextUrl, ///< DD-Netx-URL. + EDdInfoUrl, ///< DD-Info-URL. + EDdIcon, ///< DD-Icon. + EDdVersion, ///< DD-Version. + EDdProduct, ///< DD-Product (OMA 2) + EDdMediaObject, ///< DD-MediaObject (OMA 2) + EDdMeta, ///< DD-Meta (OMA 2) + EDdProgressiveDl, ///< DD-progressiveDowloadFlag (OMA 2) + EDdSuppressUserConfirmation, ///< DD-suppressUserConfirmation (OMA 2) + EDdLicense, ///< DD-license (OMA 2) + EDdOrder, ///< DD-order (OMA 2) + EDdText, ///< DD-text (OMA 2) + EDdUpdatedDDURI, + EDdUnknownAttr ///< Future DD attributes. + }; + + private: // parsing + + /** + * Parse document node (top level construct: 'media'). + * @param aDocNode Document node. + */ + void DocNodeL( NW_DOM_DocumentNode_t* aDocNode ); + + /** + * Parse document node for OMA v2 + * @param aDocNode Document node. + */ + void ParseDd2DocNodeL( NW_DOM_DocumentNode_t* aDocNode ); + + /** + * Process child element node (below 'media'). + * @param aElmtNode Element node. + */ + void ElementNodeL( NW_DOM_ElementNode_t* aElmtNode, CMediaObjectData *& aMediaObject ); + + /** + * Parse Media elements for OMA v2 + * @param aElmtNode Document node. + */ + void ParseMediaElementsL( NW_DOM_ElementNode_t* aElmtNode ); + + /** + * Parse Product elements for OMA v2 + * @param aElmtNode Document node. + */ + void ParseProductElementsL( NW_DOM_ElementNode_t* aElmtNode ); + + /** + * Parse Media Object elements for OMA v2 + * @param aElmtNode Document node. + */ + void ParseMediaObjectElementsL( NW_DOM_ElementNode_t* aElmtNode); + + /** + * Parse Meta elements for OMA v2 + * @param aElmtNode Document node. + */ + void ParseMetaElementsL( NW_DOM_ElementNode_t* aElmtNode ); + + /** + * Parse Meta elements for OMA v2 + * @param aElmtNode Document node. + */ + void ParseMetaElementsL( NW_DOM_ElementNode_t* aElmtNode, CMediaObjectData *& aMediaObject ); + + /** + * Parse Object Uri elements for OMA v2 + * @param aElmtNode Document node. + */ + void ParseObjectUriElementsL( NW_DOM_ElementNode_t* aElmtNode, CMediaObjectData *& aMediaObject ); + + /** + * Process child element node (below 'media') for OMA v2 + * @param aElmtNode Element node. + */ + void MediaElementNodeL( NW_DOM_ElementNode_t* aElmtNode); + + /** + * Process child element node (below 'media Object') for OMA v2 + * @param aElmtNode Element node. + */ + void MediaObjElementNodeL( NW_DOM_ElementNode_t* aElmtNode, CMediaObjectData *& aMediaObject ); + + /** + * Process child element node (below 'meta') for OMA v2 + * @param aElmtNode Element node. + */ + void MetaElementNodeL( NW_DOM_ElementNode_t* aElmtNode); + + /** + * Process child element node (below 'meta') for OMA v2 + * @param aElmtNode Element node. + */ + void MetaElementNodeL( NW_DOM_ElementNode_t* aElmtNode, CMediaObjectData *& aMediaObject ); + + /** + * Process child element node (below 'product') for OMA v2 + * @param aElmtNode Element node. + */ + void ProductElementNodeL( NW_DOM_ElementNode_t* aElmtNode); + + /** + * Process child element node (below 'Object Uri') for OMA v2 + * @param aElmtNode Element node. + */ + void ObjUriElementNodeL( NW_DOM_ElementNode_t* aElmtNode, CMediaObjectData *& aMediaObject ); + + /** + * Get 'Media' attribute value from attribute name for OMA v2 + * @param aAttrName Attribute name. + * @return Attribute value. + */ + TDdAttr MediaAttribute( const TDesC& aAttrName ) const; + + /** + * Get 'Media Object' attribute value from attribute name for OMA v2 + * @param aAttrName Attribute name. + * @return Attribute value. + */ + TDdAttr MediaObjAttribute( const TDesC& aAttrName ) const; + + /** + * Get 'Meta' attribute value from attribute name for OMA v2 + * @param aAttrName Attribute name. + * @return Attribute value. + */ + TDdAttr MetaAttribute( const TDesC& aAttrName ) const; + + /** + * Get 'Product' attribute value from attribute name for OMA v2 + * @param aAttrName Attribute name. + * @return Attribute value. + */ + TDdAttr ProductAttribute( const TDesC& aAttrName ) const; + + /** + * Get 'Object Uri' attribute value from attribute name for OMA v2 + * @param aAttrName Attribute name. + * @return Attribute value. + */ + TDdAttr ObjUriAttribute( const TDesC& aAttrName ) const; + + /** + * Get 'DDVersion' attribute value from attribute name for OMA v2 + * @param aAttrName Attribute name. + * @return Attribute value. + */ + TDdAttr DdVersionAttribute( const TDesC& aAttrName ) const; + + /** + * Set data for "media" attribute for OMA v2 + * @param aAttr Attribute. + * @param aValue Value. + */ + void SetMediaAttrL( TDdAttr aAttr, const TDesC& aValue ); + + /** + * Set data for "meta" attribute for OMA v2 + * @param aAttr Attribute. + * @param aValue Value. + */ + void SetMetaAttrL( TDdAttr aAttr, const TDesC& aValue ); + + /** + * Set data for "meta" attribute for OMA v2 + * @param aAttr Attribute. + * @param aValue Value. + */ + void SetMetaAttrL( TDdAttr aAttr, const TDesC& aValue, CMediaObjectData *& aMediaObject ); + + /** + * Set data for "mediaObject" attribute. + * @param aAttr Attribute. + * @param aValue Value. + */ + void SetMediaObjAttrL( TDdAttr aAttr, const TDesC& aValue, CMediaObjectData *& aMediaObject ); + + /** + * Allocate and return PCDATA of element node. + * @param aElmtNode Element node. + * @return PCDATA or NULL. A cleanup item (or NULL) is pushed on the + * cleanup stack. + */ + NW_Ucs2* PcDataLC( NW_DOM_ElementNode_t* aElmtNode ); + + /** + * Get attribute value from attribute name. + * @param aAttrName Attribute name. + * @return Attribute value. + */ + TDdAttr Attribute( const TDesC& aAttrName ) const; + + /** + * Set data attribute. + * @param aAttr Attribute. + * @param aValue Value. + */ + void SetAttrL( TDdAttr aAttr, const TDesC& aValue, CMediaObjectData *& aMediaObject ); + + /** + * Parse node attribute (for OMA v2) E.g.