diff -r b85b0c039c14 -r 1d94eb8df9c2 smf/smfservermodule/smfserver/pluginmgr/smfpluginmanagerutil.cpp --- a/smf/smfservermodule/smfserver/pluginmgr/smfpluginmanagerutil.cpp Fri May 21 15:40:57 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1178 +0,0 @@ -/** - * Copyright (c) 2010 Sasken Communication Technologies Ltd. - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of the "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: - * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution - * - * Contributors: - * Manasij Roy, Nalina Hariharan - * - * Description: - * The Plugin Manager util class performs all plugin functional - * specific functionalities - * - */ - -// plugin interfaces -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "smfpluginmanagerutil.h" -#include "smfpluginmanager.h" - -// Static data initialisation -SmfPluginManagerUtil* SmfPluginManagerUtil::m_myInstance = NULL; - - -/** - * Method to get the instance of SmfPluginManagerUtil class - * @param aParent The parent object - * @return The instance of SmfPluginManagerUtil class - */ -SmfPluginManagerUtil* SmfPluginManagerUtil::getInstance ( QObject *aParent ) - { - if(NULL == m_myInstance) - m_myInstance = new SmfPluginManagerUtil( aParent ); - return m_myInstance; - } - - -/** - * Constructor with default argument - * @param aParent The parent object - */ -SmfPluginManagerUtil::SmfPluginManagerUtil ( QObject */*aParent*/ ) - { - } - - -/** - * Destructor - */ -SmfPluginManagerUtil::~SmfPluginManagerUtil ( ) - { - if(m_myInstance) - delete m_myInstance; - } - - -/** - * Method called by Plugin Manager to create a web query. - * This method calls the respective plugin methods for creation of - * web queries using the aOperation and aInputData parameters. - * @param aInstance Instance of the loaded plugin that perform this operation - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @see smfglobal.h - */ -void SmfPluginManagerUtil::createRequest ( QObject* aInstance, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createRequest"); - SmfPluginError pluginErrorVal; - - // Find the type of service required - switch(aOperation) - { - case SmfContactGetFriends: - case SmfContactGetFollowers: - case SmfContactSearch: - case SmfContactSearchNear: - case SmfContactGetGroups: - case SmfContactSearchInGroup: - // Authorise the plugin and call create request methods - pluginErrorVal = createContactFetcherRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - case SmfContactRetrievePosts: - case SmfContactPost: - case SmfContactUpdatePost: - case SmfContactPostDirected: - case SmfContactCommentOnAPost: - case SmfContactPostAppearence: - case SmfContactSharePost: - // Authorise the plugin and call create request methods - pluginErrorVal = createContactPostRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - case SmfMusicGetLyrics: - case SmfMusicGetSubtitle: - // Authorise the plugin and call create request methods - pluginErrorVal = createMusicLyricsRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - case SmfMusicGetEventsOnLoc: - case SmfMusicGetVenueOnLoc: - case SmfMusicGetEventsOnVenue: - case SmfMusicPostEvents: - // Authorise the plugin and call create request methods - pluginErrorVal = createMusicEventsRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - case SmfMusicGetRecommendations: - case SmfMusicGetTracks: - case SmfMusicGetTrackInfo: - case SmfMusicGetStores: - case SmfMusicPostCurrentPlaying: - // Authorise the plugin and call create request methods - pluginErrorVal = createMusicSearchRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - case SmfMusicGetUserInfo: - case SmfMusicSearchUser: - // Authorise the plugin and call create request methods - pluginErrorVal = createMusicServiceRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - case SmfMusicGetPlaylists: - case SmfMusicGetPlaylistsOfUser: - case SmfMusicAddToPlaylist: - case SmfMusicPostCurrentPlayingPlaylist: - // Authorise the plugin and call create request methods - pluginErrorVal = createMusicPlaylistRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - case SmfPictureGetPictures: - case SmfPictureDescription: - case SmfPictureUpload: - case SmfPictureMultiUpload: - case SmfPicturePostComment: - // Authorise the plugin and call create request methods - pluginErrorVal = createGalleryRequest(aInstance, aOperation, - aInputData, aReqData, aResult); - break; - - default: - SmfPluginManager::getInstance()->server()->writeLog("Unknown service type!!!"); - aResult = SmfPluginUnknownService; - } - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginRequestCreationFailed; - } - - -/** - * Method to create a web query to fetch contact details. - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createContactFetcherRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createContactFetcherRequest"); - - // typecast instance to the contact - fetcher type, here SmfContactFetcherPlugin - SmfContactFetcherPlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - int pageNum, itemPerPage; - - switch(aOperation) - { - case SmfContactGetFriends: - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->friends(aReqData, pageNum, itemPerPage); - break; - - case SmfContactGetFollowers: - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->followers(aReqData, pageNum, itemPerPage); - break; - - case SmfContactSearch: - { - SmfContact searchContact; - stream>>searchContact; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->search(aReqData, searchContact, pageNum, itemPerPage); - break; - } - - case SmfContactSearchNear: - { - SmfLocation location; - int i; - stream>>i; - SmfLocationSearchBoundary proximity = (SmfLocationSearchBoundary)i; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->searchNear(aReqData, location, proximity, pageNum, itemPerPage); - break; - } - - case SmfContactGetGroups: - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->groups(aReqData, pageNum, itemPerPage); - break; - - case SmfContactSearchInGroup: - { - SmfGroup group; - stream>>group; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->searchInGroup(aReqData, group, pageNum, itemPerPage); - break; - } - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - -/** - * Method to create a web query to do post operation on contacts - * (like scraps or messages) - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createContactPostRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createContactPostRequest"); - - // typecast instance to SmfPostProviderPlugin - SmfPostProviderPlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - SmfContact contact; - SmfPost post; - SmfLocation location; - int pageNum, itemPerPage; - - switch(aOperation) - { - case SmfContactRetrievePosts: - stream>>contact; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->retrieve(aReqData, &contact, pageNum, itemPerPage); - break; - - case SmfContactPost: - stream>>post; - stream>>location; - pluginErrorVal = plugin->post(aReqData, post, location); - break; - - case SmfContactUpdatePost: - stream>>post; - pluginErrorVal = plugin->updatePost(aReqData, post); - break; - - case SmfContactPostDirected: - stream>>post; - stream>>contact; - stream>>location; - pluginErrorVal = plugin->postDirected(aReqData, post, contact, &location); - break; - - case SmfContactCommentOnAPost: - { - SmfPost post2; - stream>>post; - stream>>post2; - stream>>location; - pluginErrorVal = plugin->commentOnAPost(aReqData, post, post2, &location); - break; - } - - case SmfContactPostAppearence: - { - QString status; - int i; - stream>>i; - SmfPresenceInfo presence = (SmfPresenceInfo)i; - stream>>status; - pluginErrorVal = plugin->postAppearence(aReqData, presence, status); - break; - } - - case SmfContactSharePost: - { - bool edited; - stream>>post; - stream>>contact; - stream>>edited; - pluginErrorVal = plugin->sharePost(aReqData, post, contact, edited); - break; - } - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - - -/** - * Method to create a web query to do music lyrics or subtitle search - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createMusicLyricsRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicLyricsRequest"); - - // typecast instance to SmfLyricsServicePlugin - SmfLyricsServicePlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - SmfTrackInfo trackInfo; - int pageNum, itemPerPage; - - switch(aOperation) - { - case SmfMusicGetLyrics: - stream>>trackInfo; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->lyrics(aReqData, trackInfo, pageNum, itemPerPage); - break; - - case SmfMusicGetSubtitle: - { - stream>>trackInfo; - int i; - stream>>i; - SmfSubtitleSearchFilter filter = (SmfSubtitleSearchFilter)i; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->subtitles(aReqData, trackInfo, filter, pageNum, itemPerPage); - break; - } - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - -/** - * Method to create a web query to do music event search or event post operation - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createMusicEventsRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicEventsRequest"); - - // typecast instance to SmfMusicEventsPlugin - SmfMusicEventsPlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - int pageNum, itemPerPage; - QtMobility::QGeoPositionInfo location; - - switch(aOperation) - { - case SmfMusicGetEventsOnLoc: - stream>>location; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->events(aReqData, location, pageNum, itemPerPage); - break; - - case SmfMusicGetVenueOnLoc: - stream>>location; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->venues(aReqData, location, pageNum, itemPerPage); - break; - - case SmfMusicGetEventsOnVenue: - { - SmfLocation venue; - stream>>venue; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->events(aReqData, venue, pageNum, itemPerPage); - break; - } - - case SmfMusicPostEvents: - { - QList list; - stream>>list; - pluginErrorVal = plugin->postEvents(aReqData, list); - break; - } - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - - -/** - * Method to create a web query to do music search operation - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createMusicSearchRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicSearchRequest"); - - // typecast instance to SmfMusicSearchPlugin - SmfMusicSearchPlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - int pageNum, itemPerPage; - SmfTrackInfo trackInfo; - - switch(aOperation) - { - case SmfMusicGetRecommendations: - stream>>trackInfo; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->recommendations(aReqData, trackInfo, pageNum, itemPerPage); - break; - - case SmfMusicGetTracks: - stream>>trackInfo; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->tracks(aReqData, trackInfo, pageNum, itemPerPage); - break; - - case SmfMusicGetTrackInfo: - { - SmfMusicFingerPrint fp; - stream>>fp; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->trackInfo(aReqData, fp, pageNum, itemPerPage); - break; - } - - case SmfMusicGetStores: - stream>>trackInfo; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->stores(aReqData, trackInfo, pageNum, itemPerPage); - break; - - case SmfMusicPostCurrentPlaying: - stream>>trackInfo; - pluginErrorVal = plugin->postCurrentPlaying(aReqData, trackInfo); - break; - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - -/** - * Method to create a web query to do music service request operation - * like getting self profile or search profiles of other users - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createMusicServiceRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicServiceRequest"); - - // typecast instance to SmfMusicServicePlugin - SmfMusicServicePlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - int pageNum, itemPerPage; - - switch(aOperation) - { - case SmfMusicGetUserInfo: - pluginErrorVal = plugin->userInfo(aReqData); - break; - - case SmfMusicSearchUser: - { - SmfLocation place; - stream>>place; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->searchUser(aReqData, place, pageNum, itemPerPage); - break; - } - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - - -/** - * Method to create a web query to do music playlist related operation - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createMusicPlaylistRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicPlaylistRequest"); - - // typecast instance to SmfPlaylistServicePlugin - SmfPlaylistServicePlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - int pageNum, itemPerPage; - SmfPlaylist playlist; - - switch(aOperation) - { - case SmfMusicGetPlaylists: - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->playlists(aReqData, pageNum, itemPerPage); - break; - - case SmfMusicGetPlaylistsOfUser: - { - SmfMusicProfile user; - stream>>user; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->playlistsOf(aReqData, user, pageNum, itemPerPage); - break; - } - - case SmfMusicAddToPlaylist: - { - QList list; - stream>>playlist; - stream>>list; - pluginErrorVal = plugin->addToPlaylist(aReqData, playlist, list); - break; - } - - case SmfMusicPostCurrentPlayingPlaylist: - stream>>playlist; - pluginErrorVal = plugin->postCurrentPlayingPlaylist(aReqData, playlist); - break; - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - -/** - * Method to create a web query to do gallery related operation - * @param aPlugin The instance of the loaded plugin that performs the - * contact fetch operation. - * @param aOperation The type of operation to be performed - * @param aInputData The data required to create the web query - * @param aReqData [out] The request data created by the plugin - * @param aResult [out] SmfPluginManagerResult, The result of the operation - * @return SmfPluginError - * @see smfglobal.h - */ -SmfPluginError SmfPluginManagerUtil::createGalleryRequest ( QObject *aPlugin, - const SmfRequestTypeID &aOperation, - QByteArray &aInputData, - SmfPluginRequestData &aReqData, - SmfPluginManagerResult &aResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createGalleryRequest"); - - // typecast instance to SmfGalleryPlugin - SmfGalleryPlugin *plugin = qobject_cast(aPlugin); - SmfPluginError pluginErrorVal; - - if(plugin) - { - QDataStream stream(aInputData); - SmfPicture picture; - - switch(aOperation) - { - case SmfPictureGetPictures: - { - int pageNum, itemPerPage; - stream>>pageNum; - stream>>itemPerPage; - pluginErrorVal = plugin->pictures(aReqData, pageNum, itemPerPage); - break; - } - - case SmfPictureDescription: - stream>>picture; - pluginErrorVal = plugin->description(aReqData, picture); - break; - - case SmfPictureUpload: - stream>>picture; - pluginErrorVal = plugin->upload(aReqData, picture); - break; - - case SmfPictureMultiUpload: - { - QList list; - stream>>list; - pluginErrorVal = plugin->upload(aReqData, list); - break; - } - - case SmfPicturePostComment: - { - SmfComment comment; - stream>>picture; - stream>>comment; - pluginErrorVal = plugin->postComment(aReqData, picture, comment); - break; - } - - default: - // do nothing, unknown service - aResult = SmfPluginUnknownService; - SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!"); - return SmfPluginErrInvalidRequest; - } - - if(SmfPluginErrNone == pluginErrorVal) - aResult = SmfPluginRequestCreated; - else - aResult = SmfPluginServiceError; - } - else - aResult = SmfPluginLoadError; - - return pluginErrorVal; - } - - -/** - * Method called by Plugin Manager when network response is available - * @param aInstance The instance of the loaded plugin that requested - * the network operation. - * @param aOperation The type of operation to be performed - * @param aTransportResult The result of Transport Operation - * @param aResponse The network response data - * @param aResult [out] An output parameter to the plugin manager - * containing the data parsed by the plugins - * @param aRetType [out] The Plugin return value - * @param aPageResult [out] The page information filled by the plugins - * @return SmfPluginManagerResult, The result of the operation - * @see smfglobal.h - */ -SmfPluginManagerResult SmfPluginManagerUtil::responseAvailable ( - SmfPluginBase *aInstance, - const SmfRequestTypeID &aOperation, - const SmfTransportResult &aTransportResult, - QByteArray *aResponse, - QVariant *aResult, - SmfPluginRetType &aRetType, - SmfResultPage &aPageResult ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::responseAvailable"); - - SmfPluginError pluginRet; - SmfPluginManagerResult result = SmfPluginUnknownError; - - switch(aOperation) - { - case SmfContactGetFriends: - case SmfContactGetFollowers: - case SmfContactSearch: - case SmfContactSearchNear: - case SmfContactGetGroups: - case SmfContactSearchInGroup: - case SmfContactRetrievePosts: - case SmfContactPost: - case SmfContactUpdatePost: - case SmfContactPostDirected: - case SmfContactCommentOnAPost: - case SmfContactPostAppearence: - case SmfContactSharePost: - case SmfMusicGetLyrics: - case SmfMusicGetSubtitle: - case SmfMusicGetEventsOnLoc: - case SmfMusicGetVenueOnLoc: - case SmfMusicGetEventsOnVenue: - case SmfMusicPostEvents: - case SmfMusicGetRecommendations: - case SmfMusicGetTracks: - case SmfMusicGetTrackInfo: - case SmfMusicGetStores: - case SmfMusicPostCurrentPlaying: - case SmfMusicGetUserInfo: - case SmfMusicSearchUser: - case SmfMusicGetPlaylists: - case SmfMusicGetPlaylistsOfUser: - case SmfMusicAddToPlaylist: - case SmfMusicPostCurrentPlayingPlaylist: - case SmfPictureGetPictures: - case SmfPictureDescription: - case SmfPictureUpload: - case SmfPictureMultiUpload: - case SmfPicturePostComment: - { - pluginRet = aInstance->responseAvailable(aTransportResult, aResponse, - aResult, aRetType, aPageResult ); - - // When plugin returns no error - if( SmfPluginErrNone == pluginRet ) - { - // Request is complete, parsed data available with aResult - if( SmfRequestComplete == aRetType ) - result = SmfPluginResponseParsed; - - // Send the request again - else if(SmfSendRequestAgain == aRetType ) - result = SmfPluginSendRequestAgain; - else - result = SmfPluginResponseParseFailure; - } - // Parsing failed - else - result = SmfPluginResponseParseFailure; - - break; - } - - default: - // Unknown service, saved data in Plugin manager is corrupted - SmfPluginManager::getInstance()->server()->writeLog("No operation type found!!!"); - } - - return result; - } - - -/** - * Method to serialize the result of parsing (which is done by the - * plugins) to QByteArray to be sent to Smf server. - * @param aOperation The type of operation to be performed - * @param aResult The data to be serialized - * @param aDataStream Stream to be written - */ -void SmfPluginManagerUtil::serializeResult ( - const SmfRequestTypeID &aOperation, - QVariant* aResult, - QDataStream &aDataStream ) - { - SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::serializeResult"); - switch(aOperation) - { - // FOR CONTACT - FETCHER - case SmfContactGetFriends: - case SmfContactGetFollowers: - case SmfContactSearch: - case SmfContactSearchNear: - case SmfContactSearchInGroup: - { - QList contactList; - if( aResult->canConvert() ) - contactList = aResult->value(); - aDataStream< groupList; - if( aResult->canConvert() ) - groupList = aResult->value(); - aDataStream<server()->writeLog("Serialize - retrieveposts() result"); - - QList postList; - if( aResult->canConvert() ) - postList = aResult->value(); - aDataStream<type() ) - value = aResult->toBool(); - aDataStream< lyricsList; - if( aResult->canConvert() ) - lyricsList = aResult->value(); - aDataStream< subtitleList; - if( aResult->canConvert() ) - subtitleList = aResult->value(); - aDataStream< eventList; - if( aResult->canConvert() ) - eventList = aResult->value(); - aDataStream< venueList; - if( aResult->canConvert() ) - venueList = aResult->value(); - aDataStream<type() ) - value = aResult->toBool(); - aDataStream< trackList; - if( aResult->canConvert() ) - trackList = aResult->value(); - aDataStream< storeList; - if( aResult->canConvert() ) - storeList = aResult->value(); - aDataStream<type() ) - value = aResult->toBool(); - aDataStream<canConvert()) - user = aResult->value(); - aDataStream< userList; - if( aResult->canConvert() ) - userList = aResult->value(); - aDataStream< playlists; - if( aResult->canConvert() ) - playlists = aResult->value(); - aDataStream<type() ) - value = aResult->toBool(); - aDataStream< picList; - if( aResult->canConvert() ) - picList = aResult->value(); - aDataStream<type() ) - str = aResult->toString(); - aDataStream<type() ) - value = aResult->toBool(); - aDataStream<server()->writeLog("No operation type found!!!"); - } - } -