smf/smfservermodule/smfclient/client/smfrelationmgr_p.cpp
changeset 14 a469c0e6e7fb
equal deleted inserted replaced
13:b5d63d5fc252 14:a469c0e6e7fb
       
     1 /**
       
     2  * Copyright (c) 2010 Sasken Communication Technologies Ltd.
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of the "Eclipse Public License v1.0" 
       
     6  * which accompanies  this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html"
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
       
    11  *
       
    12  * Contributors:
       
    13  * Manasij Roy, Nalina Hariharan
       
    14  * 
       
    15  * Description:
       
    16  *
       
    17  */
       
    18 
       
    19 #include "smfrelationmgr_p.h"
       
    20 //logging headers
       
    21 #ifdef WRITE_LOG
       
    22 #include <QTextStream>
       
    23 #include <QFile>
       
    24 #endif
       
    25 #ifdef Q_OS_SYMBIAN
       
    26 #include "smfclientsymbian.h"
       
    27 #else
       
    28 #include "SmfClientQt.h"
       
    29 #endif
       
    30 
       
    31 SmfRelationMgrPrivate::SmfRelationMgrPrivate(SmfRelationMgr* relnMngr)
       
    32 	{
       
    33 	//private impl for symbian
       
    34 	#ifdef Q_OS_SYMBIAN
       
    35 	m_SmfClientPrivate = CSmfClientSymbian::NewL();
       
    36 	#endif
       
    37 	}
       
    38 SmfRelationMgrPrivate::~SmfRelationMgrPrivate()
       
    39 	{
       
    40 	if(m_SmfClientPrivate)
       
    41 		{
       
    42 		delete m_SmfClientPrivate;
       
    43 		m_SmfClientPrivate = NULL;
       
    44 		}
       
    45 	}
       
    46 SmfRelationId SmfRelationMgrPrivate::create(SmfProvider *provider, SmfContact *contact)
       
    47 	{
       
    48 	m_dataForDSM.clear();
       
    49 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
    50 	writeStream<<*(provider);
       
    51 	writeStream<<contact;
       
    52 	m_dataFromDSM.clear();
       
    53 	SmfError err=SmfNoError;
       
    54 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationCreate,m_dataForDSM,err,maxSmfRelationIdSize);
       
    55 	if(err==SmfNoError)
       
    56 		{
       
    57 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
    58 		SmfRelationId relnId;
       
    59 		readStream>>relnId;
       
    60 		return relnId;
       
    61 		}
       
    62 	else
       
    63 		{
       
    64 		User::Panic(_L("DSM err="),err);
       
    65 		}
       
    66 	}
       
    67 SmfError SmfRelationMgrPrivate::associate(const SmfRelationId& relation,const SmfContact* contact,SmfProvider* provider)
       
    68 	{
       
    69 	m_dataForDSM.clear();
       
    70 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
    71 	writeStream<<relation;
       
    72 	writeStream<<contact;
       
    73 	writeStream<<provider;
       
    74 	
       
    75 	m_dataFromDSM.clear();
       
    76 	SmfError err = SmfNoError;
       
    77 	int maxAlloc = 100;
       
    78 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationAssociate,m_dataForDSM,err,maxAlloc);
       
    79 	if(err == SmfNoError)
       
    80 		{
       
    81 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
    82 		int errInt;
       
    83 		readStream>>errInt;
       
    84 		err = (SmfError)errInt;
       
    85 		}
       
    86 	else
       
    87 		{
       
    88 		User::Panic(_L("DSM err="),err);
       
    89 		}
       
    90 	return err;
       
    91 	}
       
    92 SmfError SmfRelationMgrPrivate::remove(SmfRelationId& relation,const SmfContact* contact)
       
    93 	{
       
    94 	m_dataForDSM.clear();
       
    95 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
    96 	writeStream<<relation;
       
    97 	writeStream<<*(contact);
       
    98 	
       
    99 	m_dataFromDSM.clear();
       
   100 	SmfError err = SmfNoError;
       
   101 	int maxAlloc = 100;
       
   102 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationRemove,m_dataForDSM,err,maxAlloc);
       
   103 	if(err == SmfNoError)
       
   104 		{
       
   105 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   106 		int errInt;
       
   107 		readStream>>errInt;
       
   108 		err = (SmfError)errInt;
       
   109 		}
       
   110 	else
       
   111 		{
       
   112 		const QString errStr = QString::number(err);
       
   113 		Q_ASSERT_X(1,"SmfRelationMgrPrivate::remove","error");
       
   114 		}
       
   115 	return err;
       
   116 	}
       
   117 SmfRelationItem SmfRelationMgrPrivate::searchById(const SmfRelationId& relation)
       
   118 	{
       
   119 	m_dataForDSM.clear();
       
   120 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   121 	writeStream<<relation;
       
   122 	
       
   123 	m_dataFromDSM.clear();
       
   124 	int maxAlloc = MaxSmfContactSize;
       
   125 	SmfError err=SmfNoError;
       
   126 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationSearchById,m_dataForDSM,err,maxAlloc);
       
   127 	if(err == SmfNoError)
       
   128 		{
       
   129 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   130 		SmfRelationItem relnItem;
       
   131 		readStream>>relnItem;
       
   132 		return relnItem;
       
   133 		}
       
   134 	else
       
   135 		{
       
   136 		User::Panic(_L("DSM err="),err);
       
   137 		}
       
   138 	}
       
   139 SmfRelationId SmfRelationMgrPrivate::searchByContact( SmfContact contact)
       
   140 	{
       
   141 	m_dataForDSM.clear();
       
   142 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   143 	writeStream<<contact;
       
   144 	
       
   145 	m_dataFromDSM.clear();
       
   146 	int maxAlloc = 1000;
       
   147 	SmfError err=SmfNoError;
       
   148 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationSearchByContact,m_dataForDSM,err,maxAlloc);
       
   149 	if(err == SmfNoError)
       
   150 		{
       
   151 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   152 		SmfRelationId relnId;
       
   153 		readStream>>relnId;
       
   154 		return relnId;
       
   155 		}
       
   156 	else
       
   157 		{
       
   158 		User::Panic(_L("DSM err="),err);
       
   159 		}
       
   160 	}
       
   161 //number of contacts in a relation
       
   162 uint SmfRelationMgrPrivate::count(SmfRelationId relation)
       
   163 	{
       
   164 	m_dataForDSM.clear();
       
   165 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   166 	writeStream<<relation;
       
   167 	
       
   168 	m_dataFromDSM.clear();
       
   169 	SmfError err = SmfNoError;
       
   170 	int maxAlloc = 100;
       
   171 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationCount,m_dataForDSM,err,maxAlloc);
       
   172 	if(err == SmfNoError)
       
   173 		{
       
   174 		QDataStream readStream(&m_dataForDSM,QIODevice::ReadOnly);
       
   175 		uint count;
       
   176 		readStream>>count;
       
   177 		return count;
       
   178 		}
       
   179 	else
       
   180 		{
       
   181 		User::Panic(_L("DSM err="),err);
       
   182 		}
       
   183 	}
       
   184 
       
   185 SmfRelationItem SmfRelationMgrPrivate::get(SmfRelationId& relation, quint32 index)
       
   186 	{
       
   187 	m_dataForDSM.clear();
       
   188 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   189 	writeStream<<relation;
       
   190 	
       
   191 	m_dataFromDSM.clear();
       
   192 	SmfError err = SmfNoError;
       
   193 	int maxAlloc = maxSmfRelationItemSize;
       
   194 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGet,m_dataForDSM,err,maxAlloc);
       
   195 	if(err == SmfNoError)
       
   196 		{
       
   197 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   198 		SmfRelationItem relationItem;
       
   199 		readStream>>relationItem;
       
   200 		return relationItem;
       
   201 		}
       
   202 	else
       
   203 		{
       
   204 		User::Panic(_L("DSM err="),err);
       
   205 		}
       
   206 	}
       
   207 QList<SmfRelationItem> SmfRelationMgrPrivate::getAll(SmfRelationId& relation)
       
   208 	{
       
   209 	m_dataForDSM.clear();
       
   210 	
       
   211 	m_dataFromDSM.clear();
       
   212 	SmfError err = SmfNoError;
       
   213 	int maxAlloc = maxSmfRelationItemSize*maxRelationItems;
       
   214 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGetAll,m_dataForDSM,err,maxAlloc);
       
   215 	if(err == SmfNoError)
       
   216 		{
       
   217 	QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   218 	QList<SmfRelationItem> relationItemList;
       
   219 	readStream>>relationItemList;
       
   220 	return relationItemList;
       
   221 		}
       
   222 	else
       
   223 		{
       
   224 		User::Panic(_L("DSM err="),err);
       
   225 		}
       
   226 	}
       
   227 QList<SmfRelationId> SmfRelationMgrPrivate::getAllRelations()
       
   228 	{
       
   229 	m_dataForDSM.clear();
       
   230 	
       
   231 	m_dataFromDSM.clear();
       
   232 	SmfError err = SmfNoError;
       
   233 	int maxAlloc = 1000*maxRelationItems;
       
   234 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGetAllRelations,m_dataForDSM,err,maxAlloc);
       
   235 	if(err == SmfNoError)
       
   236 		{
       
   237 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   238 		QList<SmfRelationId> relationIdList;
       
   239 		readStream>>relationIdList;
       
   240 		return relationIdList;
       
   241 		}
       
   242 	else
       
   243 		{
       
   244 		User::Panic(_L("DSM err="),err);
       
   245 		}
       
   246 	}
       
   247 SmfError SmfRelationMgrPrivate::Delete(SmfRelationId& relation)
       
   248 	{
       
   249 	
       
   250 	}