using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models; using StructureHelperCommon.Models.VisualProperties; using StructureHelperCommon.Services; namespace DataAccess.DTOs { public class HasVisualPropertyToDTOUpdateStrategy : IUpdateStrategy { private Dictionary<(Guid id, Type type), ISaveable> referenceDictionary; private IShiftTraceLogger traceLogger; private IConvertStrategy convertStrategy; public HasVisualPropertyToDTOUpdateStrategy(Dictionary<(Guid id, Type type), ISaveable> referenceDictionary, IShiftTraceLogger traceLogger) { this.referenceDictionary = referenceDictionary; this.traceLogger = traceLogger; } public void Update(IHasVisualProperty targetObject, IHasVisualProperty sourceObject) { CheckObject.ThrowIfNull(targetObject); CheckObject.ThrowIfNull(sourceObject); if (ReferenceEquals(targetObject, sourceObject)) { return; } convertStrategy = new DictionaryConvertStrategy( referenceDictionary, traceLogger, new PrimitiveVisualPropertyToDTOConvertStrategy(referenceDictionary, traceLogger)); targetObject.VisualProperty = convertStrategy.Convert(sourceObject.VisualProperty); } } }