public static DataStructures.SyncStore LoadSyncResponse(SyncResponse response)
{
DataStructures.SyncStore result = new DataStructures.SyncStore();
if (string.IsNullOrEmpty(response.ResponseData.Status))
{
result.StatusSpecified = false;
}
else
{
result.StatusSpecified = true;
}
if (result.StatusSpecified)
{
result.Status = Convert.ToInt32(response.ResponseData.Status);
}
if (response.ResponseData.Item == null)
{
return result;
}
Response.SyncCollectionsCollection collection = ((Response.SyncCollections)response.ResponseData.Item).Collection[0];
for (int i = 0; i < collection.ItemsElementName.Length; i++)
{
switch (collection.ItemsElementName[i])
{
case Response.ItemsChoiceType10.CollectionId:
result.CollectionId = collection.Items[i].ToString();
break;
case Response.ItemsChoiceType10.SyncKey:
result.SyncKey = collection.Items[i].ToString();
break;
case Response.ItemsChoiceType10.Status:
result.CollectionStatus = Convert.ToByte(collection.Items[i]);
break;
case Response.ItemsChoiceType10.Commands:
Response.SyncCollectionsCollectionCommands commands = collection.Items[i] as Response.SyncCollectionsCollectionCommands;
if (commands != null)
{
LoadAddElements(commands, result.AddElements);
LoadChangeElements(commands, result.ChangeElements);
LoadDeleteElements(commands, result.DeleteElements);
}
break;
case Response.ItemsChoiceType10.Responses:
Response.SyncCollectionsCollectionResponses responses = collection.Items[i] as Response.SyncCollectionsCollectionResponses;
if (responses != null)
{
if (responses.Add != null)
{
foreach (Response.SyncCollectionsCollectionResponsesAdd add in responses.Add)
{
result.AddResponses.Add(add);
}
}
if (responses.Change != null)
{
foreach (Response.SyncCollectionsCollectionResponsesChange change in responses.Change)
{
result.ChangeResponses.Add(change);
}
}
}
break;
}
}
return result;
}