diff -r f5050f1da672 -r 04becd199f91 javaextensions/midppush/pushregistryplugin/inc/pushdbhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/midppush/pushregistryplugin/inc/pushdbhandler.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,243 @@ +/* +* Copyright (c) 2008 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: +* +*/ + + +#ifndef PUSHDBHANDLER_H +#define PUSHDBHANDLER_H + +#include +#include +#include +#include +#include "javastorage.h" +#include "scopedlocks.h" +#include "javauid.h" +#include "pushconstant.h" + +namespace java +{ +namespace push +{ + +/** + * This class contains alarm information read from the Java Storage. + */ +class DbAlarmData +{ +public: + + /** + * @param aUid UID of the application. + * @param aTimeInMilliSecs Alarm time in milliseconds. + * @param aValidateTime Indicates whether alarm time must be validate. In practice + * this means check weather alarm has expired. + */ + DbAlarmData(const java::util::Uid& aUid, + const long long& aTimeInMilliSecs,bool aValidateTime); + + virtual ~DbAlarmData(); + + DbAlarmData(const DbAlarmData&); + + const java::util::Uid& getUid() const; + + long long getTime() const; + + bool validateAlarmTime() const; + + DbAlarmData &operator=(const DbAlarmData&); + +private: + + //Datamembers. + java::util::Uid mUid; + long long mTimeInMilliSecs; + bool mValidateTime; +}; + +class MidletSuiteData +{ +public: + + MidletSuiteData(const java::util::Uid& aMidletUid,const std::wstring& aMidletClassName) + : mMidletUid(aMidletUid),mMidletClassName(aMidletClassName),mMediaId(UNDEFINED_MEDIA_ID) {} + + virtual ~MidletSuiteData() {} + + MidletSuiteData &operator=(const MidletSuiteData &x) + { + mMidletUid = x.mMidletUid; + mMidletClassName = x.mMidletClassName; + mMediaId = x.mMediaId; + return *this; + } + + MidletSuiteData(const MidletSuiteData& x) + { + *this = x; + } + + java::util::Uid mMidletUid; + std::wstring mMidletClassName; + int mMediaId; +}; + +/** + * This class manages reading/writing/deleting data from Java Storage. + */ +class PushDBHandler +{ +public: + + PushDBHandler(); + + virtual ~PushDBHandler(); + + /** + * This operation stores dynamic push connnection into database. This operation assumes + * that validation of arguments has been done by user. + * @param aUid UID of the MIDlet. + * @param aUri Push connection URI. + * @param aMidletName Class name of the MIdlet. + * @param aFilter Connection URL indicating which senders are allowed to cause + * the MIDlet to be launched. + * @throws PushException with following error code: + * DB_ERROR: + * Inserting dynamic push connection to the database failed. + */ + void storeDynamicPushRegistration(const java::util::Uid& aUid, + const std::wstring& aUri, + const std::wstring& aMidletName, + const std::wstring& aFilter); + + /** + * This operation deletes dynamic push registration from the db. + * @param aUid MIDlet's UID. + * @param aUri Push connection URI. + * @throws PushException with following error code: + * DB_ERROR: + * Deleting push registration failed to the db error. + */ + void unregisterDynamicPushRegistration(const java::util::Uid& aUid, + const std::wstring& aUri); + + /** + * This operation stores MIDlet's wake-up time to the db. + * @param aUid MIDlet's UID. + * @param aAlarmInMilliSecs Wake-up time in milliseconds. + * @throws PushException with following error code: + * DB_ERROR: + * Deleting push registration failed to the db error. + */ + void storeAlarm(const java::util::Uid& aUid, const long long& aAlarmInMilliSecs); + + /** + * Deletes MIDlet's wake-up time from the db. + * @param aUid MIDlet's UID. + * @throws PushException with following error code: + * DB_ERROR: + * Deleting push registration failed to the db error. + */ + void deleteAlarm(const java::util::Uid& aUid); + + /** + * This operation returns push registrations by Uid. + * @param aUid All push registrations are read from the db if value of the uid is empty. + * Otherwise is returned push registrations by uid. + * @param aPushRegs Output parameter. Contains all push registrations of all MIDlets. + * Empty list is returned if phone does not have any + * push registration. + * @throws PushException with following error code: + * DB_ERROR: + * Deleting push registration failed to the db error. + */ + void getPushRegs(const java::util::Uid& aUid, + java::storage::JavaStorageApplicationList_t& aPushRegs); + + /** + * This operation returns alarm times by Uid. + * @param aUid All alarms are read from the db if value of the uid is empty. + * Otherwise is returned alarms by uid. + * @param aAlarmList Output parameter. List contains all MIDlets' alarm time and + * UID. This operation does not do anything if no alarms has been defined + * to the phone. + */ + void getAlarms(const java::util::Uid& aUid,std::list& aAlarmList); + + /** + * This operation returns container which contains value pairs. + * @param aSuiteUid MIDlet suite UID of search condition. This can be also empty. All MIDlet suites + * are returned in that case. + * @param aMidletSuiteInfo Output parameter. value pairs. + * @throws PushException with following error code: + * DB_ERROR: + * Retrieving MIDlet Suite info failed. + */ + void getMidletSuiteInfo(const java::util::Uid& aSuiteUid, + std::multimap& aMidletSuiteInfo); + + /** + * This operation returns MIDlet Suite info by MIDlet uid. + * @param aMidletUid MIDlet UID of search condition. + * @param aMidletSuiteInfo Output parameter. value pairs. + * @throws PushException with following error code: + * DB_ERROR: + * Retrieving MIDlet Suite info failed. + */ + void getMidletSuiteInfoByMidletUid(const java::util::Uid& aMidletUid, + std::multimap& aMidletSuiteInfo); + +private: + + //Datamembers. + std::auto_ptr mDbStorage; + //java::util::ScopedMutex mMutex; + + //Internal operations. + void getMidletSuiteInfo(const java::util::Uid& aUid, + const std::wstring& aSearchColumn, + std::multimap& aMidletSuiteInfo); + void addMediaId(java::storage::JavaStorage& aStorageObj, + std::multimap& aMidletSuiteInfo); + void getMediaId(java::storage::JavaStorage& aStorageObj,const java::util::Uid& aSuiteUid, + std::map& aMediaIdContainer); + void fillMidletId(const java::util::Uid& aSuiteUid, + std::map& aMediaIdContainer, + java::storage::JavaStorageApplicationList_t& aFoundEntries); + void fillAlarmData(std::list& aAlarmList, + java::storage::JavaStorageApplicationList_t& aFoundEntries); + void fillMidletSuiteInfo(std::multimap& aMidletSuiteInfo, + java::storage::JavaStorageApplicationList_t& aFoundEntries); + bool getDbValueAsUid(java::storage::JavaStorageApplicationList_t::iterator& aIter, + java::storage::JavaStorageEntry& aFindPattern,java::util::Uid& aOutput); + bool getDbValueAsLongLong(java::storage::JavaStorageApplicationList_t::iterator& aIter, + java::storage::JavaStorageEntry& aFindPattern,long long& aOutput); + bool getDbValueAsInt(java::storage::JavaStorageApplicationList_t::iterator& aIter, + java::storage::JavaStorageEntry& aFindPattern,int& aOutput); + bool getDbValueAsWStr(java::storage::JavaStorageApplicationList_t::iterator& aIter, + java::storage::JavaStorageEntry& aFindPattern,std::wstring& aOutput); + void openDbStorage(); + + //Not implemented. + PushDBHandler(const PushDBHandler&); + PushDBHandler& operator= (const PushDBHandler&); +}; + +}//end namespace push +}//end namespace java + +#endif // PUSHDBHANDLER_H