--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javamanager/javabackup/midp2backup_usif/src.s60/javastoragebackuputil.h Tue Jul 06 14:10:26 2010 +0300
@@ -0,0 +1,404 @@
+/*
+* Copyright (c) 2008-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: Header file for CStorageBackupUtil class
+*
+*/
+
+
+#ifndef JAVASTORAGEBACKUPUTIL_H
+#define JAVASTORAGEBACKUPUTIL_H
+
+#include <string>
+#include <vector>
+
+#include <e32base.h>
+#include <wchar.h>
+#include <s32strm.h>
+
+#include "javastorageentry.h"
+#include "javastorage.h"
+#include "javastoragenames.h"
+
+#define NUMBER_OF_TABLES 11
+
+class RDesWriteStream;
+class RDesReadStream;
+
+namespace java
+{
+namespace backup
+{
+
+
+/**
+--------------------------------------------------------------------------------
+
+* CStorageBackupUtil class is handling backup and restore of Java Storage data
+* This class is instantiated when a BUR operation is starting.
+
+Example Data that could be present in JavaStorage which is backed up and restored by this class.
+
+Application Package Data
+ID | PACKAGE_NAME | VENDOR | VERSION | ROOT_PATH | MEDIA_ID | INITIAL_SIZE | JAD_PATH | JAR_PATH | JAD_URL | JAR_URL | ACCESS_POINT | CONTENT_INFO | CONTENT_ID
+788463512 | HelloWorld? | Nokia | 1.1 | \C\Private\102033E6\MIDlets\[101e59d8] | 123456 | 200 | \C\Private\102033E6\MIDlets\[101e59d8]\HelloWorld.jad | \C\Private\102033E6\MIDlets\[101e59d8]\HelloWorld.jar | http://getjar.com/MyGreatApp.jad | http://getjar.com/MyGreatApp2.jar | IAP:2 | 0 | 78d78sd89f789
+
+
+Application Data
+ID | PACKAGE_ID | NAME | MAIN_CLASS | AUTORUN
+788463616 | 788463512 | HelloWorld | HelloWorld | 0
+
+
+Application Package Attributes Data
+ID | NAME | VALUE | TRUSTED
+788463512 | MIDlet-Name | HelloWorld | 00
+788463512 | MIDlet-Version | 1.0 | 10
+788463512 | MIDlet-Vendor | Nokia | 10
+
+
+MIDP Application Package Data
+ID | TYPE | SECURITY_DOMAIN | HASH | CERT_HASH | RMS | VALID_CERTS | ON_SCREEN_KEYPAD
+788463512 | MIDletSuite? | Trusted | 123456789 | 123456789 | \C\Private\102033E6\MIDlets\[101e59d8]\RMSdata.bin | 1,3,5 | 0
+
+
+MIDP Permissions Data
+ID | CLASS | NAME | ACTION | FUNCTION_GROUP
+788463616 | javax.microedition.io.HttpProtocolPermission | http://server/index.html | read | HTTP
+
+
+MIDP Function Group Settings Data
+ID | FUNCTION_GROUP | ALLOWED_SETTINGS | CURRENT_SETTING | BLANKET_PROMPT
+788463616 | HTTP | 111 (e.g. BLANKET, SESSION, ONESHOT) | 001 (ONESHOT) | 0
+
+The allowed settings could be a an encoded integer based on the binary representation of 3 bits (e.g. 100 if only BLANKET is allowed, 011 if SESSION and ONESHOT are allowed).
+
+
+MIDP Push Registrations Data
+ID | URL | NAME | FILTER | REGISTRATION_TYPE
+788463616 | sip:*;type=""application/test"", SIPPushReceiver? | SIPPushReceiver? | * | 1
+788463616 | btspp://localhost:99999999999999999999999999999999;*;authenticated;blacklist=00E001234567 | BTPushReceiver? | * | 0
+
+
+MIDP Alarm Push Registrations Data
+ID | ALARM_TIME
+788463616 | 2008-09-13;15:20:30
+
+
+MIDP Runtime Settings Data
+EXTENSIONS
+\C\Private\102033E6\Extenstions\12345678\Location.jar
+
+
+Preinstall Data
+NAME | VENDOR | VERSION | INSTALL_STATE
+TestMIDletSuite | TestVendor | 1.2.3 | 2
+
+
+MIDP OTA Status Data table
+ID | CREATION_TIME | TYPE | OTA_CODE | URL | LATEST_RETRY_TIME | RETRY_COUNT
+788463616 | 2008-09-13;12:20:30 | 1 | 900 | http://www.moo.com/MIDLETS.js | 2008-09-13;15:20:30 | 2
+
+-----------------------------------------------------------------------------------------------------------------------------
+*/
+
+class CStorageBackupUtil : public CBase
+{
+public:
+
+ /**
+ * Instantiates an object of this type
+ */
+ static CStorageBackupUtil* NewL();
+
+ ~CStorageBackupUtil();
+
+ /**
+ * This method requests a section of Java Storage data.
+ * Called by the function GetBackupDataSectionL from midp2backupplugin
+ * The data is filled into the stream till it is full.
+ * The data returned may be base or incremental depending
+ * on the type of backup and the capability of the data owner.
+ *
+ * @param aBuffer a pointer to the base of the location where data
+ * can be copied.
+ * @param aBackupNotFinished on return EFalse if all data has
+ * been returned for this drive, else ETrue.
+ */
+ void BackupStorageDataL(RDesWriteStream& aStream, TBool& aBackupNotFinished, TInt& aBufferSpaceLeft);
+
+ /**
+ * This method receives a section of base restore data.
+ * Stores the restore data in the vector so that it can be
+ * written to Java Storage when all data have come.
+ *
+ * @param stream holds the restore data
+ * @param aRestoreState EFirstBuffer if all data has been returned
+ * for this drive, else remains at EStorage.
+ * @param aBufferSpaceLeft the space left in the buffer
+ */
+ void RestoreStorageDataL(RDesReadStream& aStream, TInt& aRestoreState, TInt& aBufferSpaceLeft);
+
+private:
+
+ // Default constructor for the class
+
+ CStorageBackupUtil();
+
+ // Second phase constructor function
+
+ void ConstructL();
+
+ /**
+ * This method fills the vector with Java Storage data.
+ * Data is read from JavaStorage tables and put inside the vector
+ * which will later be put into the buffer stream.
+ * The reason for having vector to store the data is that connection to
+ * Java Storage cannot be open for a long period of time
+ * ie writing into buffer stream's time
+ *
+ * @return returns an integer value telling whether the operation
+ * was completed successfully or not.
+ */
+ int FillVectorWithStorageData();
+
+ /**
+ * A utility function which converts a wstring into a TDesC
+ * and writes it into the stream.
+ *
+ * @param stream an RDesWriteStream into which the converted
+ * string is written
+ * @param tempString the wstring which is to be converted.
+ */
+ void WriteStringtoStreamL(RDesWriteStream& aStream, std::wstring aTempString);
+
+ /**
+ * A utility function which reads a TDesC from the stream, converts it
+ * to a wstring and writes it into the vector.
+ *
+ * @param stream an RDesReadStream from which the TDesC data is read
+ */
+ void ReadStringfromStreamL(RDesReadStream& aStream);
+
+ /**
+ * This method writes the data to storage.
+ * Gets called after FillVectorsWithStreamDataL() function is called.
+ * This function opens a transaction to Storage and writes
+ * the vector's data into storage row-by-row, and then commits
+ * the transaction.
+ *
+ * @return returns an integer specifying whether the operation
+ * has completed successfully or not.
+ */
+ int WriteDataToStorage();
+public:
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only APPLICATION_PACKAGE_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithAppPackageTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only APPLICATION_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithAppTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only APPLICATION_PACKAGE_ATTRIBUTES_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithAppPackageAttTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only MIDP_PACKAGE_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithMidpPackageTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only MIDP_PERMISSIONS_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithMidpPermTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only MIDP_FUNCTION_GROUP_SETTINGS_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithMidpFuncGrpSetTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only PUSH_REGISTRATION_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithPushRegTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only ALARM_REGISTRATION_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithAlarmRegTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only RUNTIME_SETTINGS_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithRuntimeSetTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only PREINSTALL_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithPreinstallTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Utility function which fills the vector with data got from storage.
+ * Handles data of only OTA_STATUS_TABLE.
+ *
+ * @param afoundEntries the application entries which match
+ * the SQL query.
+ * @return an integer representing the number of rows written
+ * into the vector.
+ */
+ int FillVectorwithOtaStatusTableData(java::storage::JavaStorageApplicationList_t& afoundEntries);
+
+ /**
+ * Prints the vectors
+ */
+ void printVector();
+
+private:
+
+ /**
+ * The actual wstring vector which holds the data during a B&R operation.
+ * During a backup, this vector is filled with storage data and then
+ * written to the stream.
+ * During a restore, this vector is filled with data from the stream
+ * before it is written to storage.
+ * Own
+ */
+ std::vector< std::wstring > iStringVector;
+
+ /**
+ * An integer which holds the length of the string.
+ * When only half the data is read from the stream, this holds the
+ * length of the remaining data which is to be read.
+ * Own
+ */
+ int iLenOfString;
+
+ /**
+ * An integer which holds the count of the number of strings
+ * in the vector. Used during a B&R operation.
+ * Own
+ */
+ int iStrCount;
+
+ /**
+ * An integer array which holds the number of rows of each table
+ * present in storage.
+ * This information is written to stream and is used when the
+ * restored data is written back to storage.
+ * Own
+ */
+ int iTableSize[NUMBER_OF_TABLES];
+
+ /**
+ * A Boolean value which says if a string was only
+ * half read during a previous iteration.
+ * Own
+ */
+ TBool iRemainingString;
+
+ /**
+ * A wstring which holds the half read string so that the
+ * completed string can be appended to it during the next iteration
+ * before it is put into the vector.
+ * Own
+ */
+ std::wstring iHalfReadString;
+
+ /**
+ * Shows if it's the fill call to backup storage data.
+ * Vectors filled only at the first call.
+ * Own
+ */
+ TBool iFirstCalltoBackupStorageData;
+
+ /**
+ * Shows if it's the fill call to restore storage data.
+ * Own
+ */
+ TBool iFirstCalltoRestoreStorageData;
+
+ /**
+ * Shows the remaining number of bytes available in the stream.
+ * Own
+ */
+ int iBufferSpaceLeft;
+};
+
+} // namespace backup
+} // namespace java
+
+#endif // JAVASTORAGEBACKUPUTIL_H