From 04446b9e79a332b45b878e39f1de1e508dc71865 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 17 Jul 2024 10:40:55 +0100 Subject: [PATCH 1/4] changes namespace of collections and adds interfaces --- .../Models/{ => Collections}/Collection.cs | 2 +- src/Speckle.Core/Models/Collections/Interfaces.cs | 12 ++++++++++++ src/Speckle.Core/Models/{ => Collections}/Layer.cs | 4 ++-- src/Speckle.Core/Models/CommitObjectBuilder.cs | 1 + src/Speckle.Core/Models/Extensions/BaseExtensions.cs | 1 + src/Speckle.Objects/GIS/RasterLayer.cs | 2 +- src/Speckle.Objects/GIS/VectorLayer.cs | 1 + .../Organization/Deprecated/Collection.cs | 4 ++-- .../Models/Extensions/BaseExtensionsTests.cs | 1 + .../TraversalContextExtensionsTests.cs | 1 + 10 files changed, 23 insertions(+), 6 deletions(-) rename src/Speckle.Core/Models/{ => Collections}/Collection.cs (97%) create mode 100644 src/Speckle.Core/Models/Collections/Interfaces.cs rename src/Speckle.Core/Models/{ => Collections}/Layer.cs (86%) diff --git a/src/Speckle.Core/Models/Collection.cs b/src/Speckle.Core/Models/Collections/Collection.cs similarity index 97% rename from src/Speckle.Core/Models/Collection.cs rename to src/Speckle.Core/Models/Collections/Collection.cs index 6f9f315a..16e90596 100644 --- a/src/Speckle.Core/Models/Collection.cs +++ b/src/Speckle.Core/Models/Collections/Collection.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Speckle.Core.Models; +namespace Speckle.Core.Models.Collections; /// /// A simple container for organising objects within a model and preserving object hierarchy. diff --git a/src/Speckle.Core/Models/Collections/Interfaces.cs b/src/Speckle.Core/Models/Collections/Interfaces.cs new file mode 100644 index 00000000..2ecab1ee --- /dev/null +++ b/src/Speckle.Core/Models/Collections/Interfaces.cs @@ -0,0 +1,12 @@ +namespace Speckle.Core.Models.Collections; + +/// +/// Represents a collection that has a +/// +public interface IHasColor +{ + /// + /// The argb int value of the collection color + /// + public int color { get; set; } +} diff --git a/src/Speckle.Core/Models/Layer.cs b/src/Speckle.Core/Models/Collections/Layer.cs similarity index 86% rename from src/Speckle.Core/Models/Layer.cs rename to src/Speckle.Core/Models/Collections/Layer.cs index bdf0c09b..9f1de176 100644 --- a/src/Speckle.Core/Models/Layer.cs +++ b/src/Speckle.Core/Models/Collections/Layer.cs @@ -1,9 +1,9 @@ -namespace Speckle.Core.Models; +namespace Speckle.Core.Models.Collections; /// /// A specialized collection that represents a CAD-app layer. We expect this to grow in the future with possibly other shared props. /// -public class Layer : Collection +public class Layer : Collection, IHasColor { public Layer() { } diff --git a/src/Speckle.Core/Models/CommitObjectBuilder.cs b/src/Speckle.Core/Models/CommitObjectBuilder.cs index 3bdda977..5567f95c 100644 --- a/src/Speckle.Core/Models/CommitObjectBuilder.cs +++ b/src/Speckle.Core/Models/CommitObjectBuilder.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Speckle.Core.Logging; +using Speckle.Core.Models.Collections; using Speckle.Core.Models.Extensions; namespace Speckle.Core.Models; diff --git a/src/Speckle.Core/Models/Extensions/BaseExtensions.cs b/src/Speckle.Core/Models/Extensions/BaseExtensions.cs index adff40d1..4f1eef63 100644 --- a/src/Speckle.Core/Models/Extensions/BaseExtensions.cs +++ b/src/Speckle.Core/Models/Extensions/BaseExtensions.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; +using Speckle.Core.Models.Collections; namespace Speckle.Core.Models.Extensions; diff --git a/src/Speckle.Objects/GIS/RasterLayer.cs b/src/Speckle.Objects/GIS/RasterLayer.cs index b7330d49..1b489a48 100644 --- a/src/Speckle.Objects/GIS/RasterLayer.cs +++ b/src/Speckle.Objects/GIS/RasterLayer.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using Speckle.Core.Models; +using Speckle.Core.Models.Collections; namespace Objects.GIS; diff --git a/src/Speckle.Objects/GIS/VectorLayer.cs b/src/Speckle.Objects/GIS/VectorLayer.cs index 618f95d8..522f9cdf 100644 --- a/src/Speckle.Objects/GIS/VectorLayer.cs +++ b/src/Speckle.Objects/GIS/VectorLayer.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Speckle.Core.Models; +using Speckle.Core.Models.Collections; namespace Objects.GIS; diff --git a/src/Speckle.Objects/Organization/Deprecated/Collection.cs b/src/Speckle.Objects/Organization/Deprecated/Collection.cs index 6c05f15e..142dd214 100644 --- a/src/Speckle.Objects/Organization/Deprecated/Collection.cs +++ b/src/Speckle.Objects/Organization/Deprecated/Collection.cs @@ -2,8 +2,8 @@ namespace Objects.Organization.Deprecated; -[Obsolete("Replaced by " + nameof(Speckle.Core.Models.Collection))] -public class Collection : Speckle.Core.Models.Collection +[Obsolete("Replaced by " + nameof(Speckle.Core.Models.Collections.Collection))] +public class Collection : Speckle.Core.Models.Collections.Collection { //Deserializer target for 2.13 Collection objects in the `Objects.Orgainzation` namespace diff --git a/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs b/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs index c3c1af34..98669f12 100644 --- a/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs +++ b/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs @@ -1,5 +1,6 @@ using NUnit.Framework; using Speckle.Core.Models; +using Speckle.Core.Models.Collections; using Speckle.Core.Models.Extensions; namespace Speckle.Core.Tests.Unit.Models.Extensions; diff --git a/tests/Speckle.Core.Tests.Unit/Models/GraphTraversal/TraversalContextExtensionsTests.cs b/tests/Speckle.Core.Tests.Unit/Models/GraphTraversal/TraversalContextExtensionsTests.cs index 5e670fee..33420076 100644 --- a/tests/Speckle.Core.Tests.Unit/Models/GraphTraversal/TraversalContextExtensionsTests.cs +++ b/tests/Speckle.Core.Tests.Unit/Models/GraphTraversal/TraversalContextExtensionsTests.cs @@ -1,6 +1,7 @@ using NUnit.Framework; using Speckle.Core.Common; using Speckle.Core.Models; +using Speckle.Core.Models.Collections; using Speckle.Core.Models.GraphTraversal; namespace Speckle.Core.Tests.Unit.Models.GraphTraversal; From a2f0270a6e128297f6a044cdf61842f5697270f3 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 17 Jul 2024 14:22:27 +0100 Subject: [PATCH 2/4] adds old collections namespace deprecation --- src/Speckle.Core/Models/Deprecated/Collection.cs | 11 +++++++++++ src/Speckle.Core/Speckle.Core.csproj | 10 +++++----- 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 src/Speckle.Core/Models/Deprecated/Collection.cs diff --git a/src/Speckle.Core/Models/Deprecated/Collection.cs b/src/Speckle.Core/Models/Deprecated/Collection.cs new file mode 100644 index 00000000..6b6e263c --- /dev/null +++ b/src/Speckle.Core/Models/Deprecated/Collection.cs @@ -0,0 +1,11 @@ +using System; + +namespace Speckle.Core.Models.Deprecated; + +[Obsolete("Replaced by " + nameof(Speckle.Core.Models.Collections.Collection))] +public class Collection : Speckle.Core.Models.Collections.Collection +{ + //Deserializer target DUI3 Collection objects in the `Speckle.Core.Models` namespace + + //Speckle.Core.Models.Deprecated.Collection:Speckle.Core.Models.Collections.Collection +} diff --git a/src/Speckle.Core/Speckle.Core.csproj b/src/Speckle.Core/Speckle.Core.csproj index 553c3485..5b541488 100644 --- a/src/Speckle.Core/Speckle.Core.csproj +++ b/src/Speckle.Core/Speckle.Core.csproj @@ -13,15 +13,15 @@ - - - + + + - + @@ -32,7 +32,7 @@ - + From a15390ab0d453bb79464485cb4ac5f9dd13710c1 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 17 Jul 2024 14:22:37 +0100 Subject: [PATCH 3/4] Update Collection.cs --- src/Speckle.Core/Models/Deprecated/Collection.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Speckle.Core/Models/Deprecated/Collection.cs b/src/Speckle.Core/Models/Deprecated/Collection.cs index 6b6e263c..81934988 100644 --- a/src/Speckle.Core/Models/Deprecated/Collection.cs +++ b/src/Speckle.Core/Models/Deprecated/Collection.cs @@ -8,4 +8,6 @@ public class Collection : Speckle.Core.Models.Collections.Collection //Deserializer target DUI3 Collection objects in the `Speckle.Core.Models` namespace //Speckle.Core.Models.Deprecated.Collection:Speckle.Core.Models.Collections.Collection + + //POC: This could be handled with object version } From a16bc4eae0c5f84f525fab4c17912506b7f3bf6b Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 17 Jul 2024 14:28:51 +0100 Subject: [PATCH 4/4] updates tests --- src/Speckle.Core/Models/Deprecated/Collection.cs | 13 ------------- .../Models/Extensions/BaseExtensionsTests.cs | 4 ++-- 2 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 src/Speckle.Core/Models/Deprecated/Collection.cs diff --git a/src/Speckle.Core/Models/Deprecated/Collection.cs b/src/Speckle.Core/Models/Deprecated/Collection.cs deleted file mode 100644 index 81934988..00000000 --- a/src/Speckle.Core/Models/Deprecated/Collection.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; - -namespace Speckle.Core.Models.Deprecated; - -[Obsolete("Replaced by " + nameof(Speckle.Core.Models.Collections.Collection))] -public class Collection : Speckle.Core.Models.Collections.Collection -{ - //Deserializer target DUI3 Collection objects in the `Speckle.Core.Models` namespace - - //Speckle.Core.Models.Deprecated.Collection:Speckle.Core.Models.Collections.Collection - - //POC: This could be handled with object version -} diff --git a/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs b/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs index 98669f12..738e01ab 100644 --- a/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs +++ b/tests/Speckle.Core.Tests.Unit/Models/Extensions/BaseExtensionsTests.cs @@ -44,11 +44,11 @@ public void TraverseWithPath() var basePaths = collection.TraverseWithPath((obj => obj is not Collection)).ToList(); Assert.That(basePaths.Count, Is.EqualTo(3)); - Assert.That(basePaths[0].Item2.speckle_type, Is.EqualTo("Speckle.Core.Models.Collection")); + Assert.That(basePaths[0].Item2.speckle_type, Is.EqualTo("Speckle.Core.Models.Collections.Collection")); Assert.That(basePaths[0].Item2["name"], Is.EqualTo("collection")); Assert.That(basePaths[0].Item1, Is.EqualTo(new List())); - Assert.That(basePaths[1].Item2.speckle_type, Is.EqualTo("Speckle.Core.Models.Collection")); + Assert.That(basePaths[1].Item2.speckle_type, Is.EqualTo("Speckle.Core.Models.Collections.Collection")); Assert.That(basePaths[1].Item2["name"], Is.EqualTo("subCollection")); Assert.That(basePaths[1].Item1, Is.EqualTo(new List() { "collection" }));