smf/smfservermodule/smfclient/smfrelationmgr_p.cpp
changeset 18 013a02bf2bb0
child 25 a180113055cb
equal deleted inserted replaced
17:106a4bfcb866 18:013a02bf2bb0
       
     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  * Private Implementation of Relation Manager
       
    17  * 
       
    18  */
       
    19 
       
    20 #include "smfrelationmgr.h"
       
    21 #include "smfrelationmgr_p.h"
       
    22 
       
    23 #ifdef Q_OS_SYMBIAN
       
    24 	#include "smfclientsymbian.h"
       
    25 #else
       
    26 	#include "smfclientqt.h"
       
    27 #endif
       
    28 
       
    29 
       
    30 SmfRelationMgrPrivate::SmfRelationMgrPrivate(SmfRelationMgr* relnMngr)
       
    31 	{
       
    32 	Q_UNUSED(relnMngr)
       
    33 #ifdef Q_OS_SYMBIAN
       
    34 	//private impl for symbian
       
    35 	m_SmfClientPrivate = CSmfClientSymbian::NewL();
       
    36 #endif
       
    37 	}
       
    38 
       
    39 SmfRelationMgrPrivate::~SmfRelationMgrPrivate()
       
    40 	{
       
    41 	if(m_SmfClientPrivate)
       
    42 		{
       
    43 		delete m_SmfClientPrivate;
       
    44 		m_SmfClientPrivate = NULL;
       
    45 		}
       
    46 	}
       
    47 
       
    48 SmfRelationId SmfRelationMgrPrivate::create( SmfProvider *provider, SmfContact *contact)
       
    49 	{
       
    50 	m_dataForDSM.clear();
       
    51 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
    52 	if(provider)
       
    53 		{
       
    54 		m_argFlag = 1;
       
    55 		writeStream<<m_argFlag;
       
    56 		writeStream<<*provider;
       
    57 		}
       
    58 	else
       
    59 		{
       
    60 		m_argFlag = 0;
       
    61 		writeStream<<m_argFlag;
       
    62 		}
       
    63 	if(contact)
       
    64 		{
       
    65 		m_argFlag = 1;
       
    66 		writeStream<<m_argFlag;
       
    67 		writeStream<<*contact;
       
    68 		}
       
    69 	else
       
    70 		{
       
    71 		m_argFlag = 0;
       
    72 		writeStream<<m_argFlag;
       
    73 		}
       
    74 	
       
    75 	m_dataFromDSM.clear();
       
    76 	SmfError err = SmfNoError;
       
    77 	SmfRelationId relnId;
       
    78 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationCreate,m_dataForDSM,err,maxSmfRelationIdSize);
       
    79 	if(err == SmfNoError)
       
    80 		{
       
    81 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
    82 		readStream>>relnId;
       
    83 		}
       
    84 	else
       
    85 		{
       
    86 		User::Panic(_L("DSM err = "),err);
       
    87 		}
       
    88 	return relnId;
       
    89 	}
       
    90 
       
    91 SmfError SmfRelationMgrPrivate::associate( SmfRelationId& relation,
       
    92 		const SmfContact* contact, SmfProvider* provider)
       
    93 	{
       
    94 	m_dataForDSM.clear();
       
    95 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
    96 	writeStream<<relation;
       
    97 	if(contact)
       
    98 		{
       
    99 		m_argFlag = 1;
       
   100 		writeStream<<m_argFlag;
       
   101 		writeStream<<*contact;
       
   102 		}
       
   103 	else
       
   104 		{
       
   105 		m_argFlag = 0;
       
   106 		writeStream<<m_argFlag;
       
   107 		}
       
   108 	if(provider)
       
   109 		{
       
   110 		m_argFlag = 1;
       
   111 		writeStream<<m_argFlag;
       
   112 		writeStream<<*provider;
       
   113 		}
       
   114 	else
       
   115 		{
       
   116 		m_argFlag = 0;
       
   117 		writeStream<<m_argFlag;
       
   118 		}
       
   119 	
       
   120 	m_dataFromDSM.clear();
       
   121 	SmfError err = SmfNoError;
       
   122 	int maxAlloc = 100;
       
   123 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationAssociate,m_dataForDSM,err,maxAlloc);
       
   124 	if(err == SmfNoError)
       
   125 		{
       
   126 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   127 		int errInt;
       
   128 		readStream>>errInt;
       
   129 		err = (SmfError)errInt;
       
   130 		}
       
   131 	else
       
   132 		{
       
   133 		User::Panic(_L("DSM err = "),err);
       
   134 		}
       
   135 	return err;
       
   136 	}
       
   137 
       
   138 SmfError SmfRelationMgrPrivate::remove(SmfRelationId& relation,const SmfContact* contact)
       
   139 	{
       
   140 	m_dataForDSM.clear();
       
   141 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   142 	writeStream<<relation;
       
   143 	if(contact)
       
   144 		{
       
   145 		m_argFlag = 1;
       
   146 		writeStream<<m_argFlag;
       
   147 		writeStream<<*contact;
       
   148 		}
       
   149 	else
       
   150 		{
       
   151 		m_argFlag = 0;
       
   152 		writeStream<<m_argFlag;
       
   153 		}
       
   154 	
       
   155 	m_dataFromDSM.clear();
       
   156 	SmfError err = SmfNoError;
       
   157 	int maxAlloc = 100;
       
   158 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationRemove,m_dataForDSM,err,maxAlloc);
       
   159 	if(err == SmfNoError)
       
   160 		{
       
   161 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   162 		int errInt;
       
   163 		readStream>>errInt;
       
   164 		err = (SmfError)errInt;
       
   165 		}
       
   166 	else
       
   167 		{
       
   168 		const QString errStr = QString::number(err);
       
   169 		Q_ASSERT_X(1,"SmfRelationMgrPrivate::remove","error");
       
   170 		}
       
   171 	return err;
       
   172 	}
       
   173 
       
   174 SmfRelationItem* SmfRelationMgrPrivate::searchById(const SmfRelationId& relation)
       
   175 	{
       
   176 	m_dataForDSM.clear();
       
   177 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   178 	writeStream<<relation;
       
   179 	
       
   180 	m_dataFromDSM.clear();
       
   181 	int maxAlloc = MaxSmfContactSize;
       
   182 	SmfError err = SmfNoError;
       
   183 	SmfRelationItem *relnItem = NULL;
       
   184 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationSearchById,m_dataForDSM,err,maxAlloc);
       
   185 	if(err == SmfNoError)
       
   186 		{
       
   187 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   188 		m_argFlag = 0;
       
   189 		readStream>>m_argFlag;
       
   190 		if(m_argFlag)
       
   191 			{
       
   192 			relnItem = new SmfRelationItem;
       
   193 			readStream>>*(relnItem);
       
   194 			}
       
   195 		}
       
   196 	else
       
   197 		{
       
   198 		User::Panic(_L("DSM err = "),err);
       
   199 		}
       
   200 	return relnItem;
       
   201 	}
       
   202 
       
   203 SmfRelationId SmfRelationMgrPrivate::searchByContact( SmfContact contact)
       
   204 	{
       
   205 	m_dataForDSM.clear();
       
   206 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   207 	writeStream<<contact;
       
   208 	
       
   209 	m_dataFromDSM.clear();
       
   210 	int maxAlloc = 1000;
       
   211 	SmfError err = SmfNoError;
       
   212 	SmfRelationId relnId;
       
   213 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationSearchByContact,m_dataForDSM,err,maxAlloc);
       
   214 	if(err == SmfNoError)
       
   215 		{
       
   216 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   217 		readStream>>relnId;
       
   218 		}
       
   219 	else
       
   220 		{
       
   221 		User::Panic(_L("DSM err = "),err);
       
   222 		}
       
   223 	return relnId;
       
   224 	}
       
   225 
       
   226 //number of contacts in a relation
       
   227 uint SmfRelationMgrPrivate::count(SmfRelationId relation)
       
   228 	{
       
   229 	m_dataForDSM.clear();
       
   230 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   231 	writeStream<<relation;
       
   232 	
       
   233 	m_dataFromDSM.clear();
       
   234 	SmfError err = SmfNoError;
       
   235 	int maxAlloc = 100;
       
   236 	uint count;
       
   237 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationCount,m_dataForDSM,err,maxAlloc);
       
   238 	if(err == SmfNoError)
       
   239 		{
       
   240 		QDataStream readStream(&m_dataForDSM,QIODevice::ReadOnly);
       
   241 		readStream>>count;
       
   242 		}
       
   243 	else
       
   244 		{
       
   245 		User::Panic(_L("DSM err = "),err);
       
   246 		}
       
   247 	return count;
       
   248 	}
       
   249 
       
   250 SmfRelationItem* SmfRelationMgrPrivate::get(SmfRelationId& relation, quint32 index)
       
   251 	{
       
   252 	m_dataForDSM.clear();
       
   253 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   254 	writeStream<<relation;
       
   255 	writeStream<<index;
       
   256 	
       
   257 	m_dataFromDSM.clear();
       
   258 	SmfError err = SmfNoError;
       
   259 	int maxAlloc = maxSmfRelationItemSize;
       
   260 	SmfRelationItem* relationItem = NULL;
       
   261 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGet,m_dataForDSM,err,maxAlloc);
       
   262 	if(err == SmfNoError)
       
   263 		{
       
   264 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   265 		m_argFlag = 0;
       
   266 		readStream>>m_argFlag;
       
   267 		if(m_argFlag)
       
   268 			{
       
   269 			relationItem = new SmfRelationItem;
       
   270 			readStream>>*(relationItem);
       
   271 			}
       
   272 		}
       
   273 	else
       
   274 		{
       
   275 		User::Panic(_L("DSM err = "),err);
       
   276 		}
       
   277 	return relationItem;
       
   278 	}
       
   279 
       
   280 QList<SmfRelationItem> SmfRelationMgrPrivate::getAll(SmfRelationId& relation)
       
   281 	{
       
   282 	m_dataForDSM.clear();
       
   283 	
       
   284 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   285 	writeStream<<relation;
       
   286 		
       
   287 	m_dataFromDSM.clear();
       
   288 	SmfError err = SmfNoError;
       
   289 	QList<SmfRelationItem> relationItemList;
       
   290 	int maxAlloc = maxSmfRelationItemSize*maxRelationItems;
       
   291 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGetAll,m_dataForDSM,err,maxAlloc);
       
   292 	if(err == SmfNoError)
       
   293 		{
       
   294 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   295 		readStream>>relationItemList;
       
   296 		}
       
   297 	else
       
   298 		{
       
   299 		User::Panic(_L("DSM err = "),err);
       
   300 		}
       
   301 	return relationItemList;
       
   302 	}
       
   303 
       
   304 QList<SmfRelationId> SmfRelationMgrPrivate::getAllRelations()
       
   305 	{
       
   306 	m_dataForDSM.clear();
       
   307 	
       
   308 	m_dataFromDSM.clear();
       
   309 	SmfError err = SmfNoError;
       
   310 	int maxAlloc = 1000*maxRelationItems;
       
   311 	QList<SmfRelationId> relationIdList;
       
   312 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationGetAllRelations,m_dataForDSM,err,maxAlloc);
       
   313 	if(err == SmfNoError)
       
   314 		{
       
   315 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   316 		readStream>>relationIdList;
       
   317 		}
       
   318 	else
       
   319 		{
       
   320 		User::Panic(_L("DSM err = "),err);
       
   321 		}
       
   322 	return relationIdList;
       
   323 	}
       
   324 
       
   325 SmfError SmfRelationMgrPrivate::Delete(SmfRelationId& relation)
       
   326 	{
       
   327 	m_dataForDSM.clear();
       
   328 	
       
   329 	QDataStream writeStream(&m_dataForDSM,QIODevice::WriteOnly);
       
   330 	writeStream<<relation;
       
   331 		
       
   332 	m_dataFromDSM.clear();
       
   333 	SmfError err = SmfNoError;
       
   334 	int maxAlloc = 100;
       
   335 	m_dataFromDSM = m_SmfClientPrivate->sendDSMSyncRequest(SmfRelationDeleteRelation,m_dataForDSM,err,maxAlloc);
       
   336 	if(err == SmfNoError)
       
   337 		{
       
   338 		QDataStream readStream(&m_dataFromDSM,QIODevice::ReadOnly);
       
   339 		int errInt;
       
   340 		readStream>>errInt;
       
   341 		err = (SmfError)errInt;
       
   342 		}
       
   343 	else
       
   344 		{
       
   345 		User::Panic(_L("DSM err = "),err);
       
   346 		}
       
   347 	return err;
       
   348 	}