Change value diagram calculator

This commit is contained in:
Evgeny Redikultsev
2025-11-16 21:03:57 +05:00
parent f7e60e0bb3
commit 215f631bb0
170 changed files with 2108 additions and 387 deletions

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Shapes;
using StructureHelperCommon.Services;
@@ -6,19 +7,36 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public class ValueDiagramUpdateStrategy : IParentUpdateStrategy<IValueDiagram>
{
private IUpdateStrategy<IPoint2DRange> rangeUpdateStrategy;
private IUpdateStrategy<IPoint2DRange>? _rangeUpdateStrategy;
public ValueDiagramUpdateStrategy(IUpdateStrategy<IPoint2DRange> rangeUpdateStrategy)
{
_rangeUpdateStrategy = rangeUpdateStrategy ?? throw new StructureHelperException("rangeUpdateStrategy cannot be null");
}
public ValueDiagramUpdateStrategy() { }
public bool UpdateChildren { get; set; } = true;
private IUpdateStrategy<IPoint2DRange> RangeUpdateStrategy
=> _rangeUpdateStrategy ??= new Point2DRangeUpdateStrategy();
public void Update(IValueDiagram targetObject, IValueDiagram sourceObject)
{
CheckObject.IsNull(targetObject, sourceObject);
if (ReferenceEquals(targetObject, sourceObject)) { return; }
CheckObject.ThrowIfNull(targetObject, nameof(targetObject));
CheckObject.ThrowIfNull(sourceObject, nameof(sourceObject));
if (ReferenceEquals(targetObject, sourceObject))
return;
targetObject.StepNumber = sourceObject.StepNumber;
if (UpdateChildren == true)
if (UpdateChildren)
{
rangeUpdateStrategy ??= new Point2DRangeUpdateStrategy();
rangeUpdateStrategy.Update(targetObject.Point2DRange, sourceObject.Point2DRange);
// Use property for lazy initialization
RangeUpdateStrategy.Update(targetObject.Point2DRange, sourceObject.Point2DRange);
}
}
}
}