--- /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