Fix repository clone strategy

This commit is contained in:
Evgeny Redikultsev
2025-06-16 21:46:33 +05:00
parent 87996cf37b
commit 22bd35da98
14 changed files with 266 additions and 18 deletions

View File

@@ -0,0 +1,33 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Services;
namespace StructureHelperLogics.Models.BeamShears
{
internal class BeamShearCalculatorCloneStrategy : ICloneStrategy<IBeamShearCalculator>
{
private readonly ICloningStrategy cloningStrategy;
private IUpdateStrategy<IBeamShearCalculator> updateStrategy;
private ICloneStrategy<IBeamShearCalculatorInputData> inputDataCloningStrategy;
public BeamShearCalculatorCloneStrategy(ICloningStrategy cloningStrategy)
{
this.cloningStrategy = cloningStrategy;
}
public IBeamShearCalculator GetClone(IBeamShearCalculator sourceObject)
{
CheckObject.IsNull(cloningStrategy);
CheckObject.IsNull(sourceObject);
InitializeStrategies();
BeamShearCalculator calculator = new(Guid.NewGuid());
updateStrategy.Update(calculator, sourceObject);
calculator.InputData = inputDataCloningStrategy.GetClone(sourceObject.InputData);
return calculator;
}
private void InitializeStrategies()
{
updateStrategy ??= new BeamShearCalculatorUpdateStrategy();
inputDataCloningStrategy ??= new BeamShearCalculatorInputDataCloneStrategy(cloningStrategy);
}
}
}