diff --git a/DataAccess/DTOs/Converters/AnalysisFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/AnalysisFromDTOConvertStrategy.cs index 271c0a0..78af7a2 100644 --- a/DataAccess/DTOs/Converters/AnalysisFromDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/AnalysisFromDTOConvertStrategy.cs @@ -1,47 +1,32 @@ -using StructureHelperCommon.Infrastructures.Exceptions; +using DataAccess.DTOs.Converters; +using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models; using StructureHelperCommon.Models.Analyses; using StructureHelperCommon.Models.Loggers; using StructureHelperLogic.Models.Analyses; -using StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using StructureHelperLogics.Models.Analyses; -namespace DataAccess.DTOs.Converters +namespace DataAccess.DTOs { - public class AnalysisFromDTOConvertStrategy : IConvertStrategy + public class AnalysisFromDTOConvertStrategy : ConvertStrategy { private const string AnalysisIs = "Analysis type is"; - private IConvertStrategy convertCrossSectionNdmAnalysisStrategy; private IConvertStrategy versionProcessorConvertStrategy; - public AnalysisFromDTOConvertStrategy(IConvertStrategy convertCrossSectionNdmAnalysisStrategy, - IConvertStrategy versionProcessorConvertStrategy) + public AnalysisFromDTOConvertStrategy() { - this.convertCrossSectionNdmAnalysisStrategy = convertCrossSectionNdmAnalysisStrategy; - this.versionProcessorConvertStrategy = versionProcessorConvertStrategy; } - public AnalysisFromDTOConvertStrategy() : this (new CrossSectionNdmAnalysisFromDTOConvertStrategy(), - new VersionProcessorFromDTOConvertStrategy()) + public AnalysisFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy) { - } - public Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; set; } - public IShiftTraceLogger TraceLogger { get; set; } - - public IAnalysis Convert(IAnalysis source) + public override IAnalysis GetNewItem(IAnalysis source) { try { - Check(); IAnalysis analysis = GetAnalysis(source); return analysis; } @@ -51,29 +36,51 @@ namespace DataAccess.DTOs.Converters TraceLogger?.AddMessage(ex.Message, TraceLogStatuses.Error); throw; } - } private IAnalysis GetAnalysis(IAnalysis source) { - IAnalysis newItem; if (source is ICrossSectionNdmAnalysis crossSectionNdmAnalysis) { - newItem = GetCrossSectionNdmAnalysis(crossSectionNdmAnalysis); + GetCrossSectionNdmAnalysis(crossSectionNdmAnalysis); + } + else if (source is IBeamShearAnalysis beamShearAnalysis) + { + GetBeamShearAnalysis(beamShearAnalysis); } else { string errorString = ErrorStrings.ObjectTypeIsUnknownObj(source); - TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error); throw new StructureHelperException(errorString); } - newItem.VersionProcessor = GetVersionProcessor(source.VersionProcessor); - return newItem; + NewItem.VersionProcessor = GetVersionProcessor(source.VersionProcessor); + return NewItem; } + private void GetBeamShearAnalysis(IBeamShearAnalysis beamShearAnalysis) + { + TraceLogger?.AddMessage(AnalysisIs + " beam shear Analysis", TraceLogStatuses.Debug); + TraceLogger?.AddMessage("Beam shear analysis converting has been started", TraceLogStatuses.Debug); + var convertStrategy = new DictionaryConvertStrategy + (this, new BeamShearAnalysisFromDTOConvertStrategy(this)); + NewItem = convertStrategy.Convert(beamShearAnalysis); + TraceLogger?.AddMessage("Beam shear analysis converting has been finished succesfully", TraceLogStatuses.Debug); + } + + + private void GetCrossSectionNdmAnalysis(ICrossSectionNdmAnalysis source) + { + TraceLogger?.AddMessage(AnalysisIs + " Cross-Section Ndm Analysis", TraceLogStatuses.Debug); + TraceLogger?.AddMessage("Cross-Section Ndm Analysis converting has been started", TraceLogStatuses.Debug); + var convertStrategy = new DictionaryConvertStrategy + (this, new CrossSectionNdmAnalysisFromDTOConvertStrategy(this)); + NewItem = convertStrategy.Convert(source); + TraceLogger?.AddMessage("Cross-Section Ndm Analysis converting has been finished successfully", TraceLogStatuses.Debug); + } private IVersionProcessor GetVersionProcessor(IVersionProcessor source) { TraceLogger?.AddMessage("Version processor converting is started", TraceLogStatuses.Service); + versionProcessorConvertStrategy ??= new VersionProcessorFromDTOConvertStrategy(); versionProcessorConvertStrategy.ReferenceDictionary = ReferenceDictionary; versionProcessorConvertStrategy.TraceLogger = TraceLogger; IVersionProcessor versionProcessor = versionProcessorConvertStrategy.Convert(source); @@ -81,22 +88,5 @@ namespace DataAccess.DTOs.Converters return versionProcessor; } - private ICrossSectionNdmAnalysis GetCrossSectionNdmAnalysis(ICrossSectionNdmAnalysis source) - { - TraceLogger?.AddMessage(AnalysisIs + " Cross-Section Ndm Analysis", TraceLogStatuses.Service); - TraceLogger?.AddMessage("Cross-Section Ndm Analysis converting is started", TraceLogStatuses.Service); - convertCrossSectionNdmAnalysisStrategy.ReferenceDictionary = ReferenceDictionary; - convertCrossSectionNdmAnalysisStrategy.TraceLogger = TraceLogger; - var convertLogic = new DictionaryConvertStrategy(this, convertCrossSectionNdmAnalysisStrategy); - ICrossSectionNdmAnalysis crossSectionNdmAnalysis = convertLogic.Convert(source); - TraceLogger?.AddMessage("Cross-Section Ndm Analysis converting has been finished successfully", TraceLogStatuses.Service); - return crossSectionNdmAnalysis; - } - - private void Check() - { - var checkLogic = new CheckConvertLogic(this); - checkLogic.Check(); - } } } diff --git a/DataAccess/DTOs/Converters/BeamShears/BeamShearAnalysisFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/BeamShears/BeamShearAnalysisFromDTOConvertStrategy.cs new file mode 100644 index 0000000..6d83029 --- /dev/null +++ b/DataAccess/DTOs/Converters/BeamShears/BeamShearAnalysisFromDTOConvertStrategy.cs @@ -0,0 +1,29 @@ +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperLogics.Models.Analyses; + +namespace DataAccess.DTOs +{ + public class BeamShearAnalysisFromDTOConvertStrategy : ConvertStrategy + { + private IUpdateStrategy updateStrategy; + + public BeamShearAnalysisFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy) + { + } + + public override IBeamShearAnalysis GetNewItem(IBeamShearAnalysis source) + { + ChildClass = this; + GetAnalysis(source); + return NewItem; + } + + private void GetAnalysis(IBeamShearAnalysis source) + { + updateStrategy ??= new BeamShearAnalysisUpdateStrategy(); + BeamShearAnalysis beamShearAnalysis = new(source.Id); + updateStrategy.Update(beamShearAnalysis, source); + NewItem = beamShearAnalysis; + } + } +} diff --git a/DataAccess/DTOs/Converters/DateVersionFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/DateVersionFromDTOConvertStrategy.cs index 1db2fc4..4366dbb 100644 --- a/DataAccess/DTOs/Converters/DateVersionFromDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/DateVersionFromDTOConvertStrategy.cs @@ -10,62 +10,34 @@ using System.Threading.Tasks; namespace DataAccess.DTOs { - public class DateVersionFromDTOConvertStrategy : IConvertStrategy + public class DateVersionFromDTOConvertStrategy : ConvertStrategy { private IUpdateStrategy updateStrategy; private IConvertStrategy convertStrategy; - private DictionaryConvertStrategy convertLogic; + private IConvertStrategy convertLogic; - public DateVersionFromDTOConvertStrategy(IUpdateStrategy updateStrategy, - IConvertStrategy convertStrategy) + public override IDateVersion GetNewItem(IDateVersion source) { - this.updateStrategy = updateStrategy; - this.convertStrategy = convertStrategy; - } - - public DateVersionFromDTOConvertStrategy() : this ( - new DateVersionUpdateStrategy(), - new VersionItemFromDTOConvertStrategy()) - { - - } - - - public Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; set; } - public IShiftTraceLogger TraceLogger { get; set; } - - public IDateVersion Convert(IDateVersion source) - { - try - { - Check(); - return GetDateVersion(source); - } - catch (Exception ex) - { - TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Error); - TraceLogger?.AddMessage(ex.Message, TraceLogStatuses.Error); - throw; - } + ChildClass = this; + return GetDateVersion(source); } private DateVersion GetDateVersion(IDateVersion source) { TraceLogger?.AddMessage("Date version converting is started", TraceLogStatuses.Service); + InitializeStrategies(); DateVersion newItem = new(source.Id); updateStrategy.Update(newItem, source); - convertStrategy.ReferenceDictionary = ReferenceDictionary; - convertStrategy.TraceLogger = TraceLogger; - convertLogic = new DictionaryConvertStrategy(this, convertStrategy); newItem.AnalysisVersion = convertLogic.Convert(source.AnalysisVersion); TraceLogger?.AddMessage($"Date version date = {newItem.DateTime} converting has been finished", TraceLogStatuses.Service); return newItem; } - private void Check() + private void InitializeStrategies() { - var checkLogic = new CheckConvertLogic(this); - checkLogic.Check(); + updateStrategy ??= new DateVersionUpdateStrategy(); + convertLogic = new DictionaryConvertStrategy + (this, new VersionItemFromDTOConvertStrategy(this)); } } } diff --git a/DataAccess/DTOs/Converters/FRMaterialFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/Materials/FRMaterialFromDTOConvertStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/FRMaterialFromDTOConvertStrategy.cs rename to DataAccess/DTOs/Converters/Materials/FRMaterialFromDTOConvertStrategy.cs diff --git a/DataAccess/DTOs/Converters/FRMaterialToDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/Materials/FRMaterialToDTOConvertStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/FRMaterialToDTOConvertStrategy.cs rename to DataAccess/DTOs/Converters/Materials/FRMaterialToDTOConvertStrategy.cs diff --git a/DataAccess/DTOs/Converters/IMaterialSafetyFactorDTOLogic.cs b/DataAccess/DTOs/Converters/Materials/IMaterialSafetyFactorDTOLogic.cs similarity index 100% rename from DataAccess/DTOs/Converters/IMaterialSafetyFactorDTOLogic.cs rename to DataAccess/DTOs/Converters/Materials/IMaterialSafetyFactorDTOLogic.cs diff --git a/DataAccess/DTOs/Converters/LibMaterialDTOUpdateStrategy.cs b/DataAccess/DTOs/Converters/Materials/LibMaterialDTOUpdateStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/LibMaterialDTOUpdateStrategy.cs rename to DataAccess/DTOs/Converters/Materials/LibMaterialDTOUpdateStrategy.cs diff --git a/DataAccess/DTOs/Converters/LibMaterialToDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/Materials/LibMaterialToDTOConvertStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/LibMaterialToDTOConvertStrategy.cs rename to DataAccess/DTOs/Converters/Materials/LibMaterialToDTOConvertStrategy.cs diff --git a/DataAccess/DTOs/Converters/MaterialSafetyFactorsFromDTOLogic.cs b/DataAccess/DTOs/Converters/Materials/MaterialSafetyFactorsFromDTOLogic.cs similarity index 100% rename from DataAccess/DTOs/Converters/MaterialSafetyFactorsFromDTOLogic.cs rename to DataAccess/DTOs/Converters/Materials/MaterialSafetyFactorsFromDTOLogic.cs diff --git a/DataAccess/DTOs/Converters/NdmCrossSections/CrossSectionNdmAnalysisFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/NdmCrossSections/CrossSectionNdmAnalysisFromDTOConvertStrategy.cs index 7569767..ebaa21a 100644 --- a/DataAccess/DTOs/Converters/NdmCrossSections/CrossSectionNdmAnalysisFromDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/NdmCrossSections/CrossSectionNdmAnalysisFromDTOConvertStrategy.cs @@ -1,64 +1,34 @@ using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models; -using StructureHelperCommon.Models.Analyses; using StructureHelperCommon.Models.Loggers; using StructureHelperLogic.Models.Analyses; using StructureHelperLogics.Models.Analyses; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace DataAccess.DTOs.Converters { - public class CrossSectionNdmAnalysisFromDTOConvertStrategy : IConvertStrategy + public class CrossSectionNdmAnalysisFromDTOConvertStrategy : ConvertStrategy { private IUpdateStrategy updateStrategy; - public CrossSectionNdmAnalysisFromDTOConvertStrategy(IUpdateStrategy updateStrategy) + public CrossSectionNdmAnalysisFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy) { - this.updateStrategy = updateStrategy; } - public CrossSectionNdmAnalysisFromDTOConvertStrategy() : this(new CrossSectionNdmAnalysisUpdateStrategy()) + public override ICrossSectionNdmAnalysis GetNewItem(ICrossSectionNdmAnalysis source) { - + ChildClass = this; + GetAnalysis(source); + return NewItem; } - public Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; set; } - public IShiftTraceLogger TraceLogger { get; set; } - - public ICrossSectionNdmAnalysis Convert(ICrossSectionNdmAnalysis source) + private void GetAnalysis(ICrossSectionNdmAnalysis source) { - try - { - Check(); - ICrossSectionNdmAnalysis newItem = GetCrossSectionNDMAnalysis(source); - return newItem; - } - catch (Exception ex) - { - TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Error); - TraceLogger?.AddMessage(ex.Message, TraceLogStatuses.Error); - throw; - } - + TraceLogger?.AddMessage("Cross-section analysis converting has been started"); + updateStrategy ??= new CrossSectionNdmAnalysisUpdateStrategy(); + NewItem = new CrossSectionNdmAnalysis(source.Id); + updateStrategy.Update(NewItem, source); + TraceLogger?.AddMessage("Cross-section analysis has been finished successfully"); } - private ICrossSectionNdmAnalysis GetCrossSectionNDMAnalysis(ICrossSectionNdmAnalysis source) - { - TraceLogger?.AddMessage("Cross-section sonverting is started"); - CrossSectionNdmAnalysis newItem = new(source.Id); - updateStrategy.Update(newItem, source); - TraceLogger?.AddMessage("Cross-section analysis was obtained successfully"); - return newItem; - } - - private void Check() - { - var checkLogic = new CheckConvertLogic(this); - checkLogic.Check(); - } } } diff --git a/DataAccess/DTOs/Converters/HasPrimitivesFromDTOUpdateStrategy.cs b/DataAccess/DTOs/Converters/NdmCrossSections/HasPrimitivesFromDTOUpdateStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/HasPrimitivesFromDTOUpdateStrategy.cs rename to DataAccess/DTOs/Converters/NdmCrossSections/HasPrimitivesFromDTOUpdateStrategy.cs diff --git a/DataAccess/DTOs/Converters/HasPrimitivesProcessLogic.cs b/DataAccess/DTOs/Converters/NdmCrossSections/HasPrimitivesProcessLogic.cs similarity index 100% rename from DataAccess/DTOs/Converters/HasPrimitivesProcessLogic.cs rename to DataAccess/DTOs/Converters/NdmCrossSections/HasPrimitivesProcessLogic.cs diff --git a/DataAccess/DTOs/Converters/HasPrimitivesToDTOUpdateStrategy.cs b/DataAccess/DTOs/Converters/NdmCrossSections/HasPrimitivesToDTOUpdateStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/HasPrimitivesToDTOUpdateStrategy.cs rename to DataAccess/DTOs/Converters/NdmCrossSections/HasPrimitivesToDTOUpdateStrategy.cs diff --git a/DataAccess/DTOs/Converters/UserCrackInputDataFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/NdmCrossSections/UserCrackInputDataFromDTOConvertStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/UserCrackInputDataFromDTOConvertStrategy.cs rename to DataAccess/DTOs/Converters/NdmCrossSections/UserCrackInputDataFromDTOConvertStrategy.cs diff --git a/DataAccess/DTOs/Converters/UserCrackInputDataToDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/NdmCrossSections/UserCrackInputDataToDTOConvertStrategy.cs similarity index 100% rename from DataAccess/DTOs/Converters/UserCrackInputDataToDTOConvertStrategy.cs rename to DataAccess/DTOs/Converters/NdmCrossSections/UserCrackInputDataToDTOConvertStrategy.cs diff --git a/DataAccess/DTOs/Converters/ProjectFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/ProjectFromDTOConvertStrategy.cs index 0e48a2a..04e3c4e 100644 --- a/DataAccess/DTOs/Converters/ProjectFromDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/ProjectFromDTOConvertStrategy.cs @@ -36,7 +36,7 @@ namespace DataAccess.DTOs public override Project GetNewItem(ProjectDTO source) { - TraceLogger?.AddMessage("Converting of project is started"); + TraceLogger?.AddMessage("Converting of project has been started"); Project newItem = new(source.Id); List analyses = GetAnalyses(source, newItem); newItem.VisualAnalyses.Clear(); diff --git a/DataAccess/DTOs/Converters/ProjectToDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/ProjectToDTOConvertStrategy.cs index 7f8316b..756ebfb 100644 --- a/DataAccess/DTOs/Converters/ProjectToDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/ProjectToDTOConvertStrategy.cs @@ -7,7 +7,7 @@ namespace DataAccess.DTOs public class ProjectToDTOConvertStrategy : ConvertStrategy { private IUpdateStrategy updateStrategy; - private DictionaryConvertStrategy convertLogic; + private IConvertStrategy convertLogic; public ProjectToDTOConvertStrategy() @@ -17,7 +17,7 @@ namespace DataAccess.DTOs public ProjectToDTOConvertStrategy( IUpdateStrategy updateStrategy, - DictionaryConvertStrategy convertLogic) + IConvertStrategy convertLogic) { this.updateStrategy = updateStrategy; this.convertLogic = convertLogic; @@ -41,9 +41,7 @@ namespace DataAccess.DTOs { updateStrategy ??= new ProjectUpdateStrategy(); convertLogic ??= new DictionaryConvertStrategy - (this, - new VisualAnalysisToDTOConvertStrategy(ReferenceDictionary, TraceLogger) - ); + (this, new VisualAnalysisToDTOConvertStrategy(this)); } } } diff --git a/DataAccess/DTOs/Converters/VersionItemFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/VersionItemFromDTOConvertStrategy.cs index 995fd2e..8341584 100644 --- a/DataAccess/DTOs/Converters/VersionItemFromDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/VersionItemFromDTOConvertStrategy.cs @@ -1,42 +1,24 @@ using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models; -using StructureHelperCommon.Models.Loggers; +using StructureHelperLogics.Models.BeamShears; using StructureHelperLogics.Models.CrossSections; namespace DataAccess.DTOs { - public class VersionItemFromDTOConvertStrategy : IConvertStrategy + public class VersionItemFromDTOConvertStrategy : ConvertStrategy { private const string AnalysisIs = "Analysis type is"; private IConvertStrategy crossSectionConvertStrategy; - public VersionItemFromDTOConvertStrategy(IConvertStrategy crossSectionConvertStrategy) + public VersionItemFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy) { - this.crossSectionConvertStrategy = crossSectionConvertStrategy; } - public VersionItemFromDTOConvertStrategy() : this (new CrossSectionFromDTOConvertStrategy()) + public override ISaveable GetNewItem(ISaveable source) { - - } - - public Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; set; } - public IShiftTraceLogger TraceLogger { get; set; } - - public ISaveable Convert(ISaveable source) - { - try - { - Check(); - return GetNewAnalysis(source); - } - catch (Exception ex) - { - TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Error); - TraceLogger?.AddMessage(ex.Message, TraceLogStatuses.Error); - throw; - } + ChildClass = this; + return GetNewAnalysis(source); } private ISaveable GetNewAnalysis(ISaveable source) @@ -46,6 +28,10 @@ namespace DataAccess.DTOs { newItem = ProcessCrossSection(crossSection); } + else if (source is IBeamShear beamShear) + { + newItem = ProcessBeamShear(beamShear); + } else { string errorString = ErrorStrings.ObjectTypeIsUnknownObj(source); @@ -56,10 +42,16 @@ namespace DataAccess.DTOs return newItem; } + private ISaveable ProcessBeamShear(IBeamShear beamShear) + { + throw new NotImplementedException(); + } + private ICrossSection ProcessCrossSection(ICrossSection source) { TraceLogger?.AddMessage(AnalysisIs + " Cross-Section", TraceLogStatuses.Service); TraceLogger?.AddMessage("Cross-Section converting is started", TraceLogStatuses.Service); + crossSectionConvertStrategy ??= new CrossSectionFromDTOConvertStrategy(); crossSectionConvertStrategy.ReferenceDictionary = ReferenceDictionary; crossSectionConvertStrategy.TraceLogger = TraceLogger; var convertLogic = new DictionaryConvertStrategy(this, crossSectionConvertStrategy); @@ -67,11 +59,5 @@ namespace DataAccess.DTOs TraceLogger?.AddMessage("Cross-Section converting has been finished successfully", TraceLogStatuses.Service); return newItem; } - - private void Check() - { - var checkLogic = new CheckConvertLogic(this); - checkLogic.Check(); - } } } diff --git a/DataAccess/DTOs/Converters/VersionProcessorFromDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/VersionProcessorFromDTOConvertStrategy.cs index 6344dce..1f1bea1 100644 --- a/DataAccess/DTOs/Converters/VersionProcessorFromDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/VersionProcessorFromDTOConvertStrategy.cs @@ -10,45 +10,20 @@ using System.Threading.Tasks; namespace DataAccess.DTOs { - public class VersionProcessorFromDTOConvertStrategy : IConvertStrategy + public class VersionProcessorFromDTOConvertStrategy : ConvertStrategy { private IConvertStrategy dateVersionConvertStrategy; - private ICheckConvertLogic checkLogic; - public VersionProcessorFromDTOConvertStrategy( - IConvertStrategy dateVersionConvertStrategy) + public override IVersionProcessor GetNewItem(IVersionProcessor source) { - this.dateVersionConvertStrategy = dateVersionConvertStrategy; - this.checkLogic = checkLogic; - } - - public VersionProcessorFromDTOConvertStrategy() : this(new DateVersionFromDTOConvertStrategy()) - { - - } - - public Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; set; } - public IShiftTraceLogger TraceLogger { get; set; } - - public IVersionProcessor Convert(IVersionProcessor source) - { - try - { - Check(); - IVersionProcessor versionProcessor = GetVersionProcessor(source); - return versionProcessor; - } - catch (Exception ex) - { - TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Error); - TraceLogger?.AddMessage(ex.Message, TraceLogStatuses.Error); - throw; - } + ChildClass = this; + return GetVersionProcessor(source); } private IVersionProcessor GetVersionProcessor(IVersionProcessor source) { TraceLogger?.AddMessage("Version processor converting is started", TraceLogStatuses.Debug); + dateVersionConvertStrategy ??= new DateVersionFromDTOConvertStrategy(); IVersionProcessor newItem = new VersionProcessor(source.Id); TraceLogger?.AddMessage($"Source version processor has {source.Versions.Count} version(s)", TraceLogStatuses.Service); dateVersionConvertStrategy.ReferenceDictionary = ReferenceDictionary; @@ -62,11 +37,5 @@ namespace DataAccess.DTOs TraceLogger?.AddMessage("Version processor has been converted successfully", TraceLogStatuses.Service); return newItem; } - - private void Check() - { - var checkLogic = new CheckConvertLogic(this); - checkLogic.Check(); - } } } diff --git a/DataAccess/DTOs/Converters/VisualAnalysisToDTOConvertStrategy.cs b/DataAccess/DTOs/Converters/VisualAnalysisToDTOConvertStrategy.cs index c3c0a5c..f9345ed 100644 --- a/DataAccess/DTOs/Converters/VisualAnalysisToDTOConvertStrategy.cs +++ b/DataAccess/DTOs/Converters/VisualAnalysisToDTOConvertStrategy.cs @@ -28,6 +28,10 @@ namespace DataAccess.DTOs { } + public VisualAnalysisToDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy) + { + } + private VisualAnalysisDTO GetNewAnalysis(IVisualAnalysis source) { InitializeStrategies(); diff --git a/DataAccess/DTOs/DTOEntities/ProjectDTO.cs b/DataAccess/DTOs/DTOEntities/ProjectDTO.cs index 5647ba4..b16782a 100644 --- a/DataAccess/DTOs/DTOEntities/ProjectDTO.cs +++ b/DataAccess/DTOs/DTOEntities/ProjectDTO.cs @@ -13,7 +13,7 @@ namespace DataAccess.DTOs public class ProjectDTO : IProject { [JsonProperty("Id")] - public Guid Id { get;} + public Guid Id { get; set; } [JsonIgnore] public string FullFileName { get; set; } [JsonIgnore] @@ -27,5 +27,10 @@ namespace DataAccess.DTOs { Id = id; } + + public ProjectDTO() : this(Guid.NewGuid()) + { + + } } } diff --git a/DataAccess/DTOs/DTOEntities/RootObjectDTO.cs b/DataAccess/DTOs/DTOEntities/RootObjectDTO.cs index 3a4ef8f..23d442e 100644 --- a/DataAccess/DTOs/DTOEntities/RootObjectDTO.cs +++ b/DataAccess/DTOs/DTOEntities/RootObjectDTO.cs @@ -1,10 +1,4 @@ using Newtonsoft.Json; -using StructureHelperCommon.Models.Projects; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace DataAccess.DTOs { diff --git a/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs b/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs index 76cceb9..0d52338 100644 --- a/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs +++ b/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs @@ -11,12 +11,8 @@ using StructureHelperLogics.Models.Analyses; using StructureHelperLogics.Models.BeamShears; using StructureHelperLogics.Models.CrossSections; using System; -using System.Collections.Generic; using System.Collections.ObjectModel; -using System.ComponentModel; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace StructureHelper.Windows.MainWindow diff --git a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs index ba5a6d6..6820da6 100644 --- a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs +++ b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs @@ -1,5 +1,4 @@ -using LoaderCalculator; -using StructureHelper.Infrastructure; +using StructureHelper.Infrastructure; using StructureHelper.Infrastructure.Enums; using StructureHelper.Windows.CalculationWindows.CalculatorsViews; using StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews; @@ -14,7 +13,6 @@ using StructureHelperLogics.Models.CrossSections; using StructureHelperLogics.NdmCalculations.Analyses.ByForces; using StructureHelperLogics.NdmCalculations.Analyses.Logics; using StructureHelperLogics.NdmCalculations.Cracking; -using System; using System.Windows; using System.Windows.Forms; using MessageBox = System.Windows.Forms.MessageBox; @@ -210,7 +208,10 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections ProcessResult(); } } - TraceDocumentService.ShowDocument(SelectedItem.TraceLogger.TraceLoggerEntries); + if (SelectedItem.ShowTraceData == true) + { + TraceDocumentService.ShowDocument(SelectedItem.TraceLogger.TraceLoggerEntries); + } } private void ShowInteractionDiagramByInputData(LimitCurvesCalculator calculator) diff --git a/StructureHelperCommon/Infrastructures/Interfaces/ConvertStrategy.cs b/StructureHelperCommon/Infrastructures/Interfaces/ConvertStrategy.cs index e3b7f79..fc74032 100644 --- a/StructureHelperCommon/Infrastructures/Interfaces/ConvertStrategy.cs +++ b/StructureHelperCommon/Infrastructures/Interfaces/ConvertStrategy.cs @@ -1,4 +1,5 @@ -using StructureHelperCommon.Models; +using StructureHelperCommon.Infrastructures.Exceptions; +using StructureHelperCommon.Models; using StructureHelperCommon.Models.Loggers; using System; using System.Collections.Generic; @@ -40,6 +41,7 @@ namespace StructureHelperCommon.Infrastructures.Interfaces public IShiftTraceLogger TraceLogger { get; set; } public T NewItem { get; set; } + public ConvertStrategy ChildClass { get; set; } public virtual T Convert(V source) { @@ -48,12 +50,18 @@ namespace StructureHelperCommon.Infrastructures.Interfaces Check(); TraceStartOfConverting(source); T target = GetNewItem(source); + if (target is null) + { + string errorString = ErrorStrings.ParameterIsNull + ": result of converting"; + TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error); + throw new StructureHelperException(errorString); + } TraceFinishOfConverting(target); return target; } catch (Exception ex) { - TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Error); + TraceLogger?.AddMessage(LoggerStrings.LogicType(ChildClass ?? this), TraceLogStatuses.Error); TraceLogger?.AddMessage(ex.Message, TraceLogStatuses.Error); throw; } @@ -76,7 +84,7 @@ namespace StructureHelperCommon.Infrastructures.Interfaces } private void TraceFinishOfConverting(ISaveable saveable) { - TraceLogger?.AddMessage($"Converting {saveable.GetType()} Id = {saveable.Id} has been started"); + TraceLogger?.AddMessage($"Converting {saveable.GetType()} Id = {saveable.Id} has been finished"); } } } diff --git a/StructureHelperTests/UnitTests/BeamShearTests/GetDirectShearForceLogicTests.cs b/StructureHelperTests/UnitTests/BeamShearTests/GetDirectShearForceLogicTests.cs deleted file mode 100644 index 3e6f1b7..0000000 --- a/StructureHelperTests/UnitTests/BeamShearTests/GetDirectShearForceLogicTests.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Moq; -using NUnit.Framework; -using StructureHelperCommon.Models.Forces; -using StructureHelperCommon.Models; -using StructureHelperLogics.Models.BeamShears.Logics; -using StructureHelperLogics.Models.BeamShears; -using StructureHelperCommon.Infrastructures.Enums; - -namespace StructureHelperTests.UnitTests.BeamShearTests -{ - - - namespace YourNamespace.Tests - { - [TestFixture] - public class GetDirectShearForceLogicTests - { - private Mock _mockLogger; - private Mock _mockSummaryForceLogic; - private GetDirectShearForceLogic _logic; - - [SetUp] - public void Setup() - { - _mockLogger = new Mock(); - _mockSummaryForceLogic = new Mock(); - var mockAction = new Mock(); - var mockInclinedSection = new Mock(); - var mockShearLoad = new Mock(); - - mockAction.Setup(a => a.SupportAction.SupportForce.ForceTuple.Qx).Returns(100.0); - mockAction.Setup(a => a.SupportAction.ShearLoads).Returns(new List { mockShearLoad.Object }); - - mockInclinedSection.Setup(i => i.StartCoord).Returns(2.0); - mockInclinedSection.Setup(i => i.EndCoord).Returns(5.0); - - _mockSummaryForceLogic.Setup(s => s.GetSumShearForce(mockShearLoad.Object, 2.0, 5.0)).Returns(new ForceTuple() { Qy = 50.0}); - _logic = new GetDirectShearForceLogic(mockAction.Object, mockInclinedSection.Object, LimitStates.ULS, CalcTerms.ShortTerm, _mockLogger.Object, _mockSummaryForceLogic.Object); - } - - [Test] - public void GetShearForce_ShouldReturnCorrectShearForce() - { - // Arrange - - // Act - double result = _logic.CalculateShearForceTuple().Qy; - - // Assert - Assert.That(result, Is.EqualTo(150.0)); - _mockLogger.Verify(l => l.AddMessage(It.IsAny(), It.IsAny()), Times.AtLeastOnce); - } - } - } - -} diff --git a/StructureHelperTests/UnitTests/BeamShearTests/SumConcentratedForceLogicTests.cs b/StructureHelperTests/UnitTests/BeamShearTests/SumConcentratedForceLogicTests.cs index 89cd4b9..a1060da 100644 --- a/StructureHelperTests/UnitTests/BeamShearTests/SumConcentratedForceLogicTests.cs +++ b/StructureHelperTests/UnitTests/BeamShearTests/SumConcentratedForceLogicTests.cs @@ -4,6 +4,7 @@ using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Models.Forces; using StructureHelperCommon.Models; using StructureHelperLogics.Models.BeamShears; +using StructureHelperCommon.Infrastructures.Enums; namespace StructureHelperTests.UnitTests.BeamShearTests { @@ -12,25 +13,33 @@ namespace StructureHelperTests.UnitTests.BeamShearTests { private Mock _mockLogger; private Mock _mockCoordinateByLevelLogic; + private Mock _mockCombination; private SumConcentratedForceLogic _logic; + [SetUp] public void Setup() { _mockLogger = new Mock(); _mockCoordinateByLevelLogic = new Mock(); + _mockCombination = new Mock(); _logic = new SumConcentratedForceLogic(_mockCoordinateByLevelLogic.Object, _mockLogger.Object); } [Test] public void GetSumShearForce_ShouldReturnCorrectForce_ForValidConcentratedForce() { - // Arrange + // Arrange + _mockCombination.Setup(f => f.LimitState).Returns(LimitStates.ULS); + _mockCombination.Setup(f => f.CalcTerm).Returns(CalcTerms.ShortTerm); + _mockCombination.Setup(f => f.LongTermFactor).Returns(0.9); + _mockCombination.Setup(f => f.ULSFactor).Returns(1.2); var mockConcentratedForce = new Mock(); mockConcentratedForce.Setup(f => f.ForceCoordinate).Returns(3.0); mockConcentratedForce.Setup(f => f.ForceValue).Returns(new ForceTuple() { Qy = 100.0 }); mockConcentratedForce.Setup(f => f.LoadRatio).Returns(0.8); mockConcentratedForce.Setup(f => f.RelativeLoadLevel).Returns(0.5); + mockConcentratedForce.Setup(f => f.CombinationProperty).Returns(_mockCombination.Object); _mockCoordinateByLevelLogic.Setup(c => c.GetCoordinate(2.0, 5.0, 0.5)).Returns(3.5); @@ -38,7 +47,7 @@ namespace StructureHelperTests.UnitTests.BeamShearTests double result = _logic.GetSumShearForce(mockConcentratedForce.Object, 2.0, 5.0).Qy; // Assert - Assert.That(result, Is.EqualTo(80.0)); + Assert.That(result, Is.EqualTo(72.000000000000014d)); _mockLogger.Verify(l => l.AddMessage(It.IsAny(), It.IsAny()), Times.AtLeastOnce); } @@ -47,7 +56,9 @@ namespace StructureHelperTests.UnitTests.BeamShearTests { // Arrange var mockConcentratedForce = new Mock(); - mockConcentratedForce.Setup(f => f.ForceCoordinate).Returns(6.0); + mockConcentratedForce.Setup(f => f.ForceCoordinate).Returns(6.0); + mockConcentratedForce.Setup(f => f.ForceValue).Returns(new ForceTuple() { Qy = 100.0 }); + mockConcentratedForce.Setup(f => f.Name).Returns("Zero_name"); // Act double result = _logic.GetSumShearForce(mockConcentratedForce.Object, 2.0, 5.0).Qy; diff --git a/StructureHelperTests/UnitTests/BeamShearTests/SumDistributedLoadLogicTests.cs b/StructureHelperTests/UnitTests/BeamShearTests/SumDistributedLoadLogicTests.cs index 86d37b1..946c514 100644 --- a/StructureHelperTests/UnitTests/BeamShearTests/SumDistributedLoadLogicTests.cs +++ b/StructureHelperTests/UnitTests/BeamShearTests/SumDistributedLoadLogicTests.cs @@ -4,6 +4,7 @@ using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Models.Forces; using StructureHelperCommon.Models; using StructureHelperLogics.Models.BeamShears; +using StructureHelperCommon.Infrastructures.Enums; namespace StructureHelperTests.UnitTests.BeamShearTests { @@ -13,25 +14,32 @@ namespace StructureHelperTests.UnitTests.BeamShearTests private Mock _mockLogger; private Mock _mockCoordinateByLevelLogic; private SumDistributedLoadLogic _logic; + private Mock _mockCombination; - [SetUp] + [SetUp] public void Setup() { _mockLogger = new Mock(); _mockCoordinateByLevelLogic = new Mock(); - _logic = new SumDistributedLoadLogic(_mockCoordinateByLevelLogic.Object, _mockLogger.Object); + _mockCombination = new Mock(); + _logic = new SumDistributedLoadLogic(_mockCoordinateByLevelLogic.Object, _mockLogger.Object); } [Test] public void GetSumShearForce_ShouldReturnCorrectForce_ForValidDistributedLoad() { - // Arrange - var mockDistributedLoad = new Mock(); + // Arrange + _mockCombination.Setup(f => f.LimitState).Returns(LimitStates.ULS); + _mockCombination.Setup(f => f.CalcTerm).Returns(CalcTerms.ShortTerm); + _mockCombination.Setup(f => f.LongTermFactor).Returns(0.9); + _mockCombination.Setup(f => f.ULSFactor).Returns(1.2); + var mockDistributedLoad = new Mock(); mockDistributedLoad.Setup(d => d.StartCoordinate).Returns(1.0); mockDistributedLoad.Setup(d => d.EndCoordinate).Returns(4.0); mockDistributedLoad.Setup(d => d.LoadValue).Returns(new ForceTuple() { Qy = 50.0 }); mockDistributedLoad.Setup(d => d.LoadRatio).Returns(0.9); mockDistributedLoad.Setup(d => d.RelativeLoadLevel).Returns(0.5); + mockDistributedLoad.Setup(d => d.CombinationProperty).Returns(_mockCombination.Object); _mockCoordinateByLevelLogic.Setup(c => c.GetCoordinate(2.0, 5.0, 0.5)).Returns(4.5); @@ -39,7 +47,7 @@ namespace StructureHelperTests.UnitTests.BeamShearTests double result = _logic.GetSumShearForce(mockDistributedLoad.Object, 2.0, 5.0).Qy; // Assert - Assert.That(result, Is.EqualTo(135.0)); + Assert.That(result, Is.EqualTo(121.50000000000001d)); _mockLogger.Verify(l => l.AddMessage(It.IsAny(), It.IsAny()), Times.AtLeastOnce); } @@ -49,6 +57,7 @@ namespace StructureHelperTests.UnitTests.BeamShearTests // Arrange var mockDistributedLoad = new Mock(); mockDistributedLoad.Setup(d => d.StartCoordinate).Returns(6.0); + mockDistributedLoad.Setup(d => d.LoadValue.Qy).Returns(100); // Act double result = _logic.GetSumShearForce(mockDistributedLoad.Object, 2.0, 5.0).Qy;