Add value diagram calculator saving

This commit is contained in:
Evgeny Redikultsev
2025-11-16 13:56:09 +05:00
parent 43f46b83af
commit f7e60e0bb3
30 changed files with 786 additions and 80 deletions

View File

@@ -0,0 +1,30 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
using System;
using System.Collections.Generic;
using System.Text;
namespace DataAccess.DTOs
{
public class ValueDiagramCalcualtorFromDTOConvertStrategy : ConvertStrategy<ValueDiagramCalculator, ValueDiagramCalculatorDTO>
{
private IUpdateStrategy<IValueDiagramCalculator> updateStrategy;
private IConvertStrategy<ValueDiagramCalculatorInputData, ValueDiagramCalculatorInputDataDTO> inputDataConvertStrategy;
public override ValueDiagramCalculator GetNewItem(ValueDiagramCalculatorDTO source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
NewItem.InputData = inputDataConvertStrategy.Convert(source.InputData as ValueDiagramCalculatorInputDataDTO);
return NewItem;
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramCalculatorUpdateStrategy() { UpdateChildren = false };
inputDataConvertStrategy ??= new ValueDiagramCalculatorInputDataFromDTOConvertStrategy(this);
}
}
}

View File

@@ -0,0 +1,68 @@
using DataAccess.DTOs.Converters;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Calculators;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
using StructureHelperLogics.NdmCalculations.Primitives;
namespace DataAccess.DTOs
{
public class ValueDiagramCalculatorInputDataFromDTOConvertStrategy : ConvertStrategy<ValueDiagramCalculatorInputData, ValueDiagramCalculatorInputDataDTO>
{
private IUpdateStrategy<IValueDiagramCalculatorInputData> updateStrategy;
private IConvertStrategy<ValueDiagramEntity, ValueDiagramEntityDTO> diagramConvertStrategy;
private IHasPrimitivesProcessLogic primitivesProcessLogic;
private IHasForceActionsProcessLogic actionsProcessLogic;
private IConvertStrategy<Accuracy, AccuracyDTO> accuracyConvertStrategy;
public ValueDiagramCalculatorInputDataFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy)
{
}
public override ValueDiagramCalculatorInputData GetNewItem(ValueDiagramCalculatorInputDataDTO source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
ProcessPrimitives(source);
ProcessActions(source);
NewItem.Digrams.Clear();
foreach (var diagram in source.Digrams)
{
if (diagram is not ValueDiagramEntityDTO diagramDTO)
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(diagram));
}
NewItem.Digrams.Add(diagramConvertStrategy.Convert(diagramDTO));
}
return NewItem;
}
private void ProcessPrimitives(IHasPrimitives source)
{
primitivesProcessLogic.Source = source;
primitivesProcessLogic.Target = NewItem;
primitivesProcessLogic.ReferenceDictionary = ReferenceDictionary;
primitivesProcessLogic.TraceLogger = TraceLogger;
primitivesProcessLogic.Process();
}
private void ProcessActions(IHasForceActions source)
{
actionsProcessLogic.Source = source;
actionsProcessLogic.Target = NewItem;
actionsProcessLogic.ReferenceDictionary = ReferenceDictionary;
actionsProcessLogic.TraceLogger = TraceLogger;
actionsProcessLogic.Process();
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramCalculatorInputDataUpdateStrategy() { UpdateChildren = false };
diagramConvertStrategy ??= new ValueDiagramEntityFromDTOConvertStrategy(this);
primitivesProcessLogic ??= new HasPrimitivesProcessLogic(ConvertDirection.FromDTO) { ReferenceDictionary = ReferenceDictionary, TraceLogger = TraceLogger };
actionsProcessLogic ??= new HasForceActionsProcessLogic(ConvertDirection.FromDTO) { ReferenceDictionary = ReferenceDictionary, TraceLogger = TraceLogger };
accuracyConvertStrategy ??= new AccuracyFromDTOConvertStrategy() { ReferenceDictionary = ReferenceDictionary, TraceLogger = TraceLogger };
}
}
}

View File

@@ -0,0 +1,64 @@
using DataAccess.DTOs.Converters;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
using StructureHelperLogics.NdmCalculations.Primitives;
namespace DataAccess.DTOs
{
public class ValueDiagramCalculatorInputDataToDTOConvertStrategy : ConvertStrategy<ValueDiagramCalculatorInputDataDTO, IValueDiagramCalculatorInputData>
{
private IUpdateStrategy<IValueDiagramCalculatorInputData> updateStrategy;
private IConvertStrategy<ValueDiagramEntityDTO, IValueDiagramEntity> diagramConvertStrategy;
private IHasPrimitivesProcessLogic primitivesProcessLogic;
private IHasForceActionsProcessLogic actionsProcessLogic;
public ValueDiagramCalculatorInputDataToDTOConvertStrategy() : base()
{
}
public ValueDiagramCalculatorInputDataToDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy)
{
}
public override ValueDiagramCalculatorInputDataDTO GetNewItem(IValueDiagramCalculatorInputData source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
ProcessPrimitives(source);
ProcessActions(source);
NewItem.Digrams.Clear();
foreach (var diagram in source.Digrams)
{
NewItem.Digrams.Add(diagramConvertStrategy.Convert(diagram));
}
return NewItem;
}
private void ProcessPrimitives(IHasPrimitives source)
{
primitivesProcessLogic.Source = source;
primitivesProcessLogic.Target = NewItem;
primitivesProcessLogic.ReferenceDictionary = ReferenceDictionary;
primitivesProcessLogic.TraceLogger = TraceLogger;
primitivesProcessLogic.Process();
}
private void ProcessActions(IHasForceActions source)
{
actionsProcessLogic.Source = source;
actionsProcessLogic.Target = NewItem;
actionsProcessLogic.ReferenceDictionary = ReferenceDictionary;
actionsProcessLogic.TraceLogger = TraceLogger;
actionsProcessLogic.Process();
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramCalculatorInputDataUpdateStrategy() { UpdateChildren = false};
diagramConvertStrategy ??= new ValueDiagramEntityToDTOConvertStrategy(this);
primitivesProcessLogic ??= new HasPrimitivesProcessLogic(ConvertDirection.ToDTO) { ReferenceDictionary = ReferenceDictionary, TraceLogger = TraceLogger };
actionsProcessLogic ??= new HasForceActionsProcessLogic(ConvertDirection.ToDTO) { ReferenceDictionary = ReferenceDictionary, TraceLogger = TraceLogger };
}
}
}

View File

@@ -0,0 +1,31 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
namespace DataAccess.DTOs
{
internal class ValueDiagramCalculatorToDTOConvertStrategy : ConvertStrategy<ValueDiagramCalculatorDTO, IValueDiagramCalculator>
{
private IUpdateStrategy<IValueDiagramCalculator> updateStrategy;
private IConvertStrategy<ValueDiagramCalculatorInputDataDTO, IValueDiagramCalculatorInputData> inputDataConvertStrategy;
public override ValueDiagramCalculatorDTO GetNewItem(IValueDiagramCalculator source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
NewItem.InputData = inputDataConvertStrategy.Convert(source.InputData);
return NewItem;
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramCalculatorUpdateStrategy()
{
UpdateChildren = false
};
inputDataConvertStrategy ??= new DictionaryConvertStrategy<ValueDiagramCalculatorInputDataDTO, IValueDiagramCalculatorInputData>(
this,
new ValueDiagramCalculatorInputDataToDTOConvertStrategy(this));
}
}
}

View File

@@ -0,0 +1,36 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
namespace DataAccess.DTOs
{
public class ValueDiagramEntityFromDTOConvertStrategy : ConvertStrategy<ValueDiagramEntity, ValueDiagramEntityDTO>
{
private IUpdateStrategy<IValueDiagramEntity> updateStrategy;
private IConvertStrategy<ValueDiagram, ValueDiagramDTO> diagramConvertStrategy;
public ValueDiagramEntityFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy)
{
}
public override ValueDiagramEntity GetNewItem(ValueDiagramEntityDTO source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
if (source.ValueDigram is not ValueDiagramDTO diagramDTO)
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(source.ValueDigram));
}
NewItem.ValueDigram = diagramConvertStrategy.Convert(diagramDTO);
return NewItem;
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramEntityUpdateStrategy() { UpdateChildren = false};
diagramConvertStrategy ??= new ValueDiagramFromDTOConvertStrategy(this);
}
}
}

View File

@@ -0,0 +1,31 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
namespace DataAccess.DTOs
{
public class ValueDiagramEntityToDTOConvertStrategy : ConvertStrategy<ValueDiagramEntityDTO, IValueDiagramEntity>
{
private IUpdateStrategy<IValueDiagramEntity> updateStrategy;
private IConvertStrategy<ValueDiagramDTO, IValueDiagram> diagramConvertStrategy;
public ValueDiagramEntityToDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy)
{
}
public override ValueDiagramEntityDTO GetNewItem(IValueDiagramEntity source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
NewItem.ValueDigram = diagramConvertStrategy.Convert(source.ValueDigram);
return NewItem;
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramEntityUpdateStrategy() { UpdateChildren = false };
diagramConvertStrategy ??= new ValueDiagramToDTOConvertStrategy(this);
}
}
}

View File

@@ -0,0 +1,37 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
namespace DataAccess.DTOs
{
public class ValueDiagramFromDTOConvertStrategy : ConvertStrategy<ValueDiagram, ValueDiagramDTO>
{
private IUpdateStrategy<IValueDiagram> updateStrategy;
private IConvertStrategy<Point2DRange, Point2DRangeDTO> pointConvertStrategy;
public ValueDiagramFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy)
{
}
public override ValueDiagram GetNewItem(ValueDiagramDTO source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
if (source.Point2DRange is not Point2DRangeDTO point2DRangeDTO)
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(source.Point2DRange));
}
NewItem.Point2DRange = pointConvertStrategy.Convert(point2DRangeDTO);
return NewItem;
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramUpdateStrategy() { UpdateChildren = false };
pointConvertStrategy ??= new Point2DRangeFromDTOConvertStrategy(this);
}
}
}

View File

@@ -0,0 +1,32 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams;
namespace DataAccess.DTOs
{
public class ValueDiagramToDTOConvertStrategy : ConvertStrategy<ValueDiagramDTO, IValueDiagram>
{
private IUpdateStrategy<IValueDiagram> updateStrategy;
private IConvertStrategy<Point2DRangeDTO, IPoint2DRange> pointConvertStrategy;
public ValueDiagramToDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy)
{
}
public override ValueDiagramDTO GetNewItem(IValueDiagram source)
{
ChildClass = this;
NewItem = new(source.Id);
InitializeStrategies();
updateStrategy.Update(NewItem, source);
NewItem.Point2DRange = pointConvertStrategy.Convert(source.Point2DRange);
return NewItem;
}
private void InitializeStrategies()
{
updateStrategy ??= new ValueDiagramUpdateStrategy() { UpdateChildren = false };
pointConvertStrategy ??= new Point2DRangeToDTOConvertStrategy(this);
}
}
}