webservices/wsstar/wsstarpolicy/inc/wspolicy.h
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsstar/wsstarpolicy/inc/wspolicy.h	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,145 @@
+/*
+* Copyright (c) 2006-2006 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 WS_POLICY_H
+#define WS_POLICY_H
+
+// INCLUDES
+#include <e32std.h>
+
+#include "SenDomFragment.h"
+#include <SenDomFragmentBase.h>
+#include "policyassertion.h"
+#include "xorcompositeassertion.h"
+#include "andcompositeassertion.h"
+#include "wspolicyreader.h"
+#include "wspolicyutils.h"
+// FORWARD DECLARATIONS
+class CWSPolicyReader;
+class CWSPolicyWriter;
+class CMyXml;
+/**
+ * Class: CWSPolicy
+ * Description: Public interface to a policy. A policy should be created by this class. 
+ * The policy will be stored as XML-DOM tree in memory and can be used to do different 
+ * kind of processings on the policy. i.e. Normalizing, intersecting and merging
+ */
+class CWSPolicy : public CBase
+    {
+
+    public:
+        //public two phase constructors
+        //still there is no purpose to create a policy with empty arguments ??
+        IMPORT_C    static CWSPolicy* NewL();
+        IMPORT_C    static CWSPolicy* NewLC();
+        //creates a policy from a descriptor
+        IMPORT_C    static CWSPolicy* NewL(TDesC8& aPolicyUri, TDesC8& aPolicy);
+        IMPORT_C    static CWSPolicy* NewLC(TDesC8& aPolicyUri, TDesC8& aPolicy);
+        //creates a policy from CSenElement    
+        IMPORT_C    static CWSPolicy* NewL(CSenElement* aPolicy);
+        IMPORT_C    static CWSPolicy* NewLC(CSenElement* aPolicy);
+        //creates a policy from TElement//libxml2
+        //IMPORT_C    static CWSPolicy* NewL(TElement aPolicy);
+        //IMPORT_C    static CWSPolicy* NewLC(TElement aPolicy);
+
+        IMPORT_C    TInt SetPolicyL(TDesC8& aPolicyUri, TDesC8& aPolicy);
+        //Normalize a policy using a registry to solve references
+        //returns ETrue if normalization is successfult else EFalse
+        IMPORT_C    TBool NormalizePolicyL(CPolicyRegistry* aRegistry);
+        CSenElement*  NormalizePolicy2L(CSenElement& aPolicy, CPolicyRegistry* aRegistry);
+        //Intersect a policy with second policy provided as a parameter
+        //return intersected policy
+        IMPORT_C    CWSPolicy* IntersectPolicyL(CWSPolicy* aPolicy);
+        //Merge a policy with second policy provided as a parameter
+        //return merged policy
+        IMPORT_C    CWSPolicy* MergePolicyL(CWSPolicy* aPolicy);
+            
+        //returns ETrue if the policy is normalized else EFalse
+        IMPORT_C    TBool Normalized();
+
+        IMPORT_C    HBufC8* PolicyAsXmlL();
+        IMPORT_C    CSenElement* PolicyL();	//codescannerwarnings
+        IMPORT_C    HBufC8* NormalizedAsXmlL();
+        IMPORT_C    CSenElement* NormalizedPolicy();
+        IMPORT_C    TBool IsExpiredPolicyL();	//codescannerwarnings
+        IMPORT_C    CSenElement* NonNormalizedPolicyL();	//codescannerwarnings
+        ~CWSPolicy();   
+        
+    private:
+        CWSPolicy();
+        void ConstructL();
+        TInt NormalizePL(CPolicyRegistry* aRegistry);
+        CWSPolicy* MergePL(CWSPolicy* aPolicy);
+        CWSPolicy* IntersectPL(CWSPolicy* aPolicy);	//codescannerwarnings  
+
+        void GeneratePolicyIdL(CSenElement* aPolicy);	//codescannerwarnings 
+        TPtrC8 PolicyIdL(CSenElement* aPolicy);
+        TPtrC8 PolicyNameL(CSenElement* aPolicy);
+        TInt AddPolicyNameL(CSenElement* aPolicy);
+        TInt AddPolicyMetadatEndpointL(CSenElement* aPolicy);
+        TInt AddPolicyIdL(CSenElement* aPolicy);
+        TInt AddPolicyValidityL(CSenElement* aPolicy);
+        TInt EvaluateExpiryL(CSenElement* aPolicy);	//codescannerwarnings 
+        CSenElement* GetExpiryTagL();	//codescannerwarnings 
+        void BaseConstructL(TDesC8& aPolicyUri, TDesC8& aPolicy);
+        void BaseConstructL(CSenElement* aPolicy);
+
+        MAssertion* NormaAssertion();
+
+    private: // Data
+
+        CWSPolicyReader* iReader;
+        CWSPolicyWriter* iWriter;
+        CMyXml* iInDoc;
+        CMyXml* iOutDoc;
+
+        CSenElement* iNormPolicy; //owned           
+        CPolicyAssertion* iNormaPolicyAssert; //owned
+        TBool iNormalized;
+        TBool iExpired;
+        HBufC8* iPolicyId;
+        HBufC8* iPolicyName;
+        HBufC8* iPolicyUri;
+        TInt count;
+        TTime iExpiry;
+    };
+
+class CMyXml :public CSenDomFragment
+{
+public:    
+    static CMyXml* NewL();
+    static CMyXml* NewLC();
+    ~CMyXml();
+    
+    TInt ReadFromDescL(const TDesC8& aData);
+    CSenElement* XMLDocL();
+private:
+
+    CMyXml();
+    void ConstructL();
+    TBool iParsed;
+
+};   
+#endif // WS_POLICY_H
+// END OF FILE