javamanager/javaregistry/legacy/server/inc/javaregstore.h
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javamanager/javaregistry/legacy/server/inc/javaregstore.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,279 @@
+/*
+* 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:  javaregstore definition
+*
+*/
+
+
+#ifndef JAVAREGSTORE_H
+#define JAVAREGSTORE_H
+
+#include <e32base.h>
+#include "javastorage.h"
+#include "javauid.h"
+#include "javaregistryentrytype.h"
+
+// FORWARD DECLARATIONS
+namespace Java
+{
+namespace Manager
+{
+namespace Registry
+{
+
+class CJavaPropertyArray;
+class CJavaProperty;
+
+/**
+ * CJavaRegStore read application information from Java Storage.
+ * Information is then converterd to Java Registry format and sent
+ * back to client. Only reading is possible.
+ */
+class CJavaRegStore : public CBase
+{
+
+public:
+
+    /**
+     * Creates object of this class.
+     *
+     * @since S60 v3.2
+     */
+    static CJavaRegStore* NewL();
+
+    /**
+     * Creates object of this class.
+     *
+     * @since S60 v3.2
+     */
+    static CJavaRegStore* NewLC();
+
+    /**
+     * Reads properties from the file identified with the given uid.
+     * If no properties found for the given uid aProperties is null else
+     * it is allocated a new CJavaPropertyArray object containing the read
+     * properties.
+     *
+     * @since S60 v3.2
+     * @param aUid properties belonging to this uid must be read
+     * @param aProperties [out] properties are read in this parameter
+     * @param aAllEntries decision, if we want to read entry
+     *          from not presented MMC
+     */
+    void ReadPropertiesL(
+        TUid aUid,
+        CJavaPropertyArray*& aProperties,
+        TBool aAllEntries = EFalse);
+
+    /**
+     * Returns the stored uids of all drives.
+     *
+     * @since S60 v3.2
+     * @param [out] aUid stored uids are returned in this parameter
+     */
+    void GetUidsL(RArray<TUid>& aUids);
+
+    /**
+     * Returns with a set of uids whose entries contains the properties (and
+     * has the same values) given in the aProperties parameter.
+     *
+     * @since S60 v3.2
+     * @param aProperties the set of properties which must exists
+     *          (and must have the same values) in the looked entries
+     * @param[out] aFoundUids uids of the found entries are returned
+     *          in this parameter
+     * @param aAllEntries means, that method give all entries including
+     *          entries, which regards with midlets stored in not presented
+     *          media. EFalse means entries with regarding not presented
+     *          media will not return.
+     */
+    void FindEntriesL(
+        CJavaPropertyArray& aProperties,
+        RArray<TUid>& aFoundUids,
+        TBool aAllEntries = EFalse);
+
+    /**
+     * Destructs object.
+     *
+     * @since S60 v3.2
+     */
+    ~CJavaRegStore();
+
+private:
+
+    /**
+     * Constructor
+     *
+     * @since S60 v3.2
+     */
+    CJavaRegStore();
+
+    /**
+     * ConstructL
+     *
+     * @since S60 v3.2
+     */
+    void ConstructL();
+
+    /**
+     * Match given Uid to entry type.
+     *
+     * @param aApps List of applications where to match.
+     * @param aUid Uid to be matched.
+     * @param aType[out] Matched application type.
+     * @return ETrue if Uid matched to one in the application list, false
+     *               otherwise.
+     */
+    TBool MatchUidL(
+        const java::storage::JavaStorageApplicationList_t& aApps,
+        const java::util::Uid& aUid,
+        Java::TJavaRegistryEntryType& aType) const;
+
+    /**
+     * Read storage entry from Java Storage.
+     * The function may leave one of the Java Storage error codes.
+     *
+     * @param aUid Entry Uid to be read.
+     * @param aTableName Table where to read.
+     * @param aAppEntry[out] Application entry. Empty if not found from
+     *                       the storage.
+     */
+    void StorageEntryL(
+        const java::util::Uid& aUid,
+        const std::string& aTableName,
+        java::storage::JavaStorageApplicationEntry_t& aAppEntry) const;
+
+    /**
+     * Convert application entries to registry format.
+     *
+     * @param aArray[out] Converted properties.
+     * @param aAttrs Application entries to be converted.
+     */
+    void PopulatePropertiesL(
+        CJavaPropertyArray*& aArray,
+        const java::storage::JavaStorageApplicationEntry_t& aAttrs) const;
+
+    /**
+     * Convert application entry to registry property.
+     *
+     * @param aName Name of the application entry.
+     * @param aValue Value of the application entry.
+     * @return created property. Ownership is moved to caller.
+     *         If property cannot be created NULL is returned.
+     */
+    CJavaProperty* CreatePropertyL(
+        const std::wstring& aName,
+        const std::wstring& aValue) const;
+
+    /**
+     * Search from Java Storage.
+     * The function may leave one of the Java Storage error codes.
+     *
+     * @param aTableName Table name where to search.
+     * @param Query used in search.
+     * @param aFoundApps Matched applications. Empty if no matches.
+     */
+    void SearchL(
+        const std::string& aTableName,
+        const java::storage::JavaStorageApplicationEntry_t& aQuery,
+        java::storage::JavaStorageApplicationList_t& aFoundApps) const;
+
+    /**
+     * Populate Uid array by Uids found from storage application list.
+     *
+     * @param aApps Application list.
+     * @param aEntry Entry to define Application type.
+     * @param[out] aUids Uid array to be populated.
+     */
+    void AddUidsL(
+        const java::storage::JavaStorageApplicationList_t& aApps,
+        const java::storage::JavaStorageEntry& aEntry,
+        RArray<TUid>& aUids) const;
+
+    /**
+     * Read application complementary information. This information is such
+     * that cannot be read from information belogning to the application
+     * i.e. application suite stored information. One example is
+     * application installation drive.
+     *
+     * @param aUid Uid which application information to read.
+     * @param[out] aAttrs Attribute container where new attributes are
+     *                    added.
+     */
+    void ComplementaryInformationL(
+        const java::util::Uid& aUid,
+        java::storage::JavaStorageApplicationEntry_t& aAttrs) const;
+
+    void PopulateManifestAttributesL(
+        const java::util::Uid& aUid,
+        CJavaPropertyArray*& aProperties) const;
+
+    /**
+     * Read attribute value from entry. Value is left empty if no value exists.
+     *
+     * @param aEntry application entry.
+     * @param aName attribute name to be read.
+     * @param aValue to be populated.
+     */
+    void EntryAttributeValue(
+        const java::storage::JavaStorageApplicationEntry_t& aEntry,
+        const std::wstring& aName,
+        std::wstring& aValue) const;
+
+    /**
+     * Read Entry attributes from the storage.
+     *
+     * @param aUid Entry Uid.
+     * @param aAppType Entry type.
+     * @param[out] aAttributes Entry attributes.
+     */
+    void EntryAttributesL(
+        java::util::Uid& aUid,
+        Java::TJavaRegistryEntryType& aAppType,
+        java::storage::JavaStorageApplicationEntry_t& aAttributes) const;
+
+    /**
+     * Populate Entry type specific attributes.
+     *
+     * @param aUid Entry Uid.
+     * @param aAppType Entry type.
+     * @param[out] aProperties Entry specific attributes.
+     */
+    void PopulateAppTypePropertiesL(
+        const java::util::Uid& aUid,
+        const Java::TJavaRegistryEntryType aAppType,
+        CJavaPropertyArray*& aProperties) const;
+
+    /**
+     * Check application is stored in present media.
+     *
+     * @param aEntry Entry to be checked.
+     * @return ETrue if application is stored to present media,
+     *               false otherwise.
+     **/
+    TBool IsPresentL(
+        const java::storage::JavaStorageApplicationEntry_t& aEntry) const;
+
+private:    // members
+
+    java::storage::JavaStorage* iStorage;
+
+};
+
+}//namespace Registry
+}//namespace Manager
+}//namespace Java
+
+#endif // JAVAREGSTORE_H
+