diff -r f5050f1da672 -r 04becd199f91 javamanager/javaregistry/client/inc/writeablejavaregistry.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javaregistry/client/inc/writeablejavaregistry.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,262 @@ +/* +* Copyright (c) 2005-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: writeablejavaregistry definition +* +*/ + + +#ifndef WRITEABLEJAVAREGISTRY_H +#define WRITEABLEJAVAREGISTRY_H + +// INCLUDES +#include +#include "javaregistryentrytype.h" +#include "javastorage.h" + +namespace Java +{ +namespace Manager +{ +namespace Registry +{ + +// FORWARD DECLARATION +class CWriteableJavaRegistryEntry; + +// CLASS DECLARATION +/** + * This class provides the Internal API for JavaRegistry. + * It allows for trusted clients to retrieve and set properties of + * Java install packages, applications, services etc. + * + * @lib javaregistryclient.lib + * @since S60 v3.2 + */ +class CWriteableJavaRegistry : public CBase +{ +public: + + // constructors + /** + * CWriteableJavaRegistry::NewL method creates a + * CWriteableJavaRegistry object. + * The function may leave with one of the system-wide error codes. + * + * @since S60 v3.2 + * @param aUseIntegrity ETrue if Integrity Server must be used during + * the lifetime of this object, EFalse if it's + * not required. + * @return A pointer to a CWriteableJavaRegistry object. Caller takes + * over the ownership of the object being transferred. + */ + IMPORT_C static CWriteableJavaRegistry* NewL(TBool aUseIntegrity); + + /** + * CWriteableJavaRegistry::NewLC method creates a + * CWriteableJavaRegistry object. + * The function may leave with one of the system-wide error codes. + * + * @since S60 v3.2 + * @param aUseIntegrity ETrue if Integrity Server must be used during + * the lifetime of this object, EFalse if it's + * not required. + * @return A pointer to a CWriteableJavaRegistry object. Caller takes + * over the ownership of the object being transferred. + */ + IMPORT_C static CWriteableJavaRegistry* NewLC(TBool aUseIntegrity); + + // destructor + /** + * CWriteableJavaRegistry::~CWriteableJavaRegistry destructor + * + * @since S60 v3.2 + */ + IMPORT_C ~CWriteableJavaRegistry(); + + // general methods + + /** + * CWriteableJavaRegistry::RegistryEntryExistsL method returns whether + * registry entry with the specified Uid exists. + * The function may leave with one of the system-wide error codes. + * + * @since S60 v3.2 + * @param aUid The Uid to be checked. + * @return ETrue if the registry entry exists, EFalse otherwise. + */ + IMPORT_C TBool RegistryEntryExistsL(const TUid& aUid) const; + + + /** + * CWriteableJavaRegistry::GetRegistryEntryUidsL method returns + * an array of Uids of the registry entries, that are installed to + * the phone, or to the mmc drive currently plugged in. + * The function may leave with one of the system-wide error codes. + * + * @since S60 v3.2 + * @param aUids [out] Uids of the registry entries. + */ + IMPORT_C void GetRegistryEntryUidsL(RArray& aUids) const; + + + /** + * CWriteableJavaRegistry::GetRegistryEntryUidsL method returns + * an array of Uids of the registry entries, that are installed to + * the phone, or to the mmc drive currently plugged in. + * Entries are searched by the specified type. + * The function may leave with one of the system-wide error codes. + * + * @since S60 v3.2 + * @param aType Type of registry entries whose Uids are to be returned. + * @param aUids [out] Uids of the matching registry entries. + */ + IMPORT_C void GetRegistryEntryUidsL(TJavaRegistryEntryType aType, + RArray& aUids, + TBool aAllEntries = EFalse) const; + + /** + * CWriteableJavaRegistry::RegistryEntryL method returns the + * corresponding registry entry for a given Uid. + * The returned entry can be casted to the appropriate subclass + * according to the type property. If type is in the package range + * (EGeneralPackage <= entryType < EGeneralApplication), it can + * be casted to CWriteableJavaRegistryPackageEntry, and if type is + * in the application range (EGeneralApplication <= entryType), + * it can be casted to CWriteableJavaRegistryApplicationEntry. + * The function may leave with one of the system-wide error codes. + * + * @since S60 v3.2 + * @param aUid The Uid of the entry to be retrieved. + * @return The returned registry entry or null if registry entry not + * found. Caller takes over the ownership of the object being + * transferred. + */ + IMPORT_C CWriteableJavaRegistryEntry* RegistryEntryL( + const TUid& aUid, + TBool aAllEntries = EFalse) const; + +protected: + + // constructor + /** + * CWriteableJavaRegistry::CWriteableJavaRegistry constructor + * + * @since S60 v3.2 + */ + IMPORT_C CWriteableJavaRegistry(); + + // 2nd phase constructors + /** + * CWriteableJavaRegistry::ConstructL method + * The function may leave with one of the system-wide error codes. + * + * @since S60 v3.2 + * @param aUseIntegrity ETrue if Integrity Server must be used during + * the lifetime of this object, EFalse if it's + * not required. + * @param aLegacy Indicates, that the registry is used in legacy + * mode. + */ + IMPORT_C void ConstructL(TBool aUseIntegrity, TBool aLegacy = EFalse); + +private: + + /** + * Read all application Uids from JavaStorage. + * + * @param[out] aFoundApps Application list to be populated. + */ + void ApplicationUids( + java::storage::JavaStorageApplicationList_t& aFoundApps) const; + + /** + * Match given Uid to Uids in the given list. Application type is populated + * after matching and it is checked if application is present. + * + * @since S60 vx.x + * @param aApps Application list holding Uids. + * @param aUid to match. + * @param[out] aType application type to be populated. + * @return true if uid matches one with the application list and + * it is present, false otherwise. + */ + TBool MatchUid(const java::storage::JavaStorageApplicationList_t& aApps, + const java::util::Uid& aUid, + Java::TJavaRegistryEntryType& aType) const; + + /** + * Read application entry from JavaStorage. Entry is read based on its + * uid. Entry is left empty if it is + * not found from the storage. + * + * @param aUid uid used to identify application entry. + * @param aTableName where entry is read. + * @param[out] aAppEntry to be populated. + */ + void StorageEntry( + const java::util::Uid& aUid, + const std::string& aTableName, + java::storage::JavaStorageApplicationEntry_t& aAppEntry) const; + + /** + * Populate TUid array. Array is populated Uids matching to JavaStorageEntry + * defined Uid. Add TUid to array if not exists already. If error happens + * in Uid to TUid conversion, uid is skipped. + * + * @param aApps Applications which Uids are populated. + * @param aEntry Used to match correct Uid. + * @param aUids Array to be populated. + */ + void AddUids( + const java::storage::JavaStorageApplicationList_t& aApps, + const java::storage::JavaStorageEntry& aEntry, + RArray& aUids) const; + + /** + * Check is entry present on the device. Entry must contain at least + * ID or PACKAGE_ID and MEDIA_ID attributes. + * + * @param aEntry to be checked. + * @return true if application is present, false otherwise. + */ + TBool IsPresent( + const java::storage::JavaStorageApplicationEntry_t& aEntry) const; + + /** + * Read entry attribute value from given entry. + * If not found value is set as empty. + * + * @param aEntry where to search. + * @param aName to be search. + * @param[out] aValue to be populated. + */ + void EntryAttributeValue( + const java::storage::JavaStorageApplicationEntry_t& aEntry, + const std::wstring& aName, + std::wstring& aValue) const; + + +private: // Data + + java::storage::JavaStorage* iStorage; + +}; + +} // namespace Registry +} // namespace Manager +} // namespace Java + +#endif // WRITEABLEJAVAREGISTRY_H + +// End of File