using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models.Shapes; using StructureHelperCommon.Models.Shapes.Logics; using StructureHelperCommon.Services; namespace StructureHelperLogics.NdmCalculations.Primitives { internal class EllipsePrimitiveUpdateStrategy : IUpdateStrategy { private IUpdateStrategy basePrimitiveUpdateStrategy; private IUpdateStrategy divisionPropsUpdateStrategy; private IUpdateStrategy shapeUpdateStrategy; public EllipsePrimitiveUpdateStrategy(IUpdateStrategy basePrimitiveUpdateStrategy, IUpdateStrategy shapeUpdateStrategy, IUpdateStrategy divisionPropsUpdateStrategy) { this.basePrimitiveUpdateStrategy = basePrimitiveUpdateStrategy; this.shapeUpdateStrategy = shapeUpdateStrategy; this.divisionPropsUpdateStrategy = divisionPropsUpdateStrategy; } public EllipsePrimitiveUpdateStrategy() : this( new BaseUpdateStrategy(), new ShapeUpdateStrategy(), new DivisionPropsUpdateStrategy()) { } public void Update(IEllipsePrimitive targetObject, IEllipsePrimitive sourceObject) { CheckObject.IsNull(sourceObject, "source object"); CheckObject.IsNull(targetObject, "target object"); if (ReferenceEquals(targetObject, sourceObject)) { return; } basePrimitiveUpdateStrategy.Update(targetObject, sourceObject); divisionPropsUpdateStrategy.Update(targetObject.DivisionSize, sourceObject.DivisionSize); shapeUpdateStrategy.Update(targetObject.Shape, sourceObject.Shape); } } }