Add beam shear classes
This commit is contained in:
34
StructureHelperLogics/Models/Analyses/BeamShearAnalysis.cs
Normal file
34
StructureHelperLogics/Models/Analyses/BeamShearAnalysis.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using StructureHelperCommon.Models.Analyses;
|
||||
using StructureHelperLogics.Models.BeamShears;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace StructureHelperLogics.Models.Analyses
|
||||
{
|
||||
public class BeamShearAnalysis : IBeamShearAnalysis
|
||||
{
|
||||
|
||||
public Guid Id { get; }
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string Tags { get; set; } = string.Empty;
|
||||
public string Comment { get; set; } = string.Empty;
|
||||
public Color Color { get; set; } = Color.FromRgb(128, 0, 0);
|
||||
public IVersionProcessor VersionProcessor { get; set; } = new VersionProcessor();
|
||||
public BeamShearAnalysis(Guid id)
|
||||
{
|
||||
Id = id;
|
||||
BeamShear beamShear = new(Guid.NewGuid());
|
||||
VersionProcessor.AddVersion(beamShear);
|
||||
}
|
||||
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models.Analyses;
|
||||
using StructureHelperCommon.Services;
|
||||
using StructureHelperLogics.Models.BeamShears;
|
||||
using StructureHelperLogics.Models.CrossSections;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.Analyses
|
||||
{
|
||||
public class BeamShearAnalysisUpdateStrategy : IUpdateStrategy<IBeamShearAnalysis>
|
||||
{
|
||||
private IUpdateStrategy<IAnalysis> analysisUpdateStrategy;
|
||||
private IUpdateStrategy<IBeamShear> beamShearUpdateStrategy;
|
||||
private IUpdateStrategy<IDateVersion> dateUpdateStrategy;
|
||||
|
||||
public void Update(IBeamShearAnalysis targetObject, IBeamShearAnalysis sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(sourceObject, ErrorStrings.SourceObject);
|
||||
CheckObject.IsNull(targetObject, ErrorStrings.TargetObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; };
|
||||
InitialzeStrategies();
|
||||
analysisUpdateStrategy.Update(targetObject, sourceObject);
|
||||
targetObject.VersionProcessor.Versions.Clear();
|
||||
foreach (var version in sourceObject.VersionProcessor.Versions)
|
||||
{
|
||||
if (version is IBeamShear beamShear)
|
||||
{
|
||||
updateVersion(targetObject, version, beamShear);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(version.AnalysisVersion));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateVersion(IBeamShearAnalysis targetObject, IDateVersion version, IBeamShear beamShear)
|
||||
{
|
||||
DateVersion newVersion = new();
|
||||
dateUpdateStrategy.Update(newVersion, version);
|
||||
BeamShear newBeamShear = new(Guid.NewGuid());
|
||||
beamShearUpdateStrategy.Update(newBeamShear, beamShear);
|
||||
newVersion.AnalysisVersion = newBeamShear;
|
||||
targetObject.VersionProcessor.Versions.Add(newVersion);
|
||||
}
|
||||
|
||||
private void InitialzeStrategies()
|
||||
{
|
||||
analysisUpdateStrategy ??= new AnalysisUpdateStrategy();
|
||||
beamShearUpdateStrategy ??= new BeamShearUpdateStrategy();
|
||||
dateUpdateStrategy ??= new DateVersionUpdateStrategy();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ namespace StructureHelperLogic.Models.Analyses
|
||||
|
||||
public CrossSectionNdmAnalysis() : this(Guid.NewGuid(), new VersionProcessor())
|
||||
{
|
||||
CrossSection crossSection = new CrossSection();
|
||||
CrossSection crossSection = new();
|
||||
VersionProcessor.AddVersion(crossSection);
|
||||
}
|
||||
|
||||
|
||||
13
StructureHelperLogics/Models/Analyses/IBeamShearAnalysis.cs
Normal file
13
StructureHelperLogics/Models/Analyses/IBeamShearAnalysis.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using StructureHelperCommon.Models.Analyses;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.Analyses
|
||||
{
|
||||
public interface IBeamShearAnalysis : IAnalysis
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user