webservices/wsstar/wsstarpolicy/inc/senwspolicymanager.h
changeset 0 62f9d29f7211
--- /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 <e32std.h>
+#include <flogger.h>    // RFileLogger
+
+#include <SenFragmentBase.h>
+#include <SenBaseFragment.h>
+#include <SenDomFragment.h>
+
+// FORWARD DECLARATIONS
+class MSenCoreServiceManager;
+class CSenWSPolicyIdentifier;
+class CSenWSPolicyProperties;
+class CSenParser;
+class CSenWSPolicyLoader;
+class CNormalizedPolicyConatiner;
+class CExpiredPolicy;
+class CConsumerContainer;
+// CLASS DECLARATION
+typedef RPointerArray<CNormalizedPolicyConatiner> RNormalizedArray;
+typedef RPointerArray<CExpiredPolicy> RExpiredPolicyArray;
+typedef RPointerArray<CConsumerContainer> 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