Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCreateExtensions.cs =================================================================== diff -u -r14a04f6f5ad2079a2dbf88db0b762a203edb82af -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCreateExtensions.cs (.../HydraulicBoundaryLocationCreateExtensions.cs) (revision 14a04f6f5ad2079a2dbf88db0b762a203edb82af) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCreateExtensions.cs (.../HydraulicBoundaryLocationCreateExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -20,9 +20,11 @@ // All rights reserved. using System; +using Application.Ringtoets.Storage.Create.IllustrationPoints; using Application.Ringtoets.Storage.DbContext; using Core.Common.Utils.Extensions; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.Hydraulics.IllustrationPoints; namespace Application.Ringtoets.Storage.Create { @@ -78,11 +80,24 @@ { if (output != null) { - entity.HydraulicLocationOutputEntities.Add(output.Create - (outputType)); + var hydraulicLocationOutputEntity = output.Create(outputType); + CreateGeneralResultSubMechanismIllustrationPoint(hydraulicLocationOutputEntity, + output.GeneralResultSubMechanismIllustrationPoint); + + entity.HydraulicLocationOutputEntities.Add(hydraulicLocationOutputEntity); } } + private static void CreateGeneralResultSubMechanismIllustrationPoint(IHydraulicLocationOutputEntity entity, + GeneralResultSubMechanismIllustrationPoint illustrationPoint) + { + if (illustrationPoint != null) + { + entity.GeneralResultSubMechanismIllustrationPointEntity = + illustrationPoint.CreateGeneralResultSubMechanismIllustrationPointEntity(); + } + } + #region Grass CoverErosion Outwards HydraulicLocation /// @@ -131,8 +146,12 @@ { if (output != null) { - entity.GrassCoverErosionOutwardsHydraulicLocationOutputEntities.Add(output.Create - (outputType)); + var grassCoverErosionOutwardsHydraulicLocationOutputEntity = + output.Create(outputType); + CreateGeneralResultSubMechanismIllustrationPoint(grassCoverErosionOutwardsHydraulicLocationOutputEntity, + output.GeneralResultSubMechanismIllustrationPoint); + + entity.GrassCoverErosionOutwardsHydraulicLocationOutputEntities.Add(grassCoverErosionOutwardsHydraulicLocationOutputEntity); } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/GeneralResultSubMechanismIllustrationPointCreateExtensions.cs =================================================================== diff -u -r2c08730c6c2269937fa4f117aed1557876c567ea -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/GeneralResultSubMechanismIllustrationPointCreateExtensions.cs (.../GeneralResultSubMechanismIllustrationPointCreateExtensions.cs) (revision 2c08730c6c2269937fa4f117aed1557876c567ea) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/GeneralResultSubMechanismIllustrationPointCreateExtensions.cs (.../GeneralResultSubMechanismIllustrationPointCreateExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -42,7 +42,7 @@ /// A new . /// Thrown when /// is null. - public static GeneralResultSubMechanismIllustrationPointEntity CreateGeneralResultSubMechanismIllustrationPointEntity( + internal static GeneralResultSubMechanismIllustrationPointEntity CreateGeneralResultSubMechanismIllustrationPointEntity( this GeneralResultSubMechanismIllustrationPoint generalResultSubMechanismIllustrationPoint) { if (generalResultSubMechanismIllustrationPoint == null) Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/IllustrationPointResultCreateExtensions.cs =================================================================== diff -u -r54242411470f330f6f4c75d1d05bfd0911706873 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/IllustrationPointResultCreateExtensions.cs (.../IllustrationPointResultCreateExtensions.cs) (revision 54242411470f330f6f4c75d1d05bfd0911706873) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/IllustrationPointResultCreateExtensions.cs (.../IllustrationPointResultCreateExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -43,7 +43,7 @@ /// A new . /// Thrown when /// is null. - public static IllustrationPointResultEntity CreateIllustrationPointResultEntity( + internal static IllustrationPointResultEntity CreateIllustrationPointResultEntity( this IllustrationPointResult illustrationPointResult, int order) { if (illustrationPointResult == null) Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/StochastCreateExtensions.cs =================================================================== diff -u -r548ebfbd35f147dc64cb0d566fe8f30ec2a0e434 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/StochastCreateExtensions.cs (.../StochastCreateExtensions.cs) (revision 548ebfbd35f147dc64cb0d566fe8f30ec2a0e434) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/StochastCreateExtensions.cs (.../StochastCreateExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -40,7 +40,7 @@ /// A new . /// Thrown when /// is null. - public static StochastEntity CreateStochastEntity( + internal static StochastEntity CreateStochastEntity( this Stochast stochast, int order) { if (stochast == null) Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/SubMechanismIllustrationPointCreateExtensions.cs =================================================================== diff -u -r2c08730c6c2269937fa4f117aed1557876c567ea -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/SubMechanismIllustrationPointCreateExtensions.cs (.../SubMechanismIllustrationPointCreateExtensions.cs) (revision 2c08730c6c2269937fa4f117aed1557876c567ea) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/SubMechanismIllustrationPointCreateExtensions.cs (.../SubMechanismIllustrationPointCreateExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -42,7 +42,7 @@ /// A new . /// Thrown when /// is null. - public static SubMechanismIllustrationPointEntity CreateSubMechanismIllustrationPointEntity( + internal static SubMechanismIllustrationPointEntity CreateSubMechanismIllustrationPointEntity( this SubMechanismIllustrationPoint subMechanismIllustrationPoint) { if (subMechanismIllustrationPoint == null) Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/SubMechanismIllustrationPointStochastCreateExtensions.cs =================================================================== diff -u -r6a60e0e3f676c71e253ad41839519c18dd641e9e -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/SubMechanismIllustrationPointStochastCreateExtensions.cs (.../SubMechanismIllustrationPointStochastCreateExtensions.cs) (revision 6a60e0e3f676c71e253ad41839519c18dd641e9e) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/SubMechanismIllustrationPointStochastCreateExtensions.cs (.../SubMechanismIllustrationPointStochastCreateExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -41,7 +41,7 @@ /// A new . /// Thrown when /// is null. - public static SubMechanismIllustrationPointStochastEntity CreateSubMechanismIllustrationPointStochastEntity( + internal static SubMechanismIllustrationPointStochastEntity CreateSubMechanismIllustrationPointStochastEntity( this SubMechanismIllustrationPointStochast subMechanismIllustrationPointStochast, int order) { if (subMechanismIllustrationPointStochast == null) Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/TopLevelSubMechanismIllustrationPointCreateExtensions.cs =================================================================== diff -u -r560910bfaf8e8288710e0f91a0688f9e736b3edc -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/TopLevelSubMechanismIllustrationPointCreateExtensions.cs (.../TopLevelSubMechanismIllustrationPointCreateExtensions.cs) (revision 560910bfaf8e8288710e0f91a0688f9e736b3edc) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/IllustrationPoints/TopLevelSubMechanismIllustrationPointCreateExtensions.cs (.../TopLevelSubMechanismIllustrationPointCreateExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -42,7 +42,7 @@ /// A . /// Thrown when /// is null. - public static TopLevelSubMechanismIllustrationPointEntity CreateTopLevelSubMechanismIllustrationPointEntity( + internal static TopLevelSubMechanismIllustrationPointEntity CreateTopLevelSubMechanismIllustrationPointEntity( this TopLevelSubMechanismIllustrationPoint topLevelSubMechanismIllustrationPoint, int order) { Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/IHydraulicLocationOutputEntity.cs =================================================================== diff -u -r3fb0df0ed6e64657154700ee7706e035d5bf99f5 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/IHydraulicLocationOutputEntity.cs (.../IHydraulicLocationOutputEntity.cs) (revision 3fb0df0ed6e64657154700ee7706e035d5bf99f5) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/IHydraulicLocationOutputEntity.cs (.../IHydraulicLocationOutputEntity.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -62,5 +62,10 @@ /// /// byte HydraulicLocationOutputType { set; } + + /// + /// Gets or sets the general submechanism illustration point entity. + /// + GeneralResultSubMechanismIllustrationPointEntity GeneralResultSubMechanismIllustrationPointEntity { get; set; } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/PartialRingtoetsEntities.cs =================================================================== diff -u -rf909c714921a6c7c24772a7510ce5ad134f70cf5 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/PartialRingtoetsEntities.cs (.../PartialRingtoetsEntities.cs) (revision f909c714921a6c7c24772a7510ce5ad134f70cf5) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/PartialRingtoetsEntities.cs (.../PartialRingtoetsEntities.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -114,6 +114,18 @@ WaveImpactAsphaltCoverSectionResultEntities.Load(); WaveImpactAsphaltCoverWaveConditionsCalculationEntities.Load(); WaveImpactAsphaltCoverWaveConditionsOutputEntities.Load(); + + LoadIllustrationPointsIntoContext(); } + + private void LoadIllustrationPointsIntoContext() + { + GeneralResultSubMechanismIllustrationPointEntities.Load(); + StochastEntities.Load(); + TopLevelSubMechanismIllustrationPointEntities.Load(); + SubMechanismIllustrationPointEntities.Load(); + SubMechanismIllustrationPointStochastEntities.Load(); + IllustrationPointResultEntities.Load(); + } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionOutwards/GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensions.cs =================================================================== diff -u -r8bb6e849266ec28412ebfe23beccd7235c4db9bf -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionOutwards/GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensions.cs (.../GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensions.cs) (revision 8bb6e849266ec28412ebfe23beccd7235c4db9bf) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionOutwards/GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensions.cs (.../GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -22,6 +22,7 @@ using System; using System.Linq; using Application.Ringtoets.Storage.DbContext; +using Application.Ringtoets.Storage.Read.IllustrationPoints; using Ringtoets.Common.Data.Hydraulics; namespace Application.Ringtoets.Storage.Read.GrassCoverErosionOutwards @@ -55,23 +56,55 @@ entity.LocationX.ToNullAsNaN(), entity.LocationY.ToNullAsNaN()); - IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetGrassCoverErosionOutwardsHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); - if (designWaterLevelOutputEntity != null) - { - hydraulicBoundaryLocation.DesignWaterLevelCalculation.Output = designWaterLevelOutputEntity.Read(); - } + SetDesignWaterLevelCalculation(entity, hydraulicBoundaryLocation.DesignWaterLevelCalculation); + SetWaveHeightCalculation(entity, hydraulicBoundaryLocation.WaveHeightCalculation); - IHydraulicLocationOutputEntity waveHeightOutputEntity = GetGrassCoverErosionOutwardsHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.WaveHeight); + collector.Read(entity, hydraulicBoundaryLocation); + + return hydraulicBoundaryLocation; + } + + private static void SetWaveHeightCalculation(GrassCoverErosionOutwardsHydraulicLocationEntity entity, + HydraulicBoundaryLocationCalculation waveHeightCalculation) + { + waveHeightCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = + Convert.ToBoolean(entity.ShouldWaveHeightIllustrationPointsBeCalculated); + + IHydraulicLocationOutputEntity waveHeightOutputEntity = + GetGrassCoverErosionOutwardsHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.WaveHeight); if (waveHeightOutputEntity != null) { - hydraulicBoundaryLocation.WaveHeightCalculation.Output = waveHeightOutputEntity.Read(); + waveHeightCalculation.Output = waveHeightOutputEntity.Read(); + SetGeneralResultSubMechanismIllustrationPoint(waveHeightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity, + waveHeightCalculation.Output); } + } - collector.Read(entity, hydraulicBoundaryLocation); + private static void SetDesignWaterLevelCalculation(GrassCoverErosionOutwardsHydraulicLocationEntity entity, + HydraulicBoundaryLocationCalculation designWaterLevelCalculation) + { + designWaterLevelCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = + Convert.ToBoolean(entity.ShouldWaterLevelIllustrationPointsBeCalculated); - return hydraulicBoundaryLocation; + IHydraulicLocationOutputEntity designWaterLevelOutputEntity = + GetGrassCoverErosionOutwardsHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); + if (designWaterLevelOutputEntity != null) + { + designWaterLevelCalculation.Output = designWaterLevelOutputEntity.Read(); + SetGeneralResultSubMechanismIllustrationPoint(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity, + designWaterLevelCalculation.Output); + } } + private static void SetGeneralResultSubMechanismIllustrationPoint(GeneralResultSubMechanismIllustrationPointEntity entity, + HydraulicBoundaryLocationOutput hydraulicBoundaryLocationOutput) + { + if (entity != null) + { + hydraulicBoundaryLocationOutput.SetIllustrationPoints(entity.Read()); + } + } + private static IHydraulicLocationOutputEntity GetGrassCoverErosionOutwardsHydraulicLocationOutputEntity( GrassCoverErosionOutwardsHydraulicLocationEntity entity, HydraulicLocationOutputType outputType) { Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/HydraulicLocationEntityReadExtensions.cs =================================================================== diff -u -r14a04f6f5ad2079a2dbf88db0b762a203edb82af -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/HydraulicLocationEntityReadExtensions.cs (.../HydraulicLocationEntityReadExtensions.cs) (revision 14a04f6f5ad2079a2dbf88db0b762a203edb82af) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/HydraulicLocationEntityReadExtensions.cs (.../HydraulicLocationEntityReadExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -22,6 +22,7 @@ using System; using System.Linq; using Application.Ringtoets.Storage.DbContext; +using Application.Ringtoets.Storage.Read.IllustrationPoints; using Ringtoets.Common.Data.Hydraulics; namespace Application.Ringtoets.Storage.Read @@ -59,38 +60,55 @@ entity.LocationX.ToNullAsNaN(), entity.LocationY.ToNullAsNaN()); - SetDesignWaterLevelCalculation(entity, hydraulicBoundaryLocation); - SetWaveHeightCalculation(entity, hydraulicBoundaryLocation); + SetDesignWaterLevelCalculation(entity, hydraulicBoundaryLocation.DesignWaterLevelCalculation); + SetWaveHeightCalculation(entity, hydraulicBoundaryLocation.WaveHeightCalculation); collector.Read(entity, hydraulicBoundaryLocation); return hydraulicBoundaryLocation; } - private static void SetWaveHeightCalculation(HydraulicLocationEntity entity, HydraulicBoundaryLocation hydraulicBoundaryLocation) + private static void SetWaveHeightCalculation(HydraulicLocationEntity entity, + HydraulicBoundaryLocationCalculation waveHeightCalculation) { - hydraulicBoundaryLocation.WaveHeightCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = + waveHeightCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = Convert.ToBoolean(entity.ShouldWaveHeightIllustrationPointsBeCalculated); - IHydraulicLocationOutputEntity waveHeightOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.WaveHeight); + IHydraulicLocationOutputEntity waveHeightOutputEntity = + GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.WaveHeight); if (waveHeightOutputEntity != null) { - hydraulicBoundaryLocation.WaveHeightCalculation.Output = waveHeightOutputEntity.Read(); + waveHeightCalculation.Output = waveHeightOutputEntity.Read(); + SetGeneralResultSubMechanismIllustrationPoint(waveHeightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity, + waveHeightCalculation.Output); } } - private static void SetDesignWaterLevelCalculation(HydraulicLocationEntity entity, HydraulicBoundaryLocation hydraulicBoundaryLocation) + private static void SetDesignWaterLevelCalculation(HydraulicLocationEntity entity, + HydraulicBoundaryLocationCalculation designWaterLevelCalculation) { - hydraulicBoundaryLocation.DesignWaterLevelCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = + designWaterLevelCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = Convert.ToBoolean(entity.ShouldWaterLevelIllustrationPointsBeCalculated); - IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); + IHydraulicLocationOutputEntity designWaterLevelOutputEntity = + GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); if (designWaterLevelOutputEntity != null) { - hydraulicBoundaryLocation.DesignWaterLevelCalculation.Output = designWaterLevelOutputEntity.Read(); + designWaterLevelCalculation.Output = designWaterLevelOutputEntity.Read(); + SetGeneralResultSubMechanismIllustrationPoint(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity, + designWaterLevelCalculation.Output); } } + private static void SetGeneralResultSubMechanismIllustrationPoint(GeneralResultSubMechanismIllustrationPointEntity entity, + HydraulicBoundaryLocationOutput hydraulicBoundaryLocationOutput) + { + if (entity != null) + { + hydraulicBoundaryLocationOutput.SetIllustrationPoints(entity.Read()); + } + } + private static IHydraulicLocationOutputEntity GetHydraulicLocationOutputEntity( HydraulicLocationEntity entity, HydraulicLocationOutputType outputType) { Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/IIllustrationPointResultEntityReadExtensions.cs =================================================================== diff -u -r548ebfbd35f147dc64cb0d566fe8f30ec2a0e434 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/IIllustrationPointResultEntityReadExtensions.cs (.../IIllustrationPointResultEntityReadExtensions.cs) (revision 548ebfbd35f147dc64cb0d566fe8f30ec2a0e434) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/IIllustrationPointResultEntityReadExtensions.cs (.../IIllustrationPointResultEntityReadExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -39,7 +39,7 @@ /// for. /// A new . /// Thrown when is null. - public static IllustrationPointResult Read(this IllustrationPointResultEntity entity) + internal static IllustrationPointResult Read(this IllustrationPointResultEntity entity) { if (entity == null) { Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/StochastEntityReadExtensions.cs =================================================================== diff -u -r69586fc2b854c415c0472d56da2f7f6e0888c184 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/StochastEntityReadExtensions.cs (.../StochastEntityReadExtensions.cs) (revision 69586fc2b854c415c0472d56da2f7f6e0888c184) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/StochastEntityReadExtensions.cs (.../StochastEntityReadExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -36,7 +36,7 @@ /// The to create for. /// A new . /// Thrown when is null. - public static Stochast Read(this StochastEntity entity) + internal static Stochast Read(this StochastEntity entity) { if (entity == null) { Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/SubMechanismIllustrationPointEntityReadExtensions.cs =================================================================== diff -u -r6a60e0e3f676c71e253ad41839519c18dd641e9e -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/SubMechanismIllustrationPointEntityReadExtensions.cs (.../SubMechanismIllustrationPointEntityReadExtensions.cs) (revision 6a60e0e3f676c71e253ad41839519c18dd641e9e) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/SubMechanismIllustrationPointEntityReadExtensions.cs (.../SubMechanismIllustrationPointEntityReadExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -42,7 +42,7 @@ /// A new . /// Thrown when /// is null. - public static SubMechanismIllustrationPoint Read(this SubMechanismIllustrationPointEntity entity) + internal static SubMechanismIllustrationPoint Read(this SubMechanismIllustrationPointEntity entity) { if (entity == null) { Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/SubMechanismIllustrationPointStochastEntityReadExtensions.cs =================================================================== diff -u -r6a60e0e3f676c71e253ad41839519c18dd641e9e -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/SubMechanismIllustrationPointStochastEntityReadExtensions.cs (.../SubMechanismIllustrationPointStochastEntityReadExtensions.cs) (revision 6a60e0e3f676c71e253ad41839519c18dd641e9e) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/SubMechanismIllustrationPointStochastEntityReadExtensions.cs (.../SubMechanismIllustrationPointStochastEntityReadExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -39,7 +39,7 @@ /// for. /// A new . /// Thrown when is null. - public static SubMechanismIllustrationPointStochast Read(this SubMechanismIllustrationPointStochastEntity entity) + internal static SubMechanismIllustrationPointStochast Read(this SubMechanismIllustrationPointStochastEntity entity) { if (entity == null) { Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/TopLevelSubMechanismIllustrationPointReadExtensions.cs =================================================================== diff -u -r69586fc2b854c415c0472d56da2f7f6e0888c184 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/TopLevelSubMechanismIllustrationPointReadExtensions.cs (.../TopLevelSubMechanismIllustrationPointReadExtensions.cs) (revision 69586fc2b854c415c0472d56da2f7f6e0888c184) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/IllustrationPoints/TopLevelSubMechanismIllustrationPointReadExtensions.cs (.../TopLevelSubMechanismIllustrationPointReadExtensions.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -40,7 +40,7 @@ /// A new . /// Thrown when /// is null. - public static TopLevelSubMechanismIllustrationPoint Read(this TopLevelSubMechanismIllustrationPointEntity entity) + internal static TopLevelSubMechanismIllustrationPoint Read(this TopLevelSubMechanismIllustrationPointEntity entity) { if (entity == null) { Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCreateExtensionsTest.cs =================================================================== diff -u -r14a04f6f5ad2079a2dbf88db0b762a203edb82af -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCreateExtensionsTest.cs) (revision 14a04f6f5ad2079a2dbf88db0b762a203edb82af) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCreateExtensionsTest.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -26,7 +26,9 @@ using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.Hydraulics.IllustrationPoints; using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.Data.TestUtil.IllustrationPoints; namespace Application.Ringtoets.Storage.Test.Create { @@ -148,13 +150,73 @@ IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); Assert.IsNotNull(designWaterLevelOutputEntity); AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, designWaterLevelOutputEntity); + Assert.IsNull(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); IHydraulicLocationOutputEntity waveheightOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); Assert.IsNotNull(waveheightOutputEntity); AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, waveheightOutputEntity); + Assert.IsNull(waveheightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); } [Test] + public void Create_WithPersistenceRegistryAndIllustrationPoints_ReturnsHydraulicLocationEntityWithOutputAndIllustrationPointsSet() + { + // Setup + var random = new Random(21); + var hydraulicBoundaryLocationDesignWaterLevelOutput = new HydraulicBoundaryLocationOutput( + random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextEnumValue()); + hydraulicBoundaryLocationDesignWaterLevelOutput.SetIllustrationPoints(new TestGeneralResultSubMechanismIllustrationPoint()); + + var hydraulicBoundaryLocationWaveHeightOutput = new HydraulicBoundaryLocationOutput( + random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextEnumValue()); + hydraulicBoundaryLocationWaveHeightOutput.SetIllustrationPoints(new TestGeneralResultSubMechanismIllustrationPoint()); + + bool shouldIllustrationPointsBeCalculated = random.NextBoolean(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(-1, "testName", random.NextDouble(), random.NextDouble()) + { + DesignWaterLevelCalculation = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated + }, + Output = hydraulicBoundaryLocationDesignWaterLevelOutput + }, + WaveHeightCalculation = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated + }, + Output = hydraulicBoundaryLocationWaveHeightOutput + } + }; + var registry = new PersistenceRegistry(); + + // Call + HydraulicLocationEntity entity = hydraulicBoundaryLocation.Create(registry, 0); + + // Assert + Assert.IsNotNull(entity); + + IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); + Assert.IsNotNull(designWaterLevelOutputEntity); + AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, designWaterLevelOutputEntity); + Assert.IsNotNull(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + AssertGeneralResultSubMechanismIllustrationPoint(hydraulicBoundaryLocationDesignWaterLevelOutput.GeneralResultSubMechanismIllustrationPoint, + designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + + IHydraulicLocationOutputEntity waveheightOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); + Assert.IsNotNull(waveheightOutputEntity); + AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, waveheightOutputEntity); + Assert.IsNotNull(waveheightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + AssertGeneralResultSubMechanismIllustrationPoint(hydraulicBoundaryLocationWaveHeightOutput.GeneralResultSubMechanismIllustrationPoint, + waveheightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + } + + [Test] public void Create_HydraulicBoundaryLocationSavedMultipleTimes_ReturnSameEntity() { // Setup @@ -285,13 +347,73 @@ IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); Assert.IsNotNull(designWaterLevelOutputEntity); AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, designWaterLevelOutputEntity); + Assert.IsNull(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); IHydraulicLocationOutputEntity waveheightOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); Assert.IsNotNull(waveheightOutputEntity); AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, waveheightOutputEntity); + Assert.IsNull(waveheightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); } [Test] + public void CreateGrassCoverErosionOutwardsHydraulicBoundaryLocation_WithPersistenceRegistryAndIllustrationPoints_ReturnsGrassCoverErosionOutwardsHydraulicLocationEntityWithOutputAndIllustrationPointsSet() + { + // Setup + var random = new Random(21); + var hydraulicBoundaryLocationDesignWaterLevelOutput = new HydraulicBoundaryLocationOutput( + random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextEnumValue()); + hydraulicBoundaryLocationDesignWaterLevelOutput.SetIllustrationPoints(new TestGeneralResultSubMechanismIllustrationPoint()); + + var hydraulicBoundaryLocationWaveHeightOutput = new HydraulicBoundaryLocationOutput( + random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextEnumValue()); + hydraulicBoundaryLocationWaveHeightOutput.SetIllustrationPoints(new TestGeneralResultSubMechanismIllustrationPoint()); + + bool shouldIllustrationPointsBeCalculated = random.NextBoolean(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(-1, "testName", random.NextDouble(), random.NextDouble()) + { + DesignWaterLevelCalculation = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated + }, + Output = hydraulicBoundaryLocationDesignWaterLevelOutput + }, + WaveHeightCalculation = + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = shouldIllustrationPointsBeCalculated + }, + Output = hydraulicBoundaryLocationWaveHeightOutput + } + }; + var registry = new PersistenceRegistry(); + + // Call + GrassCoverErosionOutwardsHydraulicLocationEntity entity = + hydraulicBoundaryLocation.CreateGrassCoverErosionOutwardsHydraulicBoundaryLocation(registry, 0); + + // Assert + Assert.IsNotNull(entity); + IHydraulicLocationOutputEntity designWaterLevelOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); + Assert.IsNotNull(designWaterLevelOutputEntity); + AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, designWaterLevelOutputEntity); + Assert.IsNotNull(designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + AssertGeneralResultSubMechanismIllustrationPoint(hydraulicBoundaryLocationWaveHeightOutput.GeneralResultSubMechanismIllustrationPoint, + designWaterLevelOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + + IHydraulicLocationOutputEntity waveheightOutputEntity = GetHydraulicLocationOutputEntity(entity, HydraulicLocationOutputType.DesignWaterLevel); + Assert.IsNotNull(waveheightOutputEntity); + AssertHydraulicBoundaryLocationOutput(hydraulicBoundaryLocationDesignWaterLevelOutput, waveheightOutputEntity); + Assert.IsNotNull(waveheightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + AssertGeneralResultSubMechanismIllustrationPoint(hydraulicBoundaryLocationWaveHeightOutput.GeneralResultSubMechanismIllustrationPoint, + waveheightOutputEntity.GeneralResultSubMechanismIllustrationPointEntity); + } + + [Test] public void CreateGrassCoverErosionOutwardsHydraulicBoundaryLocation_HydraulicBoundaryLocationSavedMultipleTimes_ReturnSameEntity() { // Setup @@ -332,5 +454,18 @@ Assert.AreEqual(output.CalculatedReliability, entity.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); Assert.AreEqual(output.CalculationConvergence, (CalculationConvergence) entity.CalculationConvergence); } + + private static void AssertGeneralResultSubMechanismIllustrationPoint(GeneralResultSubMechanismIllustrationPoint illustrationPoint, + GeneralResultSubMechanismIllustrationPointEntity entity) + { + WindDirection governingWindDirection = illustrationPoint.GoverningWindDirection; + TestHelper.AssertAreEqualButNotSame(governingWindDirection.Name, entity.GoverningWindDirectionName); + Assert.AreEqual(governingWindDirection.Angle, entity.GoverningWindDirectionAngle, + governingWindDirection.Angle.GetAccuracy()); + + Assert.AreEqual(illustrationPoint.Stochasts.Count(), entity.StochastEntities.Count); + Assert.AreEqual(illustrationPoint.TopLevelSubMechanismIllustrationPoints.Count(), + entity.TopLevelSubMechanismIllustrationPointEntities.Count); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationOutputCreateExtensionsTest.cs =================================================================== diff -u -r3fb0df0ed6e64657154700ee7706e035d5bf99f5 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationOutputCreateExtensionsTest.cs (.../HydraulicBoundaryLocationOutputCreateExtensionsTest.cs) (revision 3fb0df0ed6e64657154700ee7706e035d5bf99f5) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationOutputCreateExtensionsTest.cs (.../HydraulicBoundaryLocationOutputCreateExtensionsTest.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -55,6 +55,7 @@ Assert.AreEqual(output.CalculatedProbability, entity.CalculatedProbability); Assert.AreEqual(output.CalculatedReliability, entity.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); Assert.AreEqual((byte) output.CalculationConvergence, entity.CalculationConvergence); + Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity); } [Test] @@ -79,6 +80,7 @@ Assert.IsNull(entity.CalculatedProbability); Assert.IsNull(entity.CalculatedReliability); Assert.AreEqual((byte) output.CalculationConvergence, entity.CalculationConvergence); + Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity); } [Test] @@ -104,6 +106,7 @@ Assert.AreEqual(output.CalculatedProbability, entity.CalculatedProbability); Assert.AreEqual(output.CalculatedReliability, entity.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); Assert.AreEqual((byte) output.CalculationConvergence, entity.CalculationConvergence); + Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity); } [Test] @@ -129,6 +132,7 @@ Assert.IsNull(entity.CalculatedProbability); Assert.IsNull(entity.CalculatedReliability); Assert.AreEqual((byte) output.CalculationConvergence, entity.CalculationConvergence); + Assert.IsNull(entity.GeneralResultSubMechanismIllustrationPointEntity); } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionOutwards/GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensionsTest.cs =================================================================== diff -u -r8bb6e849266ec28412ebfe23beccd7235c4db9bf -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionOutwards/GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensionsTest.cs (.../GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensionsTest.cs) (revision 8bb6e849266ec28412ebfe23beccd7235c4db9bf) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionOutwards/GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensionsTest.cs (.../GrassCoverErosionOutwardsHydraulicLocationEntityReadExtensionsTest.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -24,6 +24,7 @@ using Application.Ringtoets.Storage.Read; using Application.Ringtoets.Storage.Read.GrassCoverErosionOutwards; using Core.Common.Base.Data; +using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; @@ -56,12 +57,16 @@ const string testName = "testName"; double x = random.NextDouble(); double y = random.NextDouble(); + bool shouldDesignWaterLevelIllustrationPointsBeCalculated = random.NextBoolean(); + bool shouldWaveHeightIllustrationPointsBeCalculated = random.NextBoolean(); var entity = new GrassCoverErosionOutwardsHydraulicLocationEntity { LocationId = testId, Name = testName, LocationX = x, - LocationY = y + LocationY = y, + ShouldWaterLevelIllustrationPointsBeCalculated = Convert.ToByte(shouldDesignWaterLevelIllustrationPointsBeCalculated), + ShouldWaveHeightIllustrationPointsBeCalculated = Convert.ToByte(shouldWaveHeightIllustrationPointsBeCalculated) }; var collector = new ReadConversionCollector(); @@ -75,9 +80,15 @@ Assert.AreEqual(testName, location.Name); Assert.AreEqual(x, location.Location.X, 1e-6); Assert.AreEqual(y, location.Location.Y, 1e-6); - Assert.IsFalse(location.DesignWaterLevelCalculation.HasOutput); - Assert.IsFalse(location.WaveHeightCalculation.HasOutput); + HydraulicBoundaryLocationCalculation designWaterLevelCalculation = location.DesignWaterLevelCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldDesignWaterLevelIllustrationPointsBeCalculated, designWaterLevelCalculation); + Assert.IsFalse(designWaterLevelCalculation.HasOutput); + + HydraulicBoundaryLocationCalculation waveHeightCalculation = location.WaveHeightCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldWaveHeightIllustrationPointsBeCalculated, waveHeightCalculation); + Assert.IsFalse(waveHeightCalculation.HasOutput); + Assert.IsTrue(collector.Contains(entity)); } @@ -132,6 +143,83 @@ } [Test] + public void Read_WithOutputAndIllustrationPoints_ReturnHydraulicBoundaryLocationWithExpectedOutputAndIllustrationPoints() + { + // Setup + var random = new Random(21); + + const string windDirectionName = "Some wind direction"; + double windDirectionAngle = random.NextDouble(); + var designWaterLevelIllustrationPointEntity = new GeneralResultSubMechanismIllustrationPointEntity + { + GoverningWindDirectionName = windDirectionName, + GoverningWindDirectionAngle = windDirectionAngle + }; + var waveHeightIllustrationPointEntity = new GeneralResultSubMechanismIllustrationPointEntity + { + GoverningWindDirectionName = windDirectionName, + GoverningWindDirectionAngle = windDirectionAngle + }; + + double designWaterLevel = random.NextDouble(); + double waveHeight = random.NextDouble(); + var designWaterLevelOutputEntity = new GrassCoverErosionOutwardsHydraulicLocationOutputEntity + { + HydraulicLocationOutputType = (byte) HydraulicLocationOutputType.DesignWaterLevel, + Result = designWaterLevel, + TargetProbability = random.NextDouble(), + TargetReliability = random.NextDouble(), + CalculatedProbability = random.NextDouble(), + CalculatedReliability = random.NextDouble(), + CalculationConvergence = (byte) CalculationConvergence.NotCalculated, + GeneralResultSubMechanismIllustrationPointEntity = designWaterLevelIllustrationPointEntity + }; + var waveheightOutputEntity = new GrassCoverErosionOutwardsHydraulicLocationOutputEntity + { + HydraulicLocationOutputType = (byte) HydraulicLocationOutputType.WaveHeight, + Result = waveHeight, + TargetProbability = random.NextDouble(), + TargetReliability = random.NextDouble(), + CalculatedProbability = random.NextDouble(), + CalculatedReliability = random.NextDouble(), + CalculationConvergence = (byte) CalculationConvergence.NotCalculated, + GeneralResultSubMechanismIllustrationPointEntity = waveHeightIllustrationPointEntity + }; + + bool shouldDesignWaterLevelIllustrationPointsBeCalculated = random.NextBoolean(); + bool shouldWaveHeightIllustrationPointsBeCalculated = random.NextBoolean(); + var entity = new GrassCoverErosionOutwardsHydraulicLocationEntity + { + Name = "someName", + ShouldWaterLevelIllustrationPointsBeCalculated = Convert.ToByte(shouldDesignWaterLevelIllustrationPointsBeCalculated), + ShouldWaveHeightIllustrationPointsBeCalculated = Convert.ToByte(shouldWaveHeightIllustrationPointsBeCalculated), + GrassCoverErosionOutwardsHydraulicLocationOutputEntities = + { + designWaterLevelOutputEntity, + waveheightOutputEntity + } + }; + + var collector = new ReadConversionCollector(); + + // Call + HydraulicBoundaryLocation location = entity.Read(collector); + + // Assert + Assert.IsNotNull(location); + Assert.AreEqual((RoundedDouble) designWaterLevel, location.DesignWaterLevel, location.DesignWaterLevel.GetAccuracy()); + Assert.AreEqual((RoundedDouble) waveHeight, location.WaveHeight, location.WaveHeight.GetAccuracy()); + + HydraulicBoundaryLocationCalculation designWaterLevelCalculation = location.DesignWaterLevelCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldDesignWaterLevelIllustrationPointsBeCalculated, designWaterLevelCalculation); + AssertHydraulicBoundaryLocationOutput(designWaterLevelOutputEntity, location.DesignWaterLevelCalculation.Output); + + HydraulicBoundaryLocationCalculation waveHeightCalculation = location.WaveHeightCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldWaveHeightIllustrationPointsBeCalculated, waveHeightCalculation); + AssertHydraulicBoundaryLocationOutput(waveheightOutputEntity, location.WaveHeightCalculation.Output); + } + + [Test] public void Read_SameHydraulicLocationEntityTwice_ReturnSameHydraulicBoundaryLocation() { // Setup @@ -150,6 +238,12 @@ Assert.AreSame(location1, location2); } + private static void AssertShouldIllustrationPointsBeCalculated(bool shouldIllustrationPointsBeCalculated, + HydraulicBoundaryLocationCalculation calculation) + { + Assert.AreEqual(shouldIllustrationPointsBeCalculated, calculation.InputParameters.ShouldIllustrationPointsBeCalculated); + } + private static void AssertHydraulicBoundaryLocationOutput(IHydraulicLocationOutputEntity expected, HydraulicBoundaryLocationOutput actual) { if (expected == null) Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/HydraulicLocationEntityReadExtensionsTest.cs =================================================================== diff -u -r14a04f6f5ad2079a2dbf88db0b762a203edb82af -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/HydraulicLocationEntityReadExtensionsTest.cs (.../HydraulicLocationEntityReadExtensionsTest.cs) (revision 14a04f6f5ad2079a2dbf88db0b762a203edb82af) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/HydraulicLocationEntityReadExtensionsTest.cs (.../HydraulicLocationEntityReadExtensionsTest.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -20,12 +20,14 @@ // All rights reserved. using System; +using System.Linq; using Application.Ringtoets.Storage.DbContext; using Application.Ringtoets.Storage.Read; using Core.Common.Base.Data; using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.Hydraulics.IllustrationPoints; using Ringtoets.Common.Data.TestUtil; namespace Application.Ringtoets.Storage.Test.Read @@ -95,11 +97,13 @@ Assert.AreEqual(x, location.Location.X, 1e-6); Assert.AreEqual(y, location.Location.Y, 1e-6); - AssertHydraulicBoundaryLocationCalculation(shouldDesignWaterLevelIllustrationPointsBeCalculated, location.DesignWaterLevelCalculation); - AssertHydraulicBoundaryLocationCalculation(shouldWaveHeightIllustrationPointsBeCalculated, location.WaveHeightCalculation); + HydraulicBoundaryLocationCalculation designWaterLevelCalculation = location.DesignWaterLevelCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldDesignWaterLevelIllustrationPointsBeCalculated, designWaterLevelCalculation); + Assert.IsFalse(designWaterLevelCalculation.HasOutput); - Assert.IsFalse(location.DesignWaterLevelCalculation.HasOutput); - Assert.IsFalse(location.WaveHeightCalculation.HasOutput); + HydraulicBoundaryLocationCalculation waveHeightCalculation = location.WaveHeightCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldWaveHeightIllustrationPointsBeCalculated, waveHeightCalculation); + Assert.IsFalse(waveHeightCalculation.HasOutput); Assert.IsTrue(collector.Contains(entity)); } @@ -131,9 +135,14 @@ CalculatedReliability = random.NextDouble(), CalculationConvergence = (byte) CalculationConvergence.NotCalculated }; + + bool shouldDesignWaterLevelIllustrationPointsBeCalculated = random.NextBoolean(); + bool shouldWaveHeightIllustrationPointsBeCalculated = random.NextBoolean(); var entity = new HydraulicLocationEntity { Name = "someName", + ShouldWaterLevelIllustrationPointsBeCalculated = Convert.ToByte(shouldDesignWaterLevelIllustrationPointsBeCalculated), + ShouldWaveHeightIllustrationPointsBeCalculated = Convert.ToByte(shouldWaveHeightIllustrationPointsBeCalculated), HydraulicLocationOutputEntities = { designWaterLevelOutputEntity, @@ -150,11 +159,94 @@ Assert.IsNotNull(location); Assert.AreEqual((RoundedDouble) designWaterLevel, location.DesignWaterLevel, location.DesignWaterLevel.GetAccuracy()); Assert.AreEqual((RoundedDouble) waveHeight, location.WaveHeight, location.WaveHeight.GetAccuracy()); + + HydraulicBoundaryLocationCalculation designWaterLevelCalculation = location.DesignWaterLevelCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldDesignWaterLevelIllustrationPointsBeCalculated, designWaterLevelCalculation); AssertHydraulicBoundaryLocationOutput(designWaterLevelOutputEntity, location.DesignWaterLevelCalculation.Output); + + HydraulicBoundaryLocationCalculation waveHeightCalculation = location.WaveHeightCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldWaveHeightIllustrationPointsBeCalculated, waveHeightCalculation); AssertHydraulicBoundaryLocationOutput(waveheightOutputEntity, location.WaveHeightCalculation.Output); } [Test] + public void Read_WithOutputAndIllustrationPoints_ReturnHydraulicBoundaryLocationWithExpectedOutputAndIllustrationPoints() + { + // Setup + var random = new Random(21); + + const string windDirectionName = "Some wind direction"; + double windDirectionAngle = random.NextDouble(); + var designWaterLevelIllustrationPointEntity = new GeneralResultSubMechanismIllustrationPointEntity + { + GoverningWindDirectionName = windDirectionName, + GoverningWindDirectionAngle = windDirectionAngle + }; + var waveHeightIllustrationPointEntity = new GeneralResultSubMechanismIllustrationPointEntity + { + GoverningWindDirectionName = windDirectionName, + GoverningWindDirectionAngle = windDirectionAngle + }; + + double designWaterLevel = random.NextDouble(); + double waveHeight = random.NextDouble(); + var designWaterLevelOutputEntity = new HydraulicLocationOutputEntity + { + HydraulicLocationOutputType = (byte) HydraulicLocationOutputType.DesignWaterLevel, + Result = designWaterLevel, + TargetProbability = random.NextDouble(), + TargetReliability = random.NextDouble(), + CalculatedProbability = random.NextDouble(), + CalculatedReliability = random.NextDouble(), + CalculationConvergence = (byte) CalculationConvergence.NotCalculated, + GeneralResultSubMechanismIllustrationPointEntity = designWaterLevelIllustrationPointEntity + }; + var waveheightOutputEntity = new HydraulicLocationOutputEntity + { + HydraulicLocationOutputType = (byte) HydraulicLocationOutputType.WaveHeight, + Result = waveHeight, + TargetProbability = random.NextDouble(), + TargetReliability = random.NextDouble(), + CalculatedProbability = random.NextDouble(), + CalculatedReliability = random.NextDouble(), + CalculationConvergence = (byte) CalculationConvergence.NotCalculated, + GeneralResultSubMechanismIllustrationPointEntity = waveHeightIllustrationPointEntity + }; + + bool shouldDesignWaterLevelIllustrationPointsBeCalculated = random.NextBoolean(); + bool shouldWaveHeightIllustrationPointsBeCalculated = random.NextBoolean(); + var entity = new HydraulicLocationEntity + { + Name = "someName", + ShouldWaterLevelIllustrationPointsBeCalculated = Convert.ToByte(shouldDesignWaterLevelIllustrationPointsBeCalculated), + ShouldWaveHeightIllustrationPointsBeCalculated = Convert.ToByte(shouldWaveHeightIllustrationPointsBeCalculated), + HydraulicLocationOutputEntities = + { + designWaterLevelOutputEntity, + waveheightOutputEntity + } + }; + + var collector = new ReadConversionCollector(); + + // Call + HydraulicBoundaryLocation location = entity.Read(collector); + + // Assert + Assert.IsNotNull(location); + Assert.AreEqual((RoundedDouble) designWaterLevel, location.DesignWaterLevel, location.DesignWaterLevel.GetAccuracy()); + Assert.AreEqual((RoundedDouble) waveHeight, location.WaveHeight, location.WaveHeight.GetAccuracy()); + + HydraulicBoundaryLocationCalculation designWaterLevelCalculation = location.DesignWaterLevelCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldDesignWaterLevelIllustrationPointsBeCalculated, designWaterLevelCalculation); + AssertHydraulicBoundaryLocationOutput(designWaterLevelOutputEntity, location.DesignWaterLevelCalculation.Output); + + HydraulicBoundaryLocationCalculation waveHeightCalculation = location.WaveHeightCalculation; + AssertShouldIllustrationPointsBeCalculated(shouldWaveHeightIllustrationPointsBeCalculated, waveHeightCalculation); + AssertHydraulicBoundaryLocationOutput(waveheightOutputEntity, location.WaveHeightCalculation.Output); + } + + [Test] public void Read_SameHydraulicLocationEntityTwice_ReturnSameHydraulicBoundaryLocation() { // Setup @@ -173,10 +265,10 @@ Assert.AreSame(location1, location2); } - private static void AssertHydraulicBoundaryLocationCalculation(bool shouldDesignWaterLevelIllustrationPointsBeCalculated, + private static void AssertShouldIllustrationPointsBeCalculated(bool shouldIllustrationPointsBeCalculated, HydraulicBoundaryLocationCalculation calculation) { - Assert.AreEqual(shouldDesignWaterLevelIllustrationPointsBeCalculated, calculation.InputParameters.ShouldIllustrationPointsBeCalculated); + Assert.AreEqual(shouldIllustrationPointsBeCalculated, calculation.InputParameters.ShouldIllustrationPointsBeCalculated); } private static void AssertHydraulicBoundaryLocationOutput(IHydraulicLocationOutputEntity expected, HydraulicBoundaryLocationOutput actual) @@ -197,6 +289,28 @@ Assert.IsNotNull(expected.CalculatedProbability); Assert.AreEqual(expected.CalculatedProbability, actual.CalculatedProbability); Assert.AreEqual((CalculationConvergence) expected.CalculationConvergence, actual.CalculationConvergence); + + AssertGeneralResultSubMechanismIllustrationPoint(expected.GeneralResultSubMechanismIllustrationPointEntity, + actual.GeneralResultSubMechanismIllustrationPoint); } + + private static void AssertGeneralResultSubMechanismIllustrationPoint(GeneralResultSubMechanismIllustrationPointEntity expected, + GeneralResultSubMechanismIllustrationPoint illustrationPoint) + { + if (expected == null) + { + Assert.IsNull(illustrationPoint); + return; + } + + WindDirection actualGoverningWindDirection = illustrationPoint.GoverningWindDirection; + Assert.AreEqual(expected.GoverningWindDirectionName, actualGoverningWindDirection.Name); + Assert.AreEqual(expected.GoverningWindDirectionAngle, actualGoverningWindDirection.Angle, + actualGoverningWindDirection.Angle.GetAccuracy()); + + Assert.AreEqual(expected.TopLevelSubMechanismIllustrationPointEntities.Count, + illustrationPoint.TopLevelSubMechanismIllustrationPoints.Count()); + Assert.AreEqual(expected.StochastEntities.Count, illustrationPoint.Stochasts.Count()); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/IHydraulicLocationOutputEntityReadExtensionsTest.cs =================================================================== diff -u -r3fb0df0ed6e64657154700ee7706e035d5bf99f5 -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/IHydraulicLocationOutputEntityReadExtensionsTest.cs (.../IHydraulicLocationOutputEntityReadExtensionsTest.cs) (revision 3fb0df0ed6e64657154700ee7706e035d5bf99f5) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/IHydraulicLocationOutputEntityReadExtensionsTest.cs (.../IHydraulicLocationOutputEntityReadExtensionsTest.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -67,6 +67,7 @@ Assert.AreEqual(calculatedProbability, output.CalculatedProbability); Assert.AreEqual((RoundedDouble) calculatedReliability, output.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); Assert.AreEqual(convergence, output.CalculationConvergence); + Assert.IsNull(output.GeneralResultSubMechanismIllustrationPoint); } [Test] @@ -95,6 +96,7 @@ Assert.IsNaN(output.CalculatedProbability); Assert.IsNaN(output.CalculatedReliability); Assert.AreEqual(convergence, output.CalculationConvergence); + Assert.IsNull(output.GeneralResultSubMechanismIllustrationPoint); } private class TestHydraulicLocationOutputEntity : IHydraulicLocationOutputEntity @@ -106,6 +108,7 @@ public double? CalculatedReliability { get; set; } public byte CalculationConvergence { get; set; } public byte HydraulicLocationOutputType { get; set; } + public GeneralResultSubMechanismIllustrationPointEntity GeneralResultSubMechanismIllustrationPointEntity { get; set; } } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/HydraulicBoundaryLocationProperties.cs =================================================================== diff -u -r8ba742d2139563c9571e32f074c7c4b3077f45ee -r5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/HydraulicBoundaryLocationProperties.cs (.../HydraulicBoundaryLocationProperties.cs) (revision 8ba742d2139563c9571e32f074c7c4b3077f45ee) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/HydraulicBoundaryLocationProperties.cs (.../HydraulicBoundaryLocationProperties.cs) (revision 5b6acfd4bce67d0c0969ad4e6e3df0bd801d6632) @@ -207,7 +207,7 @@ } /// - /// Gets the general result with the submec illustration points result. + /// Gets the general result with the submechanism illustration points result. /// /// The general illustration points if it has obtained as part of the calculation, null /// otherwise.