Add VisualAnalysisDTO
This commit is contained in:
@@ -27,5 +27,7 @@
|
||||
public static string ObjectNotFound => "#0018: Object not found";
|
||||
public static string ErrorDuring(string operation) => string.Format("Errors appeared during {0}, see detailed information", operation);
|
||||
public static string CalculationError => "#0019: Error of calculation";
|
||||
public static string SourceObject => "#0020: Source object";
|
||||
public static string TargetObject => "#0021: Target object";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
using StructureHelperCommon.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Infrastructures.Interfaces
|
||||
{
|
||||
public abstract class BaseUpdateStrategy<T> : IUpdateStrategy<T>
|
||||
{
|
||||
public abstract void Update(T targetObject, T sourceObject);
|
||||
public void Check(T targetObject, T sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(targetObject, sourceObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ namespace StructureHelperCommon.Infrastructures.Interfaces
|
||||
public IShiftTraceLogger? TraceLogger { get; set; }
|
||||
public IConvertStrategy<T,V> ConvertStrategy { get; set; }
|
||||
public Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; set; }
|
||||
public T ConvertFrom(V source)
|
||||
public T Convert(V source)
|
||||
{
|
||||
ICheckInputData();
|
||||
T val;
|
||||
@@ -31,32 +31,12 @@ namespace StructureHelperCommon.Infrastructures.Interfaces
|
||||
}
|
||||
else
|
||||
{
|
||||
val = ConvertStrategy.ConvertFrom(source);
|
||||
val = ConvertStrategy.Convert(source);
|
||||
ReferenceDictionary.Add(key, val);
|
||||
TraceLogger?.AddMessage($"New value of {typeof(T)} (Id = {val.Id}) was added to dictionary", TraceLogStatuses.Debug);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
public V ConvertTo(T source)
|
||||
{
|
||||
ICheckInputData();
|
||||
V val;
|
||||
var key = (source.Id, typeof(V));
|
||||
if (ReferenceDictionary.ContainsKey(key))
|
||||
{
|
||||
ISaveable existValue;
|
||||
ReferenceDictionary.TryGetValue(key, out existValue);
|
||||
val = (V)existValue;
|
||||
TraceLogger?.AddMessage($"Value of {typeof(V)} (Id = {existValue.Id}) exists already", TraceLogStatuses.Debug);
|
||||
}
|
||||
else
|
||||
{
|
||||
val = ConvertStrategy.ConvertTo(source);
|
||||
ReferenceDictionary.Add(key, val);
|
||||
TraceLogger?.AddMessage($"New value of {typeof(V)} (Id = {val.Id}) was added to dictionary", TraceLogStatuses.Debug);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
private void ICheckInputData()
|
||||
{
|
||||
if(ReferenceDictionary is null)
|
||||
|
||||
@@ -11,8 +11,8 @@ namespace StructureHelperCommon.Infrastructures.Interfaces
|
||||
where T :ISaveable
|
||||
where V :ISaveable
|
||||
{
|
||||
Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; set; }
|
||||
IShiftTraceLogger TraceLogger { get; set; }
|
||||
V ConvertTo(T source);
|
||||
T ConvertFrom(V source);
|
||||
T Convert(V source);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
using StructureHelperCommon.Models.Shapes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Infrastructures.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Implement center of geometry shape on 2D plane
|
||||
/// </summary>
|
||||
public interface IHasCenter2D
|
||||
{
|
||||
/// <summary>
|
||||
/// 2D point of center
|
||||
/// </summary>
|
||||
IPoint2D Center {get;set;}
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Analyses
|
||||
{
|
||||
public class Version : IVersion
|
||||
public class DateVersion : IDateVersion
|
||||
{
|
||||
public DateTime DateTime { get; set; }
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Analyses
|
||||
{
|
||||
public class DateVersionUpdateStrategy : IUpdateStrategy<IDateVersion>
|
||||
{
|
||||
public void Update(IDateVersion targetObject, IDateVersion sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(sourceObject, ErrorStrings.SourceObject);
|
||||
CheckObject.IsNull(targetObject, ErrorStrings.TargetObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; };
|
||||
targetObject.DateTime = sourceObject.DateTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Analyses
|
||||
{
|
||||
public interface IAnalysis : ISaveable
|
||||
public interface IAnalysis : ISaveable, ICloneable
|
||||
{
|
||||
string Name { get; set; }
|
||||
string Tags { get; set; }
|
||||
|
||||
@@ -7,9 +7,9 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Analyses
|
||||
{
|
||||
public interface IVersion
|
||||
public interface IDateVersion
|
||||
{
|
||||
DateTime DateTime { get; }
|
||||
DateTime DateTime { get; set; }
|
||||
ISaveable Item { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ namespace StructureHelperCommon.Models.Analyses
|
||||
public interface IVersionProcessor : ISaveable
|
||||
{
|
||||
void AddVersion(ISaveable newItem);
|
||||
List<IVersion> Versions { get; }
|
||||
IVersion GetCurrentVersion();
|
||||
List<IDateVersion> Versions { get; }
|
||||
IDateVersion GetCurrentVersion();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Analyses
|
||||
{
|
||||
public interface IVisualAnalysis : ISaveable
|
||||
public interface IVisualAnalysis : ISaveable, ICloneable
|
||||
{
|
||||
IAnalysis Analysis {get;set;}
|
||||
void Run();
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace StructureHelperCommon.Models.Analyses
|
||||
{
|
||||
public class VersionProcessor : IVersionProcessor
|
||||
{
|
||||
public List<IVersion> Versions { get; }
|
||||
public List<IDateVersion> Versions { get; }
|
||||
|
||||
public Guid Id { get; }
|
||||
|
||||
@@ -24,14 +24,14 @@ namespace StructureHelperCommon.Models.Analyses
|
||||
|
||||
}
|
||||
|
||||
private void AddVersion(IVersion version)
|
||||
private void AddVersion(IDateVersion version)
|
||||
{
|
||||
Versions.Add(version);
|
||||
}
|
||||
|
||||
public void AddVersion(ISaveable newItem)
|
||||
{
|
||||
var version = new Version()
|
||||
var version = new DateVersion()
|
||||
{
|
||||
DateTime = DateTime.Now,
|
||||
Item = newItem
|
||||
@@ -40,7 +40,7 @@ namespace StructureHelperCommon.Models.Analyses
|
||||
}
|
||||
|
||||
|
||||
public IVersion GetCurrentVersion()
|
||||
public IDateVersion GetCurrentVersion()
|
||||
{
|
||||
return Versions[^1];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models.Analyses;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Analyses
|
||||
{
|
||||
public class VisualAnalysisUpdateStrategy : IUpdateStrategy<IVisualAnalysis>
|
||||
{
|
||||
public void Update(IVisualAnalysis targetObject, IVisualAnalysis sourceObject)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,8 @@ namespace StructureHelperCommon.Models.Projects
|
||||
{
|
||||
public void Update(IFileVersion targetObject, IFileVersion sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(targetObject, sourceObject);
|
||||
CheckObject.IsNull(targetObject);
|
||||
CheckObject.IsNull(sourceObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; };
|
||||
targetObject.VersionNumber = sourceObject.VersionNumber;
|
||||
targetObject.SubVersionNumber = sourceObject.SubVersionNumber;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models.Analyses;
|
||||
using StructureHelperCommon.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Projects
|
||||
{
|
||||
public class ProjectUpdateStrategy : IUpdateStrategy<IProject>
|
||||
{
|
||||
private IUpdateStrategy<IVisualAnalysis> updateStrategy;
|
||||
|
||||
public ProjectUpdateStrategy(IUpdateStrategy<IVisualAnalysis> updateStrategy)
|
||||
{
|
||||
this.updateStrategy = updateStrategy;
|
||||
}
|
||||
|
||||
public ProjectUpdateStrategy() : this(new VisualAnalysisUpdateStrategy())
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Update(IProject targetObject, IProject sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(sourceObject, ErrorStrings.SourceObject);
|
||||
CheckObject.IsNull(targetObject, ErrorStrings.TargetObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; }
|
||||
targetObject.VisualAnalyses.Clear();
|
||||
foreach (var item in sourceObject.VisualAnalyses)
|
||||
{
|
||||
targetObject.VisualAnalyses.Add(item.Clone() as IVisualAnalysis);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -17,6 +19,8 @@ namespace StructureHelperCommon.Models.Shapes
|
||||
/// <inheritdoc />
|
||||
public void Update(IPoint2D targetObject, IPoint2D sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(sourceObject, ErrorStrings.SourceObject);
|
||||
CheckObject.IsNull(targetObject, ErrorStrings.TargetObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; }
|
||||
targetObject.X = sourceObject.X;
|
||||
targetObject.Y = sourceObject.Y;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -11,6 +12,8 @@ namespace StructureHelperCommon.Models.Shapes
|
||||
{
|
||||
public void Update(IRectangleShape targetObject, IRectangleShape sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(sourceObject);
|
||||
CheckObject.IsNull(targetObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; }
|
||||
targetObject.Width = sourceObject.Width;
|
||||
targetObject.Height = sourceObject.Height;
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperCommon.Models.Shapes.Logics
|
||||
{
|
||||
public class ShapeUpdateStrategy : IUpdateStrategy<IShape>
|
||||
{
|
||||
public void Update(IShape targetObject, IShape sourceObject)
|
||||
{
|
||||
CheckObject.IsNull(targetObject);
|
||||
CheckObject.IsNull(sourceObject);
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; }
|
||||
if (sourceObject is IRectangleShape sourceRectangle)
|
||||
{
|
||||
ProcessRectangles(targetObject, sourceRectangle);
|
||||
}
|
||||
else if (sourceObject is ICircleShape sourceCircle)
|
||||
{
|
||||
ProcessCircles(targetObject, sourceCircle);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown);
|
||||
}
|
||||
}
|
||||
|
||||
private static void ProcessCircles(IShape targetObject, ICircleShape sourceCircle)
|
||||
{
|
||||
if (targetObject is ICircleShape targetCircle)
|
||||
{
|
||||
var updateLogic = new CircleShapeUpdateStrategy();
|
||||
updateLogic.Update(targetCircle, sourceCircle);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new StructureHelperException(ErrorStrings.DataIsInCorrect + ": target object is not circle");
|
||||
}
|
||||
}
|
||||
|
||||
private static void ProcessRectangles(IShape targetObject, IRectangleShape sourceRectangle)
|
||||
{
|
||||
if (targetObject is IRectangleShape targetRectangle)
|
||||
{
|
||||
var updateLogic = new RectangleShapeUpdateStrategy();
|
||||
updateLogic.Update(targetRectangle, sourceRectangle);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new StructureHelperException(ErrorStrings.DataIsInCorrect + ": target object is not rectangle");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user