omadm/omadmextensions/adapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp
changeset 2 a5fecba4b1e4
parent 0 3ce708148e4d
child 14 4699373c9af8
--- a/omadm/omadmextensions/adapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp	Thu Jan 07 12:39:15 2010 +0200
+++ b/omadm/omadmextensions/adapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp	Mon Jan 18 20:09:30 2010 +0200
@@ -1000,6 +1000,16 @@
 		    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EAlreadyExists );
 		    return;
 		    }
+		else
+			{						
+			TInt ret = iCallBack->RemoveMappingL(KNSmlDMSettingsAdapterImplUid,
+							GetDynamicDMNodeUri( aURI ), ETrue );
+			if(ret != KErrNone)
+				{
+			    iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
+		    	return;
+				}			
+			}		
 		}
 	iNewProfile = ETrue; 
 	AddNodeBufferL (aURI, aStatusRef);
@@ -3961,5 +3971,23 @@
     return ImplementationTable;
 	}
 
+//------------------------------------------------------------------------------
+// TPtrC8 CNSmlDMSettingsAdapter12::GetDynamicDMNodeUri( const TDesC8& aURI )
+// returns DM/xxx URI
+//------------------------------------------------------------------------------
+TPtrC8 CNSmlDMSettingsAdapter12::GetDynamicDMNodeUri(const TDesC8& aURI)
+    {    
+    TInt i= 0;
+	TBuf8<50> DmAccRoot(KNSmlDefDMAcc);
+    for ( i = aURI.Find( KNSmlDefDMAcc ) + DmAccRoot.Length() + 1; i < aURI.Length(); i++ )
+        {
+        if( aURI[i] == '/' )
+            {
+            break;
+            }
+        }
+    
+    return aURI.Left( i );
+    }
 // End of File