Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj =================================================================== diff -u -r845d2b0230eca6b2e9e94a2aec3fa36bd3c916b6 -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj (.../Application.Ringtoets.Storage.csproj) (revision 845d2b0230eca6b2e9e94a2aec3fa36bd3c916b6) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj (.../Application.Ringtoets.Storage.csproj) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -70,6 +70,10 @@ RingtoetsEntities.tt + + RingtoetsEntities.tt + + RingtoetsEntities.tt Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/RingtoetsPipingSurfaceLineCreateExtensions.cs =================================================================== diff -u -r54e6baff4fab535777949f737314f052853e818a -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/RingtoetsPipingSurfaceLineCreateExtensions.cs (.../RingtoetsPipingSurfaceLineCreateExtensions.cs) (revision 54e6baff4fab535777949f737314f052853e818a) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/RingtoetsPipingSurfaceLineCreateExtensions.cs (.../RingtoetsPipingSurfaceLineCreateExtensions.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -73,32 +73,50 @@ if (surfaceLine.BottomDitchPolderSide != null) { SurfaceLinePointEntity characteristicPointEntity = collector.GetSurfaceLinePoint(surfaceLine.BottomDitchPolderSide); - entity.BottomDitchPolderSidePointEntity = characteristicPointEntity; + characteristicPointEntity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.BottomDitchPolderSide + }); } if (surfaceLine.BottomDitchDikeSide != null) { SurfaceLinePointEntity characteristicPointEntity = collector.GetSurfaceLinePoint(surfaceLine.BottomDitchDikeSide); - entity.BottomDitchDikeSidePointEntity = characteristicPointEntity; + characteristicPointEntity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.BottomDitchDikeSide + }); } if (surfaceLine.DikeToeAtPolder != null) { SurfaceLinePointEntity characteristicPointEntity = collector.GetSurfaceLinePoint(surfaceLine.DikeToeAtPolder); - entity.DikeToeAtPolderPointEntity = characteristicPointEntity; + characteristicPointEntity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DikeToeAtPolder + }); } if (surfaceLine.DikeToeAtRiver != null) { SurfaceLinePointEntity characteristicPointEntity = collector.GetSurfaceLinePoint(surfaceLine.DikeToeAtRiver); - entity.DikeToeAtRiverPointEntity = characteristicPointEntity; + characteristicPointEntity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DikeToeAtRiver + }); } if (surfaceLine.DitchDikeSide != null) { SurfaceLinePointEntity characteristicPointEntity = collector.GetSurfaceLinePoint(surfaceLine.DitchDikeSide); - entity.DitchDikeSidePointEntity = characteristicPointEntity; + characteristicPointEntity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DitchDikeSide + }); } if (surfaceLine.DitchPolderSide != null) { SurfaceLinePointEntity characteristicPointEntity = collector.GetSurfaceLinePoint(surfaceLine.DitchPolderSide); - entity.DitchPolderSidePointEntity = characteristicPointEntity; + characteristicPointEntity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DitchPolderSide + }); } } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/CharacteristicPointEntity.cs =================================================================== diff -u --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/CharacteristicPointEntity.cs (revision 0) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/CharacteristicPointEntity.cs (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -0,0 +1,44 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +//------------------------------------------------------------------------------ +// +// This code was generated from a template. +// +// Manual changes to this file may cause unexpected behavior in your application. +// Manual changes to this file will be overwritten if the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Application.Ringtoets.Storage.DbContext +{ + using System; + using System.Collections.Generic; + + public partial class CharacteristicPointEntity + { + public long CharacteristicPointEntityId { get; set; } + public short CharacteristicPointType { get; set; } + public long SurfaceLinePointEntityId { get; set; } + + public virtual SurfaceLinePointEntity SurfaceLinePointEntity { get; set; } + } +} Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/CharacteristicPointType.cs =================================================================== diff -u --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/CharacteristicPointType.cs (revision 0) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/CharacteristicPointType.cs (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -0,0 +1,36 @@ +using Ringtoets.Piping.Primitives; + +namespace Application.Ringtoets.Storage.DbContext +{ + /// + /// Denotes a as being used to mark a particular + /// characteristic point of a . + /// + public enum CharacteristicPointType + { + /// + /// Corresponds to . + /// + DikeToeAtRiver = 1, + /// + /// Corresponds to . + /// + DikeToeAtPolder = 2, + /// + /// Corresponds to . + /// + DitchDikeSide = 3, + /// + /// Corresponds to . + /// + BottomDitchDikeSide = 4, + /// + /// Corresponds to . + /// + BottomDitchPolderSide = 5, + /// + /// Corresponds to . + /// + DitchPolderSide = 6 + } +} \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/DatabaseStructure.sql =================================================================== diff -u -r24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/DatabaseStructure.sql (.../DatabaseStructure.sql) (revision 24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/DatabaseStructure.sql (.../DatabaseStructure.sql) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -1,6 +1,6 @@ /* ---------------------------------------------------- */ /* Generated by Enterprise Architect Version 12.0 */ -/* Created On : 18-mei-2016 13:30:01 */ +/* Created On : 23-mei-2016 8:51:48 */ /* DBMS : SQLite */ /* ---------------------------------------------------- */ @@ -48,6 +48,9 @@ DROP TABLE IF EXISTS 'SurfaceLinePointEntity' ; +DROP TABLE IF EXISTS 'CharacteristicPointEntity' +; + /* Create Tables with Primary and Foreign Keys, Check and Unique Constraints */ CREATE TABLE 'VersionEntity' @@ -181,18 +184,6 @@ 'Name' VARCHAR (255) NOT NULL, 'ReferenceLineIntersectionX' NUMERIC NOT NULL, 'ReferenceLineIntersectionY' NUMERIC NOT NULL, - 'DitchPolderSidePointEntityId' INTEGER, - 'BottomDitchPolderSidePointEntityId' INTEGER, - 'BottomDitchDikeSidePointEntityId' INTEGER, - 'DitchDikeSidePointEntityId' INTEGER, - 'DikeToeAtRiverEntityId' INTEGER, - 'DikeToeAtPolderEntityId' INTEGER, - CONSTRAINT 'FK_BottomDitchDikeSidePointEntity_SurfaceLinePointEntity' FOREIGN KEY ('BottomDitchDikeSidePointEntityId') REFERENCES 'SurfaceLinePointEntity' ('SurfaceLinePointEntityId') ON DELETE No Action ON UPDATE No Action, - CONSTRAINT 'FK_BottomDitchPolderSidePointEntity_SurfaceLinePointEntity' FOREIGN KEY ('BottomDitchPolderSidePointEntityId') REFERENCES 'SurfaceLinePointEntity' ('SurfaceLinePointEntityId') ON DELETE No Action ON UPDATE No Action, - CONSTRAINT 'FK_DikeToeAtPolderPointEntity_SurfaceLinePointEntity' FOREIGN KEY ('DikeToeAtPolderEntityId') REFERENCES 'SurfaceLinePointEntity' ('SurfaceLinePointEntityId') ON DELETE No Action ON UPDATE No Action, - CONSTRAINT 'FK_DikeToeAtRiverPointEntity_SurfaceLinePointEntity' FOREIGN KEY ('DikeToeAtRiverEntityId') REFERENCES 'SurfaceLinePointEntity' ('SurfaceLinePointEntityId') ON DELETE No Action ON UPDATE No Action, - CONSTRAINT 'FK_DitchDikeSidePointEntity_SurfaceLinePointEntity' FOREIGN KEY ('DitchDikeSidePointEntityId') REFERENCES 'SurfaceLinePointEntity' ('SurfaceLinePointEntityId') ON DELETE No Action ON UPDATE No Action, - CONSTRAINT 'FK_DitchPolderSidePointEntity_SurfaceLinePointEntity' FOREIGN KEY ('DitchPolderSidePointEntityId') REFERENCES 'SurfaceLinePointEntity' ('SurfaceLinePointEntityId') ON DELETE No Action ON UPDATE No Action, CONSTRAINT 'FK_SurfaceLineEntity_FailureMechanismEntity' FOREIGN KEY ('FailureMechanismEntityId') REFERENCES 'FailureMechanismEntity' ('FailureMechanismEntityId') ON DELETE No Action ON UPDATE No Action ) ; @@ -209,6 +200,15 @@ ) ; +CREATE TABLE 'CharacteristicPointEntity' +( + 'CharacteristicPointEntityId' INTEGER NOT NULL PRIMARY KEY, + 'CharacteristicPointType' SMALLINT NOT NULL, -- Enum: 1 = DikeToeAtRiver 2 = DikeToeAtPolder 3 = DitchDikeSide 4 = BottomDitchDikeSide 5 = BottomDitchPolderSide 6 = DitchPolderSide + 'SurfaceLinePointEntityId' INTEGER NOT NULL, + CONSTRAINT 'FK_CharacteristicPointEntity_SurfaceLinePointEntity' FOREIGN KEY ('SurfaceLinePointEntityId') REFERENCES 'SurfaceLinePointEntity' ('SurfaceLinePointEntityId') ON DELETE No Action ON UPDATE No Action +) +; + /* Create Indexes and Triggers */ CREATE INDEX 'IXFK_AssessmentSectionEntity_ProjectEntity' @@ -251,30 +251,10 @@ ON 'SurfaceLineEntity' ('FailureMechanismEntityId' ASC) ; -CREATE INDEX 'IXFK_SurfaceLineEntity_SurfaceLinePointEntity' - ON 'SurfaceLineEntity' ('DitchPolderSidePointEntityId' ASC) -; - -CREATE INDEX 'IXFK_SurfaceLineEntity_SurfaceLinePointEntity_02' - ON 'SurfaceLineEntity' ('BottomDitchPolderSidePointEntityId' ASC) -; - -CREATE INDEX 'IXFK_SurfaceLineEntity_SurfaceLinePointEntity_03' - ON 'SurfaceLineEntity' ('BottomDitchDikeSidePointEntityId' ASC) -; - -CREATE INDEX 'IXFK_SurfaceLineEntity_SurfaceLinePointEntity_04' - ON 'SurfaceLineEntity' ('DitchDikeSidePointEntityId' ASC) -; - -CREATE INDEX 'IXFK_SurfaceLineEntity_SurfaceLinePointEntity_05' - ON 'SurfaceLineEntity' ('DikeToeAtRiverEntityId' ASC) -; - -CREATE INDEX 'IXFK_SurfaceLineEntity_SurfaceLinePointEntity_06' - ON 'SurfaceLineEntity' ('DikeToeAtPolderEntityId' ASC) -; - CREATE INDEX 'IXFK_SurfaceLinePointEntity_SurfaceLineEntity' ON 'SurfaceLinePointEntity' ('SurfaceLineEntityId' ASC) ; + +CREATE INDEX 'IXFK_CharacteristicPointEntity_SurfaceLinePointEntity' + ON 'CharacteristicPointEntity' ('SurfaceLinePointEntityId' ASC) +; Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.cs =================================================================== diff -u -r86e3c1e3b6568eea578004f3d9d93114cdb351b8 -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.cs (.../RingtoetsEntities.Context.cs) (revision 86e3c1e3b6568eea578004f3d9d93114cdb351b8) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.cs (.../RingtoetsEntities.Context.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -53,6 +53,7 @@ } public virtual DbSet AssessmentSectionEntities { get; set; } + public virtual DbSet CharacteristicPointEntities { get; set; } public virtual DbSet FailureMechanismEntities { get; set; } public virtual DbSet FailureMechanismSectionEntities { get; set; } public virtual DbSet FailureMechanismSectionPointEntities { get; set; } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx =================================================================== diff -u -r24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx (.../RingtoetsEntities.edmx) (revision 24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx (.../RingtoetsEntities.edmx) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -18,6 +18,14 @@ + + + + + + + + @@ -118,12 +126,6 @@ - - - - - - @@ -157,6 +159,18 @@ + + + + + + + + + + + + @@ -277,78 +291,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,6 +305,7 @@ + @@ -380,6 +323,10 @@ + + + + @@ -420,30 +367,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -455,6 +378,7 @@ + @@ -484,6 +408,10 @@ + + + + @@ -512,30 +440,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -558,6 +462,15 @@ + + + + + + + + + @@ -675,19 +588,7 @@ - - - - - - - - - - - - @@ -700,12 +601,7 @@ - - - - - - + @@ -765,6 +661,18 @@ + + + + + + + + + + + + @@ -849,78 +757,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -953,6 +789,15 @@ + + + + + + + + + @@ -1057,12 +902,6 @@ - - - - - - Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram =================================================================== diff -u -r24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram (.../RingtoetsEntities.edmx.diagram) (revision 24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram (.../RingtoetsEntities.edmx.diagram) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -5,37 +5,33 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/SurfaceLineEntity.cs =================================================================== diff -u -r24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/SurfaceLineEntity.cs (.../SurfaceLineEntity.cs) (revision 24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/SurfaceLineEntity.cs (.../SurfaceLineEntity.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -46,20 +46,8 @@ public string Name { get; set; } public decimal ReferenceLineIntersectionX { get; set; } public decimal ReferenceLineIntersectionY { get; set; } - public Nullable DitchPolderSidePointEntityId { get; set; } - public Nullable BottomDitchPolderSidePointEntityId { get; set; } - public Nullable BottomDitchDikeSidePointEntityId { get; set; } - public Nullable DitchDikeSidePointEntityId { get; set; } - public Nullable DikeToeAtRiverEntityId { get; set; } - public Nullable DikeToeAtPolderEntityId { get; set; } public virtual FailureMechanismEntity FailureMechanismEntity { get; set; } - public virtual SurfaceLinePointEntity DitchPolderSidePointEntity { get; set; } - public virtual SurfaceLinePointEntity DitchDikeSidePointEntity { get; set; } - public virtual SurfaceLinePointEntity DikeToeAtRiverPointEntity { get; set; } - public virtual SurfaceLinePointEntity DikeToeAtPolderPointEntity { get; set; } - public virtual SurfaceLinePointEntity BottomDitchPolderSidePointEntity { get; set; } - public virtual SurfaceLinePointEntity BottomDitchDikeSidePointEntity { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection SurfaceLinePointEntities { get; set; } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/SurfaceLinePointEntity.cs =================================================================== diff -u -r24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/SurfaceLinePointEntity.cs (.../SurfaceLinePointEntity.cs) (revision 24cf947dc2fc0c56fb917b989bc4ad2ccb27bcae) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/SurfaceLinePointEntity.cs (.../SurfaceLinePointEntity.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -38,12 +38,7 @@ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public SurfaceLinePointEntity() { - this.DitchPolderSidePointParentEntity = new HashSet(); - this.DitchDikeSidePointParentEntity = new HashSet(); - this.DikeToeAtRiverPointParentEntity = new HashSet(); - this.DikeToeAtPolderPointParentEntity = new HashSet(); - this.BottomDitchPolderSidePointParentEntity = new HashSet(); - this.BottomDitchDikeSidePointParentEntity = new HashSet(); + this.CharacteristicPointEntities = new HashSet(); } public long SurfaceLinePointEntityId { get; set; } @@ -54,17 +49,7 @@ public decimal Z { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] - public virtual ICollection DitchPolderSidePointParentEntity { get; set; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] - public virtual ICollection DitchDikeSidePointParentEntity { get; set; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] - public virtual ICollection DikeToeAtRiverPointParentEntity { get; set; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] - public virtual ICollection DikeToeAtPolderPointParentEntity { get; set; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] - public virtual ICollection BottomDitchPolderSidePointParentEntity { get; set; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] - public virtual ICollection BottomDitchDikeSidePointParentEntity { get; set; } + public virtual ICollection CharacteristicPointEntities { get; set; } public virtual SurfaceLineEntity SurfaceLineEntity { get; set; } } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/RingtoetsPipingSurfaceLineReadExtensions.cs =================================================================== diff -u -r54e6baff4fab535777949f737314f052853e818a -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/RingtoetsPipingSurfaceLineReadExtensions.cs (.../RingtoetsPipingSurfaceLineReadExtensions.cs) (revision 54e6baff4fab535777949f737314f052853e818a) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/RingtoetsPipingSurfaceLineReadExtensions.cs (.../RingtoetsPipingSurfaceLineReadExtensions.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -68,30 +68,41 @@ private static void ReadCharacteristicPoints(this SurfaceLineEntity entity, RingtoetsPipingSurfaceLine surfaceLine, ReadConversionCollector collector) { - if (entity.BottomDitchDikeSidePointEntity != null) + foreach (SurfaceLinePointEntity pointEntity in entity.SurfaceLinePointEntities) { - surfaceLine.SetBottomDitchDikeSideAt(collector.Get(entity.BottomDitchDikeSidePointEntity)); + foreach (CharacteristicPointEntity characteristicPointEntity in pointEntity.CharacteristicPointEntities) + { + SetCharacteristicPoint(surfaceLine, characteristicPointEntity, collector); + } } - if (entity.BottomDitchPolderSidePointEntity != null) + } + + private static void SetCharacteristicPoint(RingtoetsPipingSurfaceLine surfaceLine, CharacteristicPointEntity characteristicPointEntity, ReadConversionCollector collector) + { + Point3D geometryPoint = collector.Get(characteristicPointEntity.SurfaceLinePointEntity); + switch ((CharacteristicPointType)characteristicPointEntity.CharacteristicPointType) { - surfaceLine.SetBottomDitchPolderSideAt(collector.Get(entity.BottomDitchPolderSidePointEntity)); + case CharacteristicPointType.DikeToeAtRiver: + surfaceLine.SetDikeToeAtRiverAt(geometryPoint); + break; + case CharacteristicPointType.DikeToeAtPolder: + surfaceLine.SetDikeToeAtPolderAt(geometryPoint); + break; + case CharacteristicPointType.DitchDikeSide: + surfaceLine.SetDitchDikeSideAt(geometryPoint); + break; + case CharacteristicPointType.BottomDitchDikeSide: + surfaceLine.SetBottomDitchDikeSideAt(geometryPoint); + break; + case CharacteristicPointType.BottomDitchPolderSide: + surfaceLine.SetBottomDitchPolderSideAt(geometryPoint); + break; + case CharacteristicPointType.DitchPolderSide: + surfaceLine.SetDitchPolderSideAt(geometryPoint); + break; + default: + throw new NotImplementedException(); } - if (entity.DikeToeAtPolderPointEntity != null) - { - surfaceLine.SetDikeToeAtPolderAt(collector.Get(entity.DikeToeAtPolderPointEntity)); - } - if (entity.DikeToeAtRiverPointEntity != null) - { - surfaceLine.SetDikeToeAtRiverAt(collector.Get(entity.DikeToeAtRiverPointEntity)); - } - if (entity.DitchDikeSidePointEntity != null) - { - surfaceLine.SetDitchDikeSideAt(collector.Get(entity.DitchDikeSidePointEntity)); - } - if (entity.DitchPolderSidePointEntity != null) - { - surfaceLine.SetDitchPolderSideAt(collector.Get(entity.DitchPolderSidePointEntity)); - } } private static void ReadSurfaceLineGeometry(this SurfaceLineEntity entity, RingtoetsPipingSurfaceLine surfaceLine, ReadConversionCollector collector) Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Update/RingtoetsPipingSurfaceLineUpdateExtensions.cs =================================================================== diff -u -r845d2b0230eca6b2e9e94a2aec3fa36bd3c916b6 -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Update/RingtoetsPipingSurfaceLineUpdateExtensions.cs (.../RingtoetsPipingSurfaceLineUpdateExtensions.cs) (revision 845d2b0230eca6b2e9e94a2aec3fa36bd3c916b6) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Update/RingtoetsPipingSurfaceLineUpdateExtensions.cs (.../RingtoetsPipingSurfaceLineUpdateExtensions.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -112,52 +112,53 @@ private static void UpdateCharacteristicPoints(RingtoetsPipingSurfaceLine surfaceLine, SurfaceLineEntity entity, UpdateConversionCollector collector) { - UpdateCharacteristicPoint(surfaceLine.BottomDitchDikeSide, - entity.BottomDitchDikeSidePointEntity, - pointEntity => entity.BottomDitchDikeSidePointEntity = pointEntity, - collector); - UpdateCharacteristicPoint(surfaceLine.BottomDitchPolderSide, - entity.BottomDitchPolderSidePointEntity, - pointEntity => entity.BottomDitchPolderSidePointEntity = pointEntity, - collector); - UpdateCharacteristicPoint(surfaceLine.DikeToeAtPolder, - entity.DikeToeAtPolderPointEntity, - pointEntity => entity.DikeToeAtPolderPointEntity = pointEntity, - collector); - UpdateCharacteristicPoint(surfaceLine.DikeToeAtRiver, - entity.DikeToeAtRiverPointEntity, - pointEntity => entity.DikeToeAtRiverPointEntity = pointEntity, - collector); - UpdateCharacteristicPoint(surfaceLine.DitchDikeSide, - entity.DitchDikeSidePointEntity, - pointEntity => entity.DitchDikeSidePointEntity = pointEntity, - collector); - UpdateCharacteristicPoint(surfaceLine.DitchPolderSide, - entity.DitchPolderSidePointEntity, - pointEntity => entity.DitchPolderSidePointEntity = pointEntity, - collector); + CharacteristicPointEntity[] currentCharacteristicPointEntities = entity.SurfaceLinePointEntities + .SelectMany(pe => pe.CharacteristicPointEntities) + .ToArray(); + + UpdateCharacteristicPoint(surfaceLine.DikeToeAtRiver, CharacteristicPointType.DikeToeAtRiver, + currentCharacteristicPointEntities, collector); + UpdateCharacteristicPoint(surfaceLine.DikeToeAtPolder, CharacteristicPointType.DikeToeAtPolder, + currentCharacteristicPointEntities, collector); + UpdateCharacteristicPoint(surfaceLine.DitchDikeSide, CharacteristicPointType.DitchDikeSide, + currentCharacteristicPointEntities, collector); + UpdateCharacteristicPoint(surfaceLine.BottomDitchDikeSide, CharacteristicPointType.BottomDitchDikeSide, + currentCharacteristicPointEntities, collector); + UpdateCharacteristicPoint(surfaceLine.BottomDitchPolderSide, CharacteristicPointType.BottomDitchPolderSide, + currentCharacteristicPointEntities, collector); + UpdateCharacteristicPoint(surfaceLine.DitchPolderSide, CharacteristicPointType.DitchPolderSide, + currentCharacteristicPointEntities, collector); } - private static void UpdateCharacteristicPoint(Point3D characteristicPoint, SurfaceLinePointEntity currentCharacteristicPointEntity, - Action replaceCharacteristicPointEntity, + private static void UpdateCharacteristicPoint(Point3D currentCharacteristicPoint, CharacteristicPointType type, + CharacteristicPointEntity[] currentCharacteristicPointEntities, UpdateConversionCollector collector) { - if (characteristicPoint == null && currentCharacteristicPointEntity != null) + short typeValue = (short)type; + CharacteristicPointEntity characteristicPointEntity = currentCharacteristicPointEntities + .FirstOrDefault(cpe => cpe.CharacteristicPointType == typeValue); + + if (currentCharacteristicPoint == null && characteristicPointEntity != null) { - replaceCharacteristicPointEntity(null); + characteristicPointEntity.SurfaceLinePointEntity = null; } - else if (characteristicPoint != null && IsEntityDifferentFromCurrentCharacteristicPoint(characteristicPoint, currentCharacteristicPointEntity)) + else if (currentCharacteristicPoint != null) { - replaceCharacteristicPointEntity(collector.GetSurfaceLinePoint(characteristicPoint)); + SurfaceLinePointEntity geometryPointEntity = collector.GetSurfaceLinePoint(currentCharacteristicPoint); + if (characteristicPointEntity == null) + { + geometryPointEntity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = typeValue + }); + } + else if (characteristicPointEntity.SurfaceLinePointEntity != geometryPointEntity) + { + characteristicPointEntity.SurfaceLinePointEntity = geometryPointEntity; + } } } - private static bool IsEntityDifferentFromCurrentCharacteristicPoint(Point3D characteristicPoint, SurfaceLinePointEntity currentCharacteristicPointEntity) - { - return currentCharacteristicPointEntity == null || - characteristicPoint.StorageId != currentCharacteristicPointEntity.SurfaceLinePointEntityId; - } - /// /// Gets the from a /// corresponding to an already saved instance. Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/RingtoetsPipingSurfaceLineCreateExtensionsTest.cs =================================================================== diff -u -r8a2d2653ceff765beecfcedab41a6be91df7d16e -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/RingtoetsPipingSurfaceLineCreateExtensionsTest.cs (.../RingtoetsPipingSurfaceLineCreateExtensionsTest.cs) (revision 8a2d2653ceff765beecfcedab41a6be91df7d16e) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/RingtoetsPipingSurfaceLineCreateExtensionsTest.cs (.../RingtoetsPipingSurfaceLineCreateExtensionsTest.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -133,12 +133,18 @@ Name = "Test" }; surfaceLine.SetGeometry(geometry); - surfaceLine.SetBottomDitchDikeSideAt(geometry[1]); - surfaceLine.SetBottomDitchPolderSideAt(geometry[2]); - surfaceLine.SetDikeToeAtPolderAt(geometry[3]); - surfaceLine.SetDikeToeAtRiverAt(geometry[4]); - surfaceLine.SetDitchDikeSideAt(geometry[5]); - surfaceLine.SetDitchPolderSideAt(geometry[6]); + const int bottomDitchDikeIndex = 1; + surfaceLine.SetBottomDitchDikeSideAt(geometry[bottomDitchDikeIndex]); + const int bottomDitchPolderIndex = 2; + surfaceLine.SetBottomDitchPolderSideAt(geometry[bottomDitchPolderIndex]); + const int toePolderIndex = 3; + surfaceLine.SetDikeToeAtPolderAt(geometry[toePolderIndex]); + const int toeDikeIndex = 4; + surfaceLine.SetDikeToeAtRiverAt(geometry[toeDikeIndex]); + const int ditchDikeIndex = 5; + surfaceLine.SetDitchDikeSideAt(geometry[ditchDikeIndex]); + const int ditchPolderIndex = 6; + surfaceLine.SetDitchPolderSideAt(geometry[ditchPolderIndex]); // Call SurfaceLineEntity entity = surfaceLine.Create(collector); @@ -159,29 +165,29 @@ Assert.AreEqual(expectedMatchingGeometryPoint.Z, pointEntity.Z); } - Assert.AreEqual(geometry[1].X, entity.BottomDitchDikeSidePointEntity.X); - Assert.AreEqual(geometry[1].Y, entity.BottomDitchDikeSidePointEntity.Y); - Assert.AreEqual(geometry[1].Z, entity.BottomDitchDikeSidePointEntity.Z); + SurfaceLinePointEntity bottomDitchDikeEntity = pointEntities[bottomDitchDikeIndex]; + Assert.AreEqual(1, bottomDitchDikeEntity.CharacteristicPointEntities.Count); + Assert.AreEqual((short)CharacteristicPointType.BottomDitchDikeSide, bottomDitchDikeEntity.CharacteristicPointEntities.First().CharacteristicPointType); - Assert.AreEqual(geometry[2].X, entity.BottomDitchPolderSidePointEntity.X); - Assert.AreEqual(geometry[2].Y, entity.BottomDitchPolderSidePointEntity.Y); - Assert.AreEqual(geometry[2].Z, entity.BottomDitchPolderSidePointEntity.Z); + SurfaceLinePointEntity bottomDitchPolderEntity = pointEntities[bottomDitchPolderIndex]; + Assert.AreEqual(1, bottomDitchPolderEntity.CharacteristicPointEntities.Count); + Assert.AreEqual((short)CharacteristicPointType.BottomDitchPolderSide, bottomDitchPolderEntity.CharacteristicPointEntities.First().CharacteristicPointType); - Assert.AreEqual(geometry[3].X, entity.DikeToeAtPolderPointEntity.X); - Assert.AreEqual(geometry[3].Y, entity.DikeToeAtPolderPointEntity.Y); - Assert.AreEqual(geometry[3].Z, entity.DikeToeAtPolderPointEntity.Z); + SurfaceLinePointEntity dikeToePolderEntity = pointEntities[toePolderIndex]; + Assert.AreEqual(1, dikeToePolderEntity.CharacteristicPointEntities.Count); + Assert.AreEqual((short)CharacteristicPointType.DikeToeAtPolder, dikeToePolderEntity.CharacteristicPointEntities.First().CharacteristicPointType); - Assert.AreEqual(geometry[4].X, entity.DikeToeAtRiverPointEntity.X); - Assert.AreEqual(geometry[4].Y, entity.DikeToeAtRiverPointEntity.Y); - Assert.AreEqual(geometry[4].Z, entity.DikeToeAtRiverPointEntity.Z); + SurfaceLinePointEntity dikeToeRiverEntity = pointEntities[toeDikeIndex]; + Assert.AreEqual(1, dikeToeRiverEntity.CharacteristicPointEntities.Count); + Assert.AreEqual((short)CharacteristicPointType.DikeToeAtRiver, dikeToeRiverEntity.CharacteristicPointEntities.First().CharacteristicPointType); - Assert.AreEqual(geometry[5].X, entity.DitchDikeSidePointEntity.X); - Assert.AreEqual(geometry[5].Y, entity.DitchDikeSidePointEntity.Y); - Assert.AreEqual(geometry[5].Z, entity.DitchDikeSidePointEntity.Z); + SurfaceLinePointEntity ditchDikeEntity = pointEntities[ditchDikeIndex]; + Assert.AreEqual(1, ditchDikeEntity.CharacteristicPointEntities.Count); + Assert.AreEqual((short)CharacteristicPointType.DitchDikeSide, ditchDikeEntity.CharacteristicPointEntities.First().CharacteristicPointType); - Assert.AreEqual(geometry[6].X, entity.DitchPolderSidePointEntity.X); - Assert.AreEqual(geometry[6].Y, entity.DitchPolderSidePointEntity.Y); - Assert.AreEqual(geometry[6].Z, entity.DitchPolderSidePointEntity.Z); + SurfaceLinePointEntity ditchPolderEntity = pointEntities[ditchPolderIndex]; + Assert.AreEqual(1, ditchPolderEntity.CharacteristicPointEntities.Count); + Assert.AreEqual((short)CharacteristicPointType.DitchPolderSide, ditchPolderEntity.CharacteristicPointEntities.First().CharacteristicPointType); Assert.AreEqual(0, entity.SurfaceLineEntityId); Assert.AreEqual(0, entity.FailureMechanismEntityId); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/RingtoetsPipingSurfaceLinePointCreateExtensionsTest.cs =================================================================== diff -u -r8a2d2653ceff765beecfcedab41a6be91df7d16e -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/RingtoetsPipingSurfaceLinePointCreateExtensionsTest.cs (.../RingtoetsPipingSurfaceLinePointCreateExtensionsTest.cs) (revision 8a2d2653ceff765beecfcedab41a6be91df7d16e) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/RingtoetsPipingSurfaceLinePointCreateExtensionsTest.cs (.../RingtoetsPipingSurfaceLinePointCreateExtensionsTest.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -65,12 +65,7 @@ Assert.AreEqual(0, entity.SurfaceLinePointEntityId); - CollectionAssert.IsEmpty(entity.BottomDitchDikeSidePointParentEntity); - CollectionAssert.IsEmpty(entity.BottomDitchPolderSidePointParentEntity); - CollectionAssert.IsEmpty(entity.DikeToeAtPolderPointParentEntity); - CollectionAssert.IsEmpty(entity.DikeToeAtRiverPointParentEntity); - CollectionAssert.IsEmpty(entity.DitchDikeSidePointParentEntity); - CollectionAssert.IsEmpty(entity.DitchPolderSidePointParentEntity); + CollectionAssert.IsEmpty(entity.CharacteristicPointEntities); Assert.IsNull(entity.SurfaceLineEntity); Assert.AreEqual(0, entity.SurfaceLineEntityId); } Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/RingtoetsPipingSurfaceLineReadExtensionsTest.cs =================================================================== diff -u -r54e6baff4fab535777949f737314f052853e818a -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/RingtoetsPipingSurfaceLineReadExtensionsTest.cs (.../RingtoetsPipingSurfaceLineReadExtensionsTest.cs) (revision 54e6baff4fab535777949f737314f052853e818a) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/RingtoetsPipingSurfaceLineReadExtensionsTest.cs (.../RingtoetsPipingSurfaceLineReadExtensionsTest.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -269,12 +269,36 @@ { entity.SurfaceLinePointEntities.Add(pointEntity); } - entity.BottomDitchDikeSidePointEntity = point2Entity; - entity.BottomDitchPolderSidePointEntity = point3Entity; - entity.DikeToeAtPolderPointEntity = point4Entity; - entity.DikeToeAtRiverPointEntity = point5Entity; - entity.DitchDikeSidePointEntity = point6Entity; - entity.DitchPolderSidePointEntity = point7Entity; + point2Entity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.BottomDitchDikeSide, + SurfaceLinePointEntity = point2Entity + }); + point3Entity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.BottomDitchPolderSide, + SurfaceLinePointEntity = point3Entity + }); + point4Entity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DikeToeAtPolder, + SurfaceLinePointEntity = point4Entity + }); + point5Entity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DikeToeAtRiver, + SurfaceLinePointEntity = point5Entity + }); + point6Entity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DitchDikeSide, + SurfaceLinePointEntity = point6Entity + }); + point7Entity.CharacteristicPointEntities.Add(new CharacteristicPointEntity + { + CharacteristicPointType = (short)CharacteristicPointType.DitchPolderSide, + SurfaceLinePointEntity = point7Entity + }); // Call RingtoetsPipingSurfaceLine surfaceLine = entity.Read(collector); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/RingtoetsPipingSurfaceLineUpdateExtensionsTest.cs =================================================================== diff -u -r845d2b0230eca6b2e9e94a2aec3fa36bd3c916b6 -r9e1b97e9540df6cbd635120135c83de0260aa6d1 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/RingtoetsPipingSurfaceLineUpdateExtensionsTest.cs (.../RingtoetsPipingSurfaceLineUpdateExtensionsTest.cs) (revision 845d2b0230eca6b2e9e94a2aec3fa36bd3c916b6) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/RingtoetsPipingSurfaceLineUpdateExtensionsTest.cs (.../RingtoetsPipingSurfaceLineUpdateExtensionsTest.cs) (revision 9e1b97e9540df6cbd635120135c83de0260aa6d1) @@ -252,40 +252,73 @@ // Assert Assert.AreEqual(surfaceLine.Points.Length, entity.SurfaceLinePointEntities.Count); + + int dikeToeRiverIndex = GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DikeToeAtRiver); + int dikeToePolderIndex = GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DikeToeAtPolder); + int ditchDikeSideIndex = GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DitchDikeSide); + int bottomDitchDikeSideIndex = GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.BottomDitchDikeSide); + int buttomDitchPolderSideIndex = GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.BottomDitchPolderSide); + int ditchPolderSide = GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DitchPolderSide); + + var surfaceLinePointEntities = entity.SurfaceLinePointEntities.OrderBy(pe => pe.Order).ToArray(); for (int i = 0; i < surfaceLine.Points.Length; i++) { Point3D geometryPoint = surfaceLine.Points[i]; - SurfaceLinePointEntity pointEntity = entity.SurfaceLinePointEntities.ElementAt(i); + SurfaceLinePointEntity pointEntity = surfaceLinePointEntities[i]; Assert.AreEqual(geometryPoint.X, pointEntity.X); Assert.AreEqual(geometryPoint.Y, pointEntity.Y); Assert.AreEqual(geometryPoint.Z, pointEntity.Z); - } - Assert.AreEqual(surfaceLine.BottomDitchDikeSide.X, entity.BottomDitchDikeSidePointEntity.X); - Assert.AreEqual(surfaceLine.BottomDitchDikeSide.Y, entity.BottomDitchDikeSidePointEntity.Y); - Assert.AreEqual(surfaceLine.BottomDitchDikeSide.Z, entity.BottomDitchDikeSidePointEntity.Z); - Assert.AreEqual(GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.BottomDitchDikeSide), entity.BottomDitchDikeSidePointEntity.Order); - Assert.AreEqual(surfaceLine.BottomDitchPolderSide.X, entity.BottomDitchPolderSidePointEntity.X); - Assert.AreEqual(surfaceLine.BottomDitchPolderSide.Y, entity.BottomDitchPolderSidePointEntity.Y); - Assert.AreEqual(surfaceLine.BottomDitchPolderSide.Z, entity.BottomDitchPolderSidePointEntity.Z); - Assert.AreEqual(GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.BottomDitchPolderSide), entity.BottomDitchPolderSidePointEntity.Order); - Assert.AreEqual(surfaceLine.DikeToeAtPolder.X, entity.DikeToeAtPolderPointEntity.X); - Assert.AreEqual(surfaceLine.DikeToeAtPolder.Y, entity.DikeToeAtPolderPointEntity.Y); - Assert.AreEqual(surfaceLine.DikeToeAtPolder.Z, entity.DikeToeAtPolderPointEntity.Z); - Assert.AreEqual(GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DikeToeAtPolder), entity.DikeToeAtPolderPointEntity.Order); - Assert.AreEqual(surfaceLine.DikeToeAtRiver.X, entity.DikeToeAtRiverPointEntity.X); - Assert.AreEqual(surfaceLine.DikeToeAtRiver.Y, entity.DikeToeAtRiverPointEntity.Y); - Assert.AreEqual(surfaceLine.DikeToeAtRiver.Z, entity.DikeToeAtRiverPointEntity.Z); - Assert.AreEqual(GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DikeToeAtRiver), entity.DikeToeAtRiverPointEntity.Order); - Assert.AreEqual(surfaceLine.DitchDikeSide.X, entity.DitchDikeSidePointEntity.X); - Assert.AreEqual(surfaceLine.DitchDikeSide.Y, entity.DitchDikeSidePointEntity.Y); - Assert.AreEqual(surfaceLine.DitchDikeSide.Z, entity.DitchDikeSidePointEntity.Z); - Assert.AreEqual(GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DitchDikeSide), entity.DitchDikeSidePointEntity.Order); - Assert.AreEqual(surfaceLine.DitchPolderSide.X, entity.DitchPolderSidePointEntity.X); - Assert.AreEqual(surfaceLine.DitchPolderSide.Y, entity.DitchPolderSidePointEntity.Y); - Assert.AreEqual(surfaceLine.DitchPolderSide.Z, entity.DitchPolderSidePointEntity.Z); - Assert.AreEqual(GetGeometryPointIndexForCharacteristicPoint(surfaceLine, surfaceLine.DitchPolderSide), entity.DitchPolderSidePointEntity.Order); + if (i == dikeToeRiverIndex) + { + Assert.AreEqual(surfaceLine.DikeToeAtRiver.X, pointEntity.X); + Assert.AreEqual(surfaceLine.DikeToeAtRiver.Y, pointEntity.Y); + Assert.AreEqual(surfaceLine.DikeToeAtRiver.Z, pointEntity.Z); + CollectionAssert.Contains(pointEntity.CharacteristicPointEntities.Select(cpe => cpe.CharacteristicPointType), + (short)CharacteristicPointType.DikeToeAtRiver); + } + if (i == dikeToePolderIndex) + { + Assert.AreEqual(surfaceLine.DikeToeAtPolder.X, pointEntity.X); + Assert.AreEqual(surfaceLine.DikeToeAtPolder.Y, pointEntity.Y); + Assert.AreEqual(surfaceLine.DikeToeAtPolder.Z, pointEntity.Z); + CollectionAssert.Contains(pointEntity.CharacteristicPointEntities.Select(cpe => cpe.CharacteristicPointType), + (short)CharacteristicPointType.DikeToeAtPolder); + } + if (i == ditchDikeSideIndex) + { + Assert.AreEqual(surfaceLine.DitchDikeSide.X, pointEntity.X); + Assert.AreEqual(surfaceLine.DitchDikeSide.Y, pointEntity.Y); + Assert.AreEqual(surfaceLine.DitchDikeSide.Z, pointEntity.Z); + CollectionAssert.Contains(pointEntity.CharacteristicPointEntities.Select(cpe => cpe.CharacteristicPointType), + (short)CharacteristicPointType.DitchDikeSide); + } + if (i == bottomDitchDikeSideIndex) + { + Assert.AreEqual(surfaceLine.BottomDitchDikeSide.X, pointEntity.X); + Assert.AreEqual(surfaceLine.BottomDitchDikeSide.Y, pointEntity.Y); + Assert.AreEqual(surfaceLine.BottomDitchDikeSide.Z, pointEntity.Z); + CollectionAssert.Contains(pointEntity.CharacteristicPointEntities.Select(cpe => cpe.CharacteristicPointType), + (short)CharacteristicPointType.BottomDitchDikeSide); + } + if (i == buttomDitchPolderSideIndex) + { + Assert.AreEqual(surfaceLine.BottomDitchPolderSide.X, pointEntity.X); + Assert.AreEqual(surfaceLine.BottomDitchPolderSide.Y, pointEntity.Y); + Assert.AreEqual(surfaceLine.BottomDitchPolderSide.Z, pointEntity.Z); + CollectionAssert.Contains(pointEntity.CharacteristicPointEntities.Select(cpe => cpe.CharacteristicPointType), + (short)CharacteristicPointType.BottomDitchPolderSide); + } + if (i == ditchPolderSide) + { + Assert.AreEqual(surfaceLine.DitchPolderSide.X, pointEntity.X); + Assert.AreEqual(surfaceLine.DitchPolderSide.Y, pointEntity.Y); + Assert.AreEqual(surfaceLine.DitchPolderSide.Z, pointEntity.Z); + CollectionAssert.Contains(pointEntity.CharacteristicPointEntities.Select(cpe => cpe.CharacteristicPointType), + (short)CharacteristicPointType.DitchPolderSide); + } + } mocks.VerifyAll(); }