diff -r 000000000000 -r bde4ae8d615e os/persistentdata/persistentstorage/dbms/security/SC_TextIn.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/persistentdata/persistentstorage/dbms/security/SC_TextIn.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,115 @@ +// Copyright (c) 2004-2009 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: +// CPDTextLoader class +// +// + +#ifndef __SC_TEXTIN_H__ +#define __SC_TEXTIN_H__ + +#include +#include "SC_Defs.h" +#include "SC_Policy.h" + +namespace DBSC +{ + +/** +This enum describes the possible statement types in a text policy file, recogizable by +CPDTextLoader implementation. +@internalComponent +*/ +typedef enum + { + EStmtTEof, + EStmtTComment, + EStmtTBlank, + EStmtTDatabase, + EStmtTTable, + EStmtTName, + EStmtTRead, + EStmtTWrite, + EStmtTSchema, + EStmtTCapability, + EStmtTSID, + EStmtTVID, + EStmtTBackup, + EStmtTInvalid //Include the new enum items before "EStmtTInvalid" + } TStmtType; + +/** +This enum describes the possible statement classes in a text policy file, recogizable by +CPDTextLoader implementation. +@internalComponent +*/ +typedef enum + { + EStmtCNoData, //Blank, Comments + EStmtCPolicyObj, //Database, Table + EStmtCPolicyType, //Read, Write, Schema + EStmtCPolicyItem, //Capability, SID, VID + EStmtCBackup, //Backup & restore + EStmtCInvalid + } TStmtClass; + +//Forward declaration +struct TStmtProps; + +/** +CPDTextLoader class is an implementation of MPolicyDomainLoader interface and is used +for loading security policies from a text policy file. The class uses TPolicyDomainBuilder +class functionality for adding loaded policies to the controlled by TPolicyDomainBuilder +instance CPolicyDomain collection. +@see MPolicyDomainLoader +@see TPolicyDomainBuilder +@see CPolicyBase::RPolicyCollection +@see CPolicyDomain +@internalComponent +*/ +class CPDTextLoader : public CBase, public MPolicyDomainLoader + { +public: + static CPDTextLoader* NewLC(RFs& aFs, const TDesC& aTextFileName); + virtual ~CPDTextLoader(); + virtual void RunL(TPolicyDomainBuilder& aPolicyDomainBuilder); + +private: + inline CPDTextLoader(); + void ConstructL(RFs& aFs, const TDesC& aTextFileName); + TBool IsEofL(); + void GetStmtPropsL(const TDesC& aStmt, TStmtProps& aStmtProps) const; + TBool TryGetStmt1Props(const TDesC& aStmt, TStmtProps& aStmtProps) const; + TBool TryGetStmt2Props(const TDesC& aStmt, TStmtProps& aStmtProps) const; + TBool LoadStmtL(TPtr& aStmt); + TStmtClass LoadNextStmtL(TStmtProps& aStmtProps); + void LoadNextStmtOfTypeL(TStmtProps& aStmtProps, TStmtType aStmtType); + const CDbPolicy* LoadDbPolicyL(TPolicyDomainBuilder& aPolicyDomainBuilder, + TStmtProps& aStmtProps); + void LoadTblPoliciesL(TPolicyDomainBuilder& aPolicyDomainBuilder, TStmtProps& aStmtProps, + const CDbPolicy* aDbPolicy); + void LoadBackupSIDL(TPolicyDomainBuilder& aPolicyDomainBuilder, TStmtProps& aStmtProps); + void LoadSecurityPoliciesL(CPolicyBase::RPolicyCollection& aPolicyColl, TStmtProps& aStmtProps); + void LoadSecurityPolicyL(TSecurityPolicy& aSecurityPolicy, TStmtProps& aStmtProps); + void GetCapabilitiesL(const TDesC& aCapabilityStr, RArray& aCapability) const; + TUint GetIdL(const TDesC& aStr) const; + +private: + RFileReadStream iRdStream; + TBuf8 iStmt8; + TBuf iStmt; + }; + +} //end of - namespace DBSC + +#endif//__SC_TEXTIN_H__