Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Factories/AggregatedDuneLocationFactory.cs =================================================================== diff -u -rc5b7009dff256698dcfed4c77402287a4acb25b1 -r9da286bdadcc91a4650bb2cbe051e03452967abb --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Factories/AggregatedDuneLocationFactory.cs (.../AggregatedDuneLocationFactory.cs) (revision c5b7009dff256698dcfed4c77402287a4acb25b1) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Factories/AggregatedDuneLocationFactory.cs (.../AggregatedDuneLocationFactory.cs) (revision 9da286bdadcc91a4650bb2cbe051e03452967abb) @@ -22,7 +22,6 @@ using System; using System.Collections.Generic; using System.Linq; -using Core.Common.Base; using Core.Common.Base.Data; using Riskeer.DuneErosion.Data; using Riskeer.DuneErosion.Forms.Views; @@ -43,7 +42,7 @@ /// Thrown when any parameter is null. public static IEnumerable CreateAggregatedDuneLocations( IEnumerable duneLocations, - IReadOnlyDictionary, double> calculationsForTargetProbabilities) + IEnumerable calculationsForTargetProbabilities) { if (duneLocations == null) { @@ -59,7 +58,7 @@ { Tuple[] calculationsForLocation = calculationsForTargetProbabilities.Select(c => new Tuple( - c.Value, c.Key.ToDictionary( + c.TargetProbability, c.DuneLocationCalculations.ToDictionary( x => x.DuneLocation, x => x)[location])) .ToArray(); Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Views/DuneErosionLocationsMapLayer.cs =================================================================== diff -u -r10f91cb2c0ea3bddf1aa853417a7ac264d0894be -r9da286bdadcc91a4650bb2cbe051e03452967abb --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Views/DuneErosionLocationsMapLayer.cs (.../DuneErosionLocationsMapLayer.cs) (revision 10f91cb2c0ea3bddf1aa853417a7ac264d0894be) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/Views/DuneErosionLocationsMapLayer.cs (.../DuneErosionLocationsMapLayer.cs) (revision 9da286bdadcc91a4650bb2cbe051e03452967abb) @@ -45,7 +45,7 @@ private List, DuneLocationCalculation>> calculationsForTargetProbabilityObservers; - private IReadOnlyDictionary, MetaDataItemsLookup> currentMetaDataItemsLookups; + private IReadOnlyDictionary currentMetaDataItemsLookups; /// /// Creates a new instance of . @@ -66,7 +66,7 @@ CreateObservers(); MapData = RiskeerMapDataFactory.CreateHydraulicBoundaryLocationsMapData(); - currentMetaDataItemsLookups = new Dictionary, MetaDataItemsLookup>(); + currentMetaDataItemsLookups = new Dictionary(); SetFeatures(); } @@ -155,26 +155,23 @@ private void SetFeatures() { - IReadOnlyDictionary, double> calculationsForTargetProbabilities = - failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities - .OrderByDescending(tp => tp.TargetProbability) - .ToDictionary(tp => (IObservableEnumerable) tp.DuneLocationCalculations, - tp => tp.TargetProbability); - + DuneLocationCalculationsForTargetProbability[] orderedCalculationsForTargetProbabilities = failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities + .OrderByDescending(tp => tp.TargetProbability) + .ToArray(); IEnumerable locations = AggregatedDuneLocationFactory.CreateAggregatedDuneLocations( - failureMechanism.DuneLocations, calculationsForTargetProbabilities); + failureMechanism.DuneLocations, orderedCalculationsForTargetProbabilities); MapData.Features = DuneErosionMapDataFeaturesFactory.CreateDuneLocationFeatures(locations); if (MapData.Features.Any()) { - UpdateMetaData(calculationsForTargetProbabilities); + UpdateMetaData(orderedCalculationsForTargetProbabilities); } } - private void UpdateMetaData(IReadOnlyDictionary, double> calculationsForTargetProbabilities) + private void UpdateMetaData(IEnumerable calculationsForTargetProbabilities) { - var newMetaDataItemsLookups = new Dictionary, MetaDataItemsLookup>(); + var newMetaDataItemsLookups = new Dictionary(); var waterLevelMetaDataItemsCounter = 0; var waveHeightMetaDataItemsCounter = 0; @@ -183,39 +180,39 @@ { if (metaData.Contains(string.Format(Resources.MetaData_WaterLevel_TargetProbability_0, string.Empty))) { - AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(waterLevelMetaDataItemsCounter).Key, + AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(waterLevelMetaDataItemsCounter), lookupItem => lookupItem.WaterLevelMetaDataItem = metaData); waterLevelMetaDataItemsCounter++; } else if (metaData.Contains(string.Format(Resources.MetaData_WaveHeight_TargetProbability_0, string.Empty))) { - AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(waveHeightMetaDataItemsCounter).Key, + AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(waveHeightMetaDataItemsCounter), lookupItem => lookupItem.WaveHeightMetaDataItem = metaData); waveHeightMetaDataItemsCounter++; } else if (metaData.Contains(string.Format(Resources.MetaData_WavePeriod_TargetProbability_0, string.Empty))) { - AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(wavePeriodMetaDataItemsCounter).Key, + AddMetaDataItemToLookup(newMetaDataItemsLookups, calculationsForTargetProbabilities.ElementAt(wavePeriodMetaDataItemsCounter), lookupItem => lookupItem.WavePeriodMetaDataItem = metaData); wavePeriodMetaDataItemsCounter++; } } - foreach (KeyValuePair, MetaDataItemsLookup> currentMetaDataItemLookup in currentMetaDataItemsLookups) + foreach (KeyValuePair currentMetaDataItemLookup in currentMetaDataItemsLookups) { MetaDataItemsLookup currentMetaDataItem = currentMetaDataItemLookup.Value; if (MapData.SelectedMetaDataAttribute == currentMetaDataItem.WaterLevelMetaDataItem || MapData.SelectedMetaDataAttribute == currentMetaDataItem.WaveHeightMetaDataItem || MapData.SelectedMetaDataAttribute == currentMetaDataItem.WavePeriodMetaDataItem) { - IObservableEnumerable calculations = currentMetaDataItemLookup.Key; - if (!newMetaDataItemsLookups.ContainsKey(calculations)) + DuneLocationCalculationsForTargetProbability calculationsForTargetProbability = currentMetaDataItemLookup.Key; + if (!newMetaDataItemsLookups.ContainsKey(calculationsForTargetProbability)) { MapData.SelectedMetaDataAttribute = RiskeerCommonUtilResources.MetaData_Name; } else { - MetaDataItemsLookup newMetaDataItem = newMetaDataItemsLookups[calculations]; + MetaDataItemsLookup newMetaDataItem = newMetaDataItemsLookups[calculationsForTargetProbability]; SetSelectedMetaDataAttribute(currentMetaDataItem.WaterLevelMetaDataItem, newMetaDataItem.WaterLevelMetaDataItem); SetSelectedMetaDataAttribute(currentMetaDataItem.WaveHeightMetaDataItem, newMetaDataItem.WaveHeightMetaDataItem); SetSelectedMetaDataAttribute(currentMetaDataItem.WavePeriodMetaDataItem, newMetaDataItem.WavePeriodMetaDataItem); @@ -226,16 +223,16 @@ currentMetaDataItemsLookups = newMetaDataItemsLookups; } - private static void AddMetaDataItemToLookup(IDictionary, MetaDataItemsLookup> lookup, - IObservableEnumerable calculations, + private static void AddMetaDataItemToLookup(IDictionary lookup, + DuneLocationCalculationsForTargetProbability calculationsForTargetProbability, Action setMetaDataAction) { - if (!lookup.ContainsKey(calculations)) + if (!lookup.ContainsKey(calculationsForTargetProbability)) { - lookup.Add(calculations, new MetaDataItemsLookup()); + lookup.Add(calculationsForTargetProbability, new MetaDataItemsLookup()); } - setMetaDataAction(lookup[calculations]); + setMetaDataAction(lookup[calculationsForTargetProbability]); } private void SetSelectedMetaDataAttribute(string metaDataItem, string newMetaDataItem) Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Factories/AggregatedDuneLocationFactoryTest.cs =================================================================== diff -u -rc5b7009dff256698dcfed4c77402287a4acb25b1 -r9da286bdadcc91a4650bb2cbe051e03452967abb --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Factories/AggregatedDuneLocationFactoryTest.cs (.../AggregatedDuneLocationFactoryTest.cs) (revision c5b7009dff256698dcfed4c77402287a4acb25b1) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Factories/AggregatedDuneLocationFactoryTest.cs (.../AggregatedDuneLocationFactoryTest.cs) (revision 9da286bdadcc91a4650bb2cbe051e03452967abb) @@ -22,7 +22,6 @@ using System; using System.Collections.Generic; using System.Linq; -using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Base.Geometry; using NUnit.Framework; @@ -40,7 +39,7 @@ public void CreateAggregatedDuneLocations_DuneLocationsNull_ThrowsArgumentNullException() { // Call - void Call() => AggregatedDuneLocationFactory.CreateAggregatedDuneLocations(null, new Dictionary, double>()); + void Call() => AggregatedDuneLocationFactory.CreateAggregatedDuneLocations(null, Enumerable.Empty()); // Assert var exception = Assert.Throws(Call); @@ -69,10 +68,11 @@ new DuneLocation(2, "location2", new Point2D(2, 2), new DuneLocation.ConstructionProperties()) }; - var calculations = new Dictionary, double> + var targetProbabilities = new[] { + new DuneLocationCalculationsForTargetProbability(0.1) { - new ObservableList + DuneLocationCalculations = { new DuneLocationCalculation(duneLocations[0]) { @@ -82,24 +82,23 @@ { Output = new TestDuneLocationCalculationOutput(random.NextDouble(), random.NextDouble(), random.NextDouble()) } - }, - 0.1 + } }, + new DuneLocationCalculationsForTargetProbability(0.001) { - new ObservableList + DuneLocationCalculations = { new DuneLocationCalculation(duneLocations[0]) { Output = new TestDuneLocationCalculationOutput(random.NextDouble(), random.NextDouble(), random.NextDouble()) }, new DuneLocationCalculation(duneLocations[1]) - }, - 0.001 + } } }; // Call - IEnumerable aggregatedLocations = AggregatedDuneLocationFactory.CreateAggregatedDuneLocations(duneLocations, calculations); + IEnumerable aggregatedLocations = AggregatedDuneLocationFactory.CreateAggregatedDuneLocations(duneLocations, targetProbabilities); // Assert Assert.AreEqual(duneLocations.Length, aggregatedLocations.Count()); @@ -116,13 +115,13 @@ Assert.AreEqual(duneLocation.Offset, aggregatedLocation.Offset); Assert.AreEqual(duneLocation.D50, aggregatedLocation.D50); - for (var j = 0; j < calculations.Count; j++) + for (var j = 0; j < targetProbabilities.Length; j++) { - Assert.AreEqual(calculations.ElementAt(j).Value, aggregatedLocation.WaterLevelCalculationsForTargetProbabilities.ElementAt(j).Item1); - Assert.AreEqual(calculations.ElementAt(j).Value, aggregatedLocation.WaveHeightCalculationsForTargetProbabilities.ElementAt(j).Item1); - Assert.AreEqual(calculations.ElementAt(j).Value, aggregatedLocation.WavePeriodCalculationsForTargetProbabilities.ElementAt(j).Item1); + Assert.AreEqual(targetProbabilities[j].TargetProbability, aggregatedLocation.WaterLevelCalculationsForTargetProbabilities.ElementAt(j).Item1); + Assert.AreEqual(targetProbabilities[j].TargetProbability, aggregatedLocation.WaveHeightCalculationsForTargetProbabilities.ElementAt(j).Item1); + Assert.AreEqual(targetProbabilities[j].TargetProbability, aggregatedLocation.WavePeriodCalculationsForTargetProbabilities.ElementAt(j).Item1); - DuneLocationCalculationOutput output = GetOutput(calculations.ElementAt(j).Key, duneLocations[i]); + DuneLocationCalculationOutput output = GetOutput(targetProbabilities[j].DuneLocationCalculations, duneLocations[i]); Assert.AreEqual(output?.WaterLevel ?? RoundedDouble.NaN, aggregatedLocation.WaterLevelCalculationsForTargetProbabilities.ElementAt(j).Item2); Assert.AreEqual(output?.WaveHeight ?? RoundedDouble.NaN, aggregatedLocation.WaveHeightCalculationsForTargetProbabilities.ElementAt(j).Item2); Assert.AreEqual(output?.WavePeriod ?? RoundedDouble.NaN, aggregatedLocation.WavePeriodCalculationsForTargetProbabilities.ElementAt(j).Item2); Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Factories/DuneErosionMapDataFeaturesFactoryTest.cs =================================================================== diff -u -raf2fc24af74a6afba450e7fc95b7ec66fd79ff63 -r9da286bdadcc91a4650bb2cbe051e03452967abb --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Factories/DuneErosionMapDataFeaturesFactoryTest.cs (.../DuneErosionMapDataFeaturesFactoryTest.cs) (revision af2fc24af74a6afba450e7fc95b7ec66fd79ff63) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/Factories/DuneErosionMapDataFeaturesFactoryTest.cs (.../DuneErosionMapDataFeaturesFactoryTest.cs) (revision 9da286bdadcc91a4650bb2cbe051e03452967abb) @@ -22,7 +22,6 @@ using System; using System.Collections.Generic; using System.Linq; -using Core.Common.Base; using Core.Common.Base.Geometry; using Core.Components.Gis.Features; using NUnit.Framework; @@ -85,9 +84,7 @@ IEnumerable aggregatedLocations = AggregatedDuneLocationFactory.CreateAggregatedDuneLocations( failureMechanism.DuneLocations, - failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.ToDictionary( - tp => (IObservableEnumerable) tp.DuneLocationCalculations, - tp => tp.TargetProbability)); + failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities); // Call IEnumerable features = DuneErosionMapDataFeaturesFactory.CreateDuneLocationFeatures(aggregatedLocations);