/// <summary> /// Collects an id from a Compare Difference Value /// </summary> /// <param name="ids">Id collection to push to</param> /// <param name="value">Compare Difference Value</param> /// <param name="valueType">Value Type to collect</param> private void CollectId(List <string> ids, CompareDifferenceValue value, CompareDifferenceValue.ValueResolveType valueType) { if (value == null || value.ResolveType != valueType) { return; } ids.Add(value.Value); }
/// <summary> /// Collects ids to resolve /// </summary> /// <param name="differences">Differences to collect from</param> /// <param name="valueType">Value type to collect</param> /// <returns>Ids</returns> private List <string> CollectIds(List <CompareDifference> differences, CompareDifferenceValue.ValueResolveType valueType) { List <string> ids = new List <string>(); if (differences == null) { return(ids); } foreach (CompareDifference curDifference in differences) { CollectId(ids, curDifference.Name, valueType); CollectId(ids, curDifference.NewValue, valueType); CollectId(ids, curDifference.OldValue, valueType); ids.AddRange(CollectIds(curDifference.SubDifferences, valueType)); } return(ids); }
/// <summary> /// Fills a single item name /// </summary> /// <param name="value">Value to fill</param> /// <param name="objectLookup">Dictionary to get object names from</param> /// <param name="objectType">Object type to resolve</param> /// <param name="deletedMessage">Message used if object was deleted</param> private void FillSingleObjectName(CompareDifferenceValue value, Dictionary <string, string> objectLookup, CompareDifferenceValue.ValueResolveType objectType, string deletedMessage) { if (value == null || value.ResolveType != objectType) { return; } if (objectLookup.ContainsKey(value.Value)) { value.Value = objectLookup[value.Value]; } else { value.Value = _localizer[deletedMessage]; } }
/// <summary> /// Fills object names /// </summary> /// <param name="differences">Differences to fill</param> /// <param name="objectLookup">Dictionary to get object names from</param> /// <param name="objectType">Object type to resolve</param> /// <param name="deletedMessage">Message used if object was deleted</param> private void FillObjectNames(List <CompareDifference> differences, Dictionary <string, string> objectLookup, CompareDifferenceValue.ValueResolveType objectType, string deletedMessage) { if (differences == null) { return; } foreach (CompareDifference curDifference in differences) { FillSingleObjectName(curDifference.Name, objectLookup, objectType, deletedMessage); FillSingleObjectName(curDifference.NewValue, objectLookup, objectType, deletedMessage); FillSingleObjectName(curDifference.OldValue, objectLookup, objectType, deletedMessage); FillObjectNames(curDifference.SubDifferences, objectLookup, objectType, deletedMessage); } }