Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PipingCalculationConfigurationHelper.cs
===================================================================
diff -u -r7ae9100ff4e61169edcefaeb01b72d492431742f -r022f34b88de641b0b3b263b8eef61f57980f7891
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PipingCalculationConfigurationHelper.cs (.../PipingCalculationConfigurationHelper.cs) (revision 7ae9100ff4e61169edcefaeb01b72d492431742f)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PipingCalculationConfigurationHelper.cs (.../PipingCalculationConfigurationHelper.cs) (revision 022f34b88de641b0b3b263b8eef61f57980f7891)
@@ -26,7 +26,9 @@
using Core.Common.Base.Geometry;
using log4net;
using Ringtoets.Common.Data.Calculation;
+using Ringtoets.Common.Data.Hydraulics;
using Ringtoets.Common.Forms.Helpers;
+using Ringtoets.Common.Forms.UITypeEditors;
using Ringtoets.Piping.Data;
using Ringtoets.Piping.Forms.Properties;
using Ringtoets.Piping.Primitives;
@@ -111,6 +113,24 @@
.ToList();
}
+ ///
+ /// Gets the sorted selectable hydraulic boundary locations from .
+ ///
+ /// The available hydraulic boudnary locations.
+ /// The reference point to which the distance needs to be
+ /// calculated in .
+ /// An ordered list of selectable hydraulic boundary locations.
+ public static IEnumerable GetSelectableHydraulicBoundaryLocations(
+ IEnumerable hydraulicBoundaryLocations, RingtoetsPipingSurfaceLine surfaceLine)
+ {
+ Point2D referencePoint = surfaceLine != null
+ ? surfaceLine.ReferenceLineIntersectionWorldPoint
+ : null;
+ return hydraulicBoundaryLocations.Select(hbl => new SelectableHydraulicBoundaryLocation(hbl, referencePoint))
+ .OrderBy(hbl => hbl.Distance)
+ .ThenBy(hbl => hbl.HydraulicBoundaryLocation.Id);
+ }
+
private static CalculationGroup CreateCalculationGroup(RingtoetsPipingSurfaceLine surfaceLine, IEnumerable soilModels, GeneralPipingInput generalInput)
{
var calculationGroup = new CalculationGroup(surfaceLine.Name, true);
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs
===================================================================
diff -u -rc9bc3ec71edfc189d0d9724627b15f1abdc7fc1d -r022f34b88de641b0b3b263b8eef61f57980f7891
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision c9bc3ec71edfc189d0d9724627b15f1abdc7fc1d)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision 022f34b88de641b0b3b263b8eef61f57980f7891)
@@ -22,7 +22,6 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing.Design;
-using System.Linq;
using Core.Common.Base.Data;
using Core.Common.Base.Geometry;
using Core.Common.Gui.Attributes;
@@ -117,13 +116,13 @@
return false;
}
+ ///
+ /// Gets the available selectable hydraulic boundary locations on .
+ ///
public IEnumerable GetSelectableHydraulicBoundaryLocations()
{
- Point2D referencePoint = SurfaceLine != null ? SurfaceLine.ReferenceLineIntersectionWorldPoint : null;
-
- return data.AvailableHydraulicBoundaryLocations.Select(hbl => new SelectableHydraulicBoundaryLocation(hbl, referencePoint))
- .OrderBy(hbl => hbl.Distance)
- .ThenBy(hbl => hbl.HydraulicBoundaryLocation.Id);
+ return PipingCalculationConfigurationHelper.GetSelectableHydraulicBoundaryLocations(
+ data.AvailableHydraulicBoundaryLocations, SurfaceLine);
}
#region Hydraulic data
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PipingCalculationConfigurationHelperTest.cs
===================================================================
diff -u -r6173a5eb258ea7b50a5f4aac71d2448db9e211c3 -r022f34b88de641b0b3b263b8eef61f57980f7891
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PipingCalculationConfigurationHelperTest.cs (.../PipingCalculationConfigurationHelperTest.cs) (revision 6173a5eb258ea7b50a5f4aac71d2448db9e211c3)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PipingCalculationConfigurationHelperTest.cs (.../PipingCalculationConfigurationHelperTest.cs) (revision 022f34b88de641b0b3b263b8eef61f57980f7891)
@@ -27,6 +27,8 @@
using Core.Common.TestUtil;
using NUnit.Framework;
using Ringtoets.Common.Data.Calculation;
+using Ringtoets.Common.Data.Hydraulics;
+using Ringtoets.Common.Forms.UITypeEditors;
using Ringtoets.Piping.Data;
using Ringtoets.Piping.Primitives;
@@ -1139,5 +1141,72 @@
}
#endregion
+
+ #region GetSelectableHydraulicBoundaryLocations
+
+ [Test]
+ public void GetSelectableHydraulicBoundaryLocations_WithLocationsNoSurfaceLine_ReturnLocationsSortedById()
+ {
+ // Setup
+ var hydraulicBoundaryLocations = new[]
+ {
+ new HydraulicBoundaryLocation(1, "A", 0, 1),
+ new HydraulicBoundaryLocation(4, "C", 0, 2),
+ new HydraulicBoundaryLocation(3, "D", 0, 3),
+ new HydraulicBoundaryLocation(2, "B", 0, 4)
+ };
+
+ // Call
+ IEnumerable selectableHydraulicBoundaryLocations =
+ PipingCalculationConfigurationHelper.GetSelectableHydraulicBoundaryLocations(hydraulicBoundaryLocations, null);
+
+ // Assert
+ IEnumerable expectedList =
+ hydraulicBoundaryLocations.Select(hbl => new SelectableHydraulicBoundaryLocation(hbl, null))
+ .OrderBy(hbl => hbl.HydraulicBoundaryLocation.Id);
+ CollectionAssert.AreEqual(expectedList, selectableHydraulicBoundaryLocations);
+ }
+
+ [Test]
+ public void GetSelectableHydraulicBoundaryLocations_WithLocationsAndSurfaceLine_ReturnLocationsSortedByDistanceThenById()
+ {
+ // Setup
+ var hydraulicBoundaryLocations = new[]
+ {
+ new HydraulicBoundaryLocation(1, "A", 0, 10),
+ new HydraulicBoundaryLocation(4, "E", 0, 500),
+ new HydraulicBoundaryLocation(6, "F", 0, 100),
+ new HydraulicBoundaryLocation(5, "D", 0, 200),
+ new HydraulicBoundaryLocation(3, "C", 0, 200),
+ new HydraulicBoundaryLocation(2, "B", 0, 200)
+ };
+
+ RingtoetsPipingSurfaceLine surfaceLine = ValidSurfaceLine(0.0, 4.0);
+ surfaceLine.ReferenceLineIntersectionWorldPoint = new Point2D(0.0, 0.0);
+
+ // Call
+ IEnumerable selectableHydraulicBoundaryLocations =
+ PipingCalculationConfigurationHelper.GetSelectableHydraulicBoundaryLocations(hydraulicBoundaryLocations, surfaceLine);
+
+ // Assert
+ IEnumerable expectedList = hydraulicBoundaryLocations.Select
+ (hbl => new SelectableHydraulicBoundaryLocation(hbl, surfaceLine.ReferenceLineIntersectionWorldPoint))
+ .OrderBy(hbl => hbl.Distance)
+ .ThenBy(hbl => hbl.HydraulicBoundaryLocation.Id);
+ CollectionAssert.AreEqual(expectedList, selectableHydraulicBoundaryLocations);
+ }
+
+ private static RingtoetsPipingSurfaceLine ValidSurfaceLine(double xMin, double xMax)
+ {
+ var surfaceLine = new RingtoetsPipingSurfaceLine();
+ surfaceLine.SetGeometry(new[]
+ {
+ new Point3D(xMin, 0.0, 0.0),
+ new Point3D(xMax, 0.0, 1.0)
+ });
+ return surfaceLine;
+ }
+
+ #endregion
}
}
\ No newline at end of file