diff -r 000000000000 -r 62f9d29f7211 webservices/wsstar/wsstarpolicy/inc/senwspolicymanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsstar/wsstarpolicy/inc/senwspolicymanager.h Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,387 @@ +/* +* Copyright (c) 2002-2005 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: Header declaration +* +*/ + + + + + + + + +#ifndef SEN_WS_POLICY_MANAGER_H +#define SEN_WS_POLICY_MANAGER_H + +// INCLUDES +#include "msenwspolicymanager.h" + +#include +#include // RFileLogger + +#include +#include +#include + +// FORWARD DECLARATIONS +class MSenCoreServiceManager; +class CSenWSPolicyIdentifier; +class CSenWSPolicyProperties; +class CSenParser; +class CSenWSPolicyLoader; +class CNormalizedPolicyConatiner; +class CExpiredPolicy; +class CConsumerContainer; +// CLASS DECLARATION +typedef RPointerArray RNormalizedArray; +typedef RPointerArray RExpiredPolicyArray; +typedef RPointerArray RPolicyConsumerArray; + +class CSenWSPolicyManager: public CBase , public MSenWsPolicyManager + { + public: + IMPORT_C static CSenWSPolicyManager* NewL(MSenCoreServiceManager& aManager); + + IMPORT_C static CSenWSPolicyManager* NewLC(MSenCoreServiceManager& aManager); + + IMPORT_C virtual ~CSenWSPolicyManager(); + + IMPORT_C TInt RegisterWsPolicyL(CSenWSDescription* aPattern, + TInt& aErrorTo); + + IMPORT_C TInt UnRegisterWsPolicyL(CSenWSDescription* aPattern, + TInt& aErrorTo); + + //add a new Policy to existing SD whose endpoints are already registered by Register + IMPORT_C TInt AddWsPolicyL(CSenWSDescription* aPattern, const TDesC8& aUri, + const TDesC8& aPolicy, TInt& aErrorTo); + + //remove a policy from existing SD. The Metadataendpoint will not be removed + IMPORT_C TInt RemoveWsPolicyL( CSenWSDescription* aPattern, + const TDesC8& aUri, TInt& aErrorTo); + + + IMPORT_C CSenElement* WsPolicyL( CSenWSDescription* aPattern, + const TDesC8& aUri, TInt& aErrorTo); + + IMPORT_C TInt ExpiredPoliciesL(RExpiredPolicyArray& aArray, TInt& aErrorTo); + + IMPORT_C TInt AddPolicyConsumerL(const TDesC8& aUri, const TDesC8& aConsumerId); + + IMPORT_C TInt RemovePolicyConsumerL(const TDesC8& aUri, const TDesC8& aConsumerId); + + + + //from MSenWsPolicyManager + virtual TInt AddWsPolicy1L(CSenWSDescription* aPattern, const TDesC8& aUri, + const TDesC8& aPolicy, TInt& aErrorTo); + + virtual TInt RemoveWsPolicy1L( CSenWSDescription* aPattern, + const TDesC8& aUri, TInt& aErrorTo); + + virtual TInt RegisterWsPolicy1L(CSenWSDescription* aPattern, + TInt& aErrorTo); + + virtual TInt UnRegisterWsPolicy1L(CSenWSDescription* aPattern, + TInt& aErrorTo); + + virtual CSenElement* WsPolicy1L( CSenWSDescription* aPattern, + const TDesC8& aUri, TInt& aErrorTo); + + virtual CSenElement* WsPolicy1L( CSenWSDescription* aPattern, + TInt& aErrorTo); + + virtual CSenElement* WsPolicy1L( const TDesC8& aProviderId, TInt& aErrorTo); + + virtual TInt AddPolicyConsumer1L(const TDesC8& aUri, const TDesC8& aConsumerId); + + virtual TInt RemovePolicyConsumer1L(const TDesC8& aUri, const TDesC8& aConsumerId); + + + private: + + /** + * C++ default constructor. + */ + CSenWSPolicyManager(MSenCoreServiceManager& aManager); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + CSenElement* PolicyFromUri(CSenWSDescription* aPolicy, const TDesC8& aUri); + CSenElement* PolicyFromSDL(CSenWSDescription* aPolicy); //codescannerwarnings + CSenElement* PolicyByProviderId(const TDesC8& aProviderId, TInt& aErrorTo); + TInt IsContainerL(CSenInternalWsPolicy* aInternalPolicy); //codescannerwarnings + TInt CreatePolicyContainerL(CSenInternalWsPolicy* aInternalPolicy); //codescannerwarnings + TInt RefreshPolicyContainerL(); //codescannerwarnings + TInt UpdatePolicyContainerL(CSenInternalWsPolicy* aInternalPolicy); + TInt PolicyConsumerCountL(CSenInternalWsPolicy* aInternalPolicy); //codescannerwarnings + TInt IsConsumerExist(const TDesC8& aEndpoint, const TDesC8& aConsumerId); + RFileLogger* Log(); + private: + MSenCoreServiceManager& iManager; + RFileLogger* iLog; // not owned (no create/close) + CSenWSPolicyLoader* iPolicDataLoader; + RNormalizedArray iPolicyArray; + RPolicyConsumerArray iConsumerArray; + + }; +//Policy container holding the Normalized Policy +class CNormalizedPolicyConatiner : public CBase + { + public: + static CNormalizedPolicyConatiner* NewL(CSenInternalWsPolicy* aPolicy, const TDesC8& aUri); + + static CNormalizedPolicyConatiner* NewLC(CSenInternalWsPolicy* aPolicy, const TDesC8& aUri); + + virtual ~CNormalizedPolicyConatiner(); + + TBool IsSameContainer(const TDesC8& aUri); + TBool UpdateL(CSenInternalWsPolicy* aInternalPolicy); + + void CountInc(); + void CountDec(); + void SetConsumerCount(TInt aCount); + TInt ConsumerCount(); + TPtrC8 Contract(); + TPtrC8 Endpoint(); + TPtrC8 ProviderId(); + TPtrC8 URI(); + TTime ValidUntil(); + CSenElement* Policy(); + + private: + + /** + * C++ default constructor. + */ + CNormalizedPolicyConatiner(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(CSenInternalWsPolicy* aPolicy, const TDesC8& aUri); + + private: + HBufC8* iContract; + HBufC8* iEndpoint; + HBufC8* iProviderId; + HBufC8* iUri; //contents + TTime iValidUntil; //contents + TInt iCount; + CSenElement* iPolicy; + }; +//for loading and saving the DB +class CSenWSPolicyLoader : public CSenBaseFragment + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CSenWSPolicyLoader* NewL(MSenCoreServiceManager& aManager); + + static CSenWSPolicyLoader* NewLC(MSenCoreServiceManager& aManager); + + virtual ~CSenWSPolicyLoader(); + + /** + * Load and parse Policies from the file. + * Statuscodes: + * KErrNone Ok + * Other codes are system error codes. + * @return status code. + */ + TInt LoadDBL(); //codescannerwarnings + + /** + * Save Policies as an XML document into + * the file. + * Statuscodes: + * KErrNone Ok + * Other codes are system error codes. + * @return status code. + */ + TInt SaveDB(); + TInt MergeToL(); + // From CSenBaseFragment + /** + * Callback function which implements the XML content handler interface. + * @since Series60 3.0 + * @param aNsURI The namespace URI of the new element + * @param aLocalName The local name of the new element + * @param aQName The qualified name of the new element + * @param aAttributes The attributes of the new element + */ + virtual void StartElementL(const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes); + + // From CSenBaseFragment + /** + * Callback function which implement the XML content handler interface. + * @since Series60 3.0 + * @param aNsUri The namespace URI of the new element + * @param aLocalName The local name of the new element + * @param aQName The qualified name of the new element + */ + virtual void EndElementL(const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName); + +//new Methods + + RSenWSPolicyPtr AddWsPolicyL(CSenInternalWsPolicy* apPolicy, + TInt& aErrorTo); + + TInt RegisterWsPolicyL(CSenWSDescription* aPattern, + TInt& aErrorTo); + + + + TInt AddWsPolicyL(CSenWSDescription* aPattern, const TDesC8& aUri, + const TDesC8& aPolicy, TInt& aErrorTo); + + + TInt RemoveWsPolicyL( CSenWSDescription* aPattern, + const TDesC8& aUri, TInt& aErrorTo); + + CSenElement* WsPolicyL( CSenWSDescription* aPattern, + const TDesC8& aUri, TInt& aErrorTo); + + + TInt InternalWsPoliciesL(RSenWSPolicyArray& aPolicies); + TInt UnRegisterWsPolicyL(CSenWSDescription* aPattern, + TInt& aErrorTo); + + + protected: + RFileLogger* Log(); + + private: + + /** + * C++ default constructor. + */ + CSenWSPolicyLoader(MSenCoreServiceManager& aManager); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + // New functions + + /** + * Initialize this SenPolicyManager by parsing + * the given file with the given XMLReader. + * The file is expected to contain valid XML that + * follows the example given above. + * @param file + * @param reader + */ + void LoadFromL(const TDesC& aFile); + + /** + * Save the current state of the SenPolicyManager as an XML + * document into a file. + * Status codes: + * KErrNone Ok + * Other codes are system error codes. + * @return status code. + */ + TInt SaveToL( const TDesC& aFile ); + + virtual TInt NextId(); + + virtual void UpdateMaxId(); + CSenElement* CreatePolicyElementL(const TDesC8& aUri, const TDesC8& aPolicy); + CSenElement* GetExpiryTagL(CSenElement& aPolicy); + TInt EvaluateExpiryL(CSenElement* aExpiry, TTime& aExpiryTime); + TInt ProcessNewPolicyL( const TDesC8& aUri, CSenElement& aPolicy); + TInt InternalWsPolicyL(CSenWSDescription& aPattern, + RSenWSPolicyArray& aPolicies); + TInt InternalWsPolicyL(const TDesC8& aUri, RSenWSPolicyArray& aPolicies); + + TInt RegisterWsPolicyL(CSenInternalWsPolicy* aInternalPolicy, + TInt& aErrorTo); + + TInt AddWsPolicyL(const TDesC8& aUri, CSenElement* aPolicy, TInt& aErrorTo); + TInt VerifyPolicyContentsL(CSenInternalWsPolicy* apInternalPolicy, TInt& aErrorTo); //codescannerwarnings + + + private: // Data + MSenCoreServiceManager& iManager; + RFileLogger* iLog; // not owned (no create/close) + RSenPolicyPtrArray iPolicyArray; // owned + + CSenBaseFragment* ipPolicyContainer; // owned + CSenWSPolicyIdentifier* ipPolicyIdentifier; // owned + CSenInternalWsPolicy* ipWSpolicy; // owned + + TInt iMaxPolicyID; + }; + +//for Storing the Active consumer information +class CConsumerContainer :public CBase + { + public: + static CConsumerContainer* NewL(const TDesC8& aUri, const TDesC8& aConsumerId); + static CConsumerContainer* NewLC(const TDesC8& aUri, const TDesC8& aConsumerId); + virtual ~CConsumerContainer(); + TPtrC8 Uri(); + TPtrC8 ConsumerId(); + private: + CConsumerContainer(); + void ConstructL(const TDesC8& aUri, const TDesC8& aConsumerId); + + HBufC8* iConsumerId; + HBufC8* iURI; + }; +//for getting the expired policies information +class CExpiredPolicy :public CBase + { + public: + IMPORT_C static CExpiredPolicy* NewL(const TDesC8& aContract, const TDesC8& aEndpoint, + const TDesC8& aUri, const TDesC8& aProviderId); + IMPORT_C static CExpiredPolicy* NewLC(const TDesC8& aContract, const TDesC8& aEndpoint, + const TDesC8& aUri, const TDesC8& aProviderId); + IMPORT_C virtual ~CExpiredPolicy(); + + + IMPORT_C TPtrC8 Contract(); + IMPORT_C TPtrC8 Endpoint(); + TPtrC8 ProvideId(); + IMPORT_C TPtrC8 Uri(); + IMPORT_C TPtrC8 Contents(); + + IMPORT_C TInt SetContentsL(const TDesC8& aContent); + + private: + CExpiredPolicy(); + void ConstructL(const TDesC8& aContract, const TDesC8& aEndpoint, const TDesC8& aUri, const TDesC8& aProviderId); + + private: + HBufC8* iContract; //service contract + HBufC8* iEndpoint; //service contract + HBufC8* iProvideId; //service contract + HBufC8* iURI; //uri to download + HBufC8* iContents; //contents + }; +#endif // SEN_WS_POLICY_MANAGER_H + +// End of File