--- /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 <e32base.h>
+#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<TUid>& 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<TUid>& 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<TUid>& 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