syncmlfw/ds/hostserver/dshostclient/src/nsmldsitemmodificationset.cpp
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/ds/hostserver/dshostclient/src/nsmldsitemmodificationset.cpp	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,170 @@
+/*
+* Copyright (c) 2005 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:  Utilities for DS Loader Framework
+*
+*/
+
+
+// INCLUDE FILES
+#ifndef __HOST_SERVER_MTEST__
+#include <SmlDataProvider.h>
+#endif
+
+#include "nsmldsitemmodificationset.h"
+
+// ================================= MEMBER FUNCTIONS =============================================
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::AddItem
+// Adds item to modification set.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C TInt RNSmlDbItemModificationSet::AddItemL(const TNSmlDbItemModification& aItem )
+	{
+	if ( iItemSet.Find( aItem ) != KErrNotFound )
+		{
+		return KErrAlreadyExists;
+		}
+	else
+		{
+		iItemSet.AppendL( aItem );
+		}
+		
+	return KErrNone;
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::RemoveItem
+// Removes the item at a specified position from the modification set.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C void RNSmlDbItemModificationSet::RemoveItem( TInt aIndex )
+	{
+	iItemSet.Remove( aIndex );
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::AddGroup
+// Adds group of items to modification set.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C void RNSmlDbItemModificationSet::AddGroupL( const MSmlDataItemUidSet& aUidSet, TNSmlDbItemModification::TNSmlDbItemModificationType aModType )
+	{
+	for ( TInt i = 0; i < aUidSet.ItemCount(); i++ )
+		{
+		TNSmlDbItemModification tempItem( aUidSet.ItemAt( i ), aModType );
+		if ( iItemSet.Find( tempItem ) == KErrNotFound )
+			{
+			iItemSet.AppendL( tempItem );
+			}
+		}
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::ItemCount
+// Returns the number of items in the set.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C TInt RNSmlDbItemModificationSet::ItemCount() const
+	{
+	return iItemSet.Count();
+	}
+	
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::ItemIndex
+// Returns the index of modification item.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C TInt RNSmlDbItemModificationSet::ItemIndex( const TSmlDbItemUid aItemId ) const
+	{
+	for ( TInt i = 0; i < iItemSet.Count(); i++ )
+		{
+		if ( iItemSet[i].ItemId() == aItemId )
+			{
+			return i;
+			}
+		}
+	return KErrNotFound;
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::ItemAt
+// Retuns the modifcation item.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C TNSmlDbItemModification RNSmlDbItemModificationSet::ItemAt( TInt aIndex ) const
+	{
+	return iItemSet[aIndex];
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::Reset
+// Resets modification set.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C void RNSmlDbItemModificationSet::Reset()
+	{
+	iItemSet.Reset();
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::Reset
+// Closes modification set.
+// ------------------------------------------------------------------------------------------------	
+EXPORT_C void RNSmlDbItemModificationSet::Close()
+	{
+	Reset();
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::ExternalizeL
+// This method externalizes class to stream.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C void RNSmlDbItemModificationSet::ExternalizeL( RWriteStream& aStream ) const
+	{
+	aStream.WriteInt32L( iItemSet.Count() );
+	for ( TInt i = 0; i < iItemSet.Count(); i++ )
+		{
+		TPckgBuf<TSmlDbItemUid> b( ( iItemSet[i].ItemId() ) );
+		aStream << b;
+		TPckgBuf<TNSmlDbItemModification::TNSmlDbItemModificationType> c( iItemSet[i].ModificationType() );
+		aStream << c;
+		}
+	}
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::InternalizeL
+// This method internalizes class from stream.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C void RNSmlDbItemModificationSet::InternalizeL( RReadStream& aStream )
+	{
+	TInt count( aStream.ReadInt32L() );
+	for ( TInt i = 0; i < count; i++ )
+		{
+		TPckgBuf<TSmlDbItemUid> packageA;
+		aStream >> packageA;
+		TSmlDbItemUid tempId = packageA();
+		
+		TPckgBuf<TNSmlDbItemModification::TNSmlDbItemModificationType> packageB;
+		aStream >> packageB;
+		TNSmlDbItemModification::TNSmlDbItemModificationType tempModType = packageB();
+
+		TNSmlDbItemModification tempItem( tempId, tempModType );
+		AddItemL( tempItem );	
+		}
+	};
+
+// ------------------------------------------------------------------------------------------------
+// RNSmlDbItemModificationSet::StreamSize
+// calculates size needed for stream when externalized.
+// ------------------------------------------------------------------------------------------------
+EXPORT_C TInt RNSmlDbItemModificationSet::StreamSize() const
+	{
+	return ( sizeof( TInt32 ) + ( sizeof( TNSmlDbItemModification ) + 2 ) * ItemCount() );
+	}
+	
+// End of File