// 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.
using System;
using System.Collections.Generic;
using System.Linq;
using Application.Ringtoets.Storage.DbContext;
using Application.Ringtoets.Storage.Read.ClosingStructures;
using Application.Ringtoets.Storage.Read.GrassCoverErosionInwards;
using Application.Ringtoets.Storage.Read.GrassCoverErosionOutwards;
using Application.Ringtoets.Storage.Read.HeightStructures;
using Application.Ringtoets.Storage.Read.Piping;
using Application.Ringtoets.Storage.Read.StabilityPointStructures;
using Application.Ringtoets.Storage.Read.WaveImpactAsphaltCover;
using Core.Common.Base;
using Ringtoets.ClosingStructures.Data;
using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Data.DikeProfiles;
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.GrassCoverErosionInwards.Data;
using Ringtoets.GrassCoverErosionOutwards.Data;
using Ringtoets.HeightStructures.Data;
using Ringtoets.HydraRing.Data;
using Ringtoets.Integration.Data.StandAlone;
using Ringtoets.Piping.Data;
using Ringtoets.StabilityPointStructures.Data;
using Ringtoets.StabilityStoneCover.Data;
using Ringtoets.WaveImpactAsphaltCover.Data;
namespace Application.Ringtoets.Storage.Read
{
///
/// This class defines extension methods for read operations for a based on the
/// .
///
internal static class FailureMechanismEntityReadExtensions
{
///
/// Read the and use the information to update a .
///
/// The to read into a .
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadCommonFailureMechanismProperties(this FailureMechanismEntity entity, IFailureMechanism failureMechanism, ReadConversionCollector collector)
{
failureMechanism.IsRelevant = Convert.ToBoolean(entity.IsRelevant);
failureMechanism.Comments = entity.Comments;
entity.ReadFailureMechanismSections(failureMechanism, collector);
}
private static void ReadFailureMechanismSections(this FailureMechanismEntity entity, IFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var failureMechanismSectionEntity in entity.FailureMechanismSectionEntities)
{
failureMechanism.AddSection(failureMechanismSectionEntity.Read(collector));
}
}
#region Piping
///
/// Read the and use the information to update a .
///
/// The to read into a .
/// The target of the read operation.
/// The object keeping track of read operations.
/// Thrown when either:
///
/// - is null
/// - is null
///
internal static void ReadAsPipingFailureMechanism(this FailureMechanismEntity entity, PipingFailureMechanism failureMechanism, ReadConversionCollector collector)
{
if (failureMechanism == null)
{
throw new ArgumentNullException("failureMechanism");
}
if (collector == null)
{
throw new ArgumentNullException("collector");
}
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
if (entity.PipingFailureMechanismMetaEntities.Count > 0)
{
ReadProbabilityAssessmentInput(entity.PipingFailureMechanismMetaEntities, failureMechanism.PipingProbabilityAssessmentInput);
}
foreach (var stochasticSoilModelEntity in entity.StochasticSoilModelEntities.OrderBy(ssm => ssm.Order))
{
failureMechanism.StochasticSoilModels.Add(stochasticSoilModelEntity.Read(collector));
}
foreach (SurfaceLineEntity surfaceLineEntity in entity.SurfaceLineEntities.OrderBy(sl => sl.Order))
{
failureMechanism.SurfaceLines.Add(surfaceLineEntity.Read(collector));
}
entity.ReadPipingMechanismSectionResults(failureMechanism, collector);
ReadPipingRootCalculationGroup(entity.CalculationGroupEntity, failureMechanism.CalculationsGroup,
failureMechanism.GeneralInput, collector);
}
private static void ReadProbabilityAssessmentInput(ICollection pipingFailureMechanismMetaEntities, PipingProbabilityAssessmentInput pipingProbabilityAssessmentInput)
{
PipingProbabilityAssessmentInput probabilityAssessmentInput = pipingFailureMechanismMetaEntities.ElementAt(0).Read();
pipingProbabilityAssessmentInput.A = probabilityAssessmentInput.A;
pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor = probabilityAssessmentInput.UpliftCriticalSafetyFactor;
}
private static void ReadPipingMechanismSectionResults(this FailureMechanismEntity entity, PipingFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.PipingSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
private static void ReadPipingRootCalculationGroup(CalculationGroupEntity rootCalculationGroupEntity,
CalculationGroup targetRootCalculationGroup,
GeneralPipingInput generalPipingInput,
ReadConversionCollector collector)
{
CalculationGroup rootCalculationGroup = rootCalculationGroupEntity.ReadAsPipingCalculationGroup(collector, generalPipingInput);
foreach (ICalculationBase calculationBase in rootCalculationGroup.Children)
{
targetRootCalculationGroup.Children.Add(calculationBase);
}
}
#endregion
#region Grass Cover Erosion Inwards
///
/// Read the and use the information to update a .
///
/// The to read into a .
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsGrassCoverErosionInwardsFailureMechanism(this FailureMechanismEntity entity, GrassCoverErosionInwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadGeneralGrassCoverErosionInwardsCalculationInput(failureMechanism.GeneralInput);
entity.ReadDikeProfiles(failureMechanism.DikeProfiles, collector);
ReadGrassCoverErosionInwardsRootCalculationGroup(entity.CalculationGroupEntity, failureMechanism.CalculationsGroup, collector);
entity.ReadGrassCoverErosionInwardsMechanismSectionResults(failureMechanism, collector);
}
private static void ReadGeneralGrassCoverErosionInwardsCalculationInput(this FailureMechanismEntity entity, GeneralGrassCoverErosionInwardsInput input)
{
entity.GrassCoverErosionInwardsFailureMechanismMetaEntities.Single().Read(input);
}
private static void ReadDikeProfiles(this FailureMechanismEntity entity, ICollection dikeProfiles, ReadConversionCollector collector)
{
foreach (DikeProfileEntity dikeProfileEntity in entity.DikeProfileEntities)
{
dikeProfiles.Add(dikeProfileEntity.Read(collector));
}
}
private static void ReadGrassCoverErosionInwardsMechanismSectionResults(this FailureMechanismEntity entity, GrassCoverErosionInwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.GrassCoverErosionInwardsSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result, collector);
}
}
private static void ReadGrassCoverErosionInwardsRootCalculationGroup(CalculationGroupEntity rootCalculationGroupEntity,
CalculationGroup targetRootCalculationGroup,
ReadConversionCollector collector)
{
CalculationGroup rootCalculationGroup = rootCalculationGroupEntity.ReadAsGrassCoverErosionInwardsCalculationGroup(collector);
foreach (ICalculationBase calculationBase in rootCalculationGroup.Children)
{
targetRootCalculationGroup.Children.Add(calculationBase);
}
}
#endregion
#region Height Structures
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsHeightStructuresFailureMechanism(this FailureMechanismEntity entity, HeightStructuresFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadHeightStructuresMechanismSectionResults(failureMechanism, collector);
entity.ReadForeshoreProfiles(failureMechanism.ForeshoreProfiles, collector);
entity.ReadHeightStructures(failureMechanism.HeightStructures, collector);
entity.ReadGeneralInput(failureMechanism.GeneralInput);
}
private static void ReadHeightStructuresMechanismSectionResults(this FailureMechanismEntity entity, HeightStructuresFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.HeightStructuresSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
private static void ReadHeightStructures(this FailureMechanismEntity entity, ObservableList heightStructures, ReadConversionCollector collector)
{
heightStructures.AddRange(entity.HeightStructureEntities.OrderBy(fpe => fpe.Order).Select(structureEntity => structureEntity.Read(collector)));
}
private static void ReadGeneralInput(this FailureMechanismEntity entity, GeneralHeightStructuresInput generalInput)
{
GeneralHeightStructuresInput generalHeightStructuresInput = entity.HeightStructuresFailureMechanismMetaEntities.First().Read();
generalInput.N = generalHeightStructuresInput.N;
}
#endregion
#region Strength Stability Lengthwise Construction
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsStrengthStabilityLengthwiseConstructionFailureMechanism(this FailureMechanismEntity entity, StrengthStabilityLengthwiseConstructionFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadStrengthStabilityLengthwiseConstructionMechanismSectionResults(failureMechanism, collector);
}
private static void ReadStrengthStabilityLengthwiseConstructionMechanismSectionResults(this FailureMechanismEntity entity, StrengthStabilityLengthwiseConstructionFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.StrengthStabilityLengthwiseConstructionSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Technical Innovation
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsTechnicalInnovationFailureMechanism(this FailureMechanismEntity entity, TechnicalInnovationFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadTechnicalInnovationMechanismSectionResults(failureMechanism, collector);
}
private static void ReadTechnicalInnovationMechanismSectionResults(this FailureMechanismEntity entity, TechnicalInnovationFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.TechnicalInnovationSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Water Pressure Asphalt
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsWaterPressureAsphaltCoverFailureMechanism(this FailureMechanismEntity entity, WaterPressureAsphaltCoverFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadWaterPressureAsphaltCoverMechanismSectionResults(failureMechanism, collector);
}
private static void ReadWaterPressureAsphaltCoverMechanismSectionResults(this FailureMechanismEntity entity, WaterPressureAsphaltCoverFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.WaterPressureAsphaltCoverSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Closing Structures
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsClosingStructuresFailureMechanism(this FailureMechanismEntity entity, ClosingStructuresFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadClosingStructuresMechanismSectionResults(failureMechanism, collector);
entity.ReadForeshoreProfiles(failureMechanism.ForeshoreProfiles, collector);
entity.ReadGeneralInput(failureMechanism.GeneralInput);
}
private static void ReadClosingStructuresMechanismSectionResults(this FailureMechanismEntity entity, ClosingStructuresFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.ClosingStructuresSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
private static void ReadGeneralInput(this FailureMechanismEntity entity, GeneralClosingStructuresInput generalInput)
{
GeneralClosingStructuresInput generalClosingStructuresInput = entity.ClosingStructureFailureMechanismMetaEntities.First().Read();
generalInput.N2A = generalClosingStructuresInput.N2A;
}
#endregion
#region Macrostability Inwards
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsMacrostabilityInwardsFailureMechanism(this FailureMechanismEntity entity, MacrostabilityInwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadMacrostabilityInwardsMechanismSectionResults(failureMechanism, collector);
}
private static void ReadMacrostabilityInwardsMechanismSectionResults(this FailureMechanismEntity entity, MacrostabilityInwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.MacrostabilityInwardsSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Macrostability Outwards
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsMacrostabilityOutwardsFailureMechanism(this FailureMechanismEntity entity, MacrostabilityOutwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadMacrostabilityOutwardsMechanismSectionResults(failureMechanism, collector);
}
private static void ReadMacrostabilityOutwardsMechanismSectionResults(this FailureMechanismEntity entity, MacrostabilityOutwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.MacrostabilityOutwardsSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Wave Impact Asphalt Cover
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsWaveImpactAsphaltCoverFailureMechanism(this FailureMechanismEntity entity, WaveImpactAsphaltCoverFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadWaveImpactAsphaltCoverMechanismSectionResults(failureMechanism, collector);
entity.ReadForeshoreProfiles(failureMechanism.ForeshoreProfiles, collector);
ReadWaveImpactAsphaltCoverRootCalculationGroup(entity.CalculationGroupEntity, failureMechanism.WaveConditionsCalculationGroup, collector);
}
private static void ReadWaveImpactAsphaltCoverMechanismSectionResults(this FailureMechanismEntity entity, WaveImpactAsphaltCoverFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.WaveImpactAsphaltCoverSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
private static void ReadWaveImpactAsphaltCoverRootCalculationGroup(CalculationGroupEntity rootCalculationGroupEntity,
CalculationGroup targetRootCalculationGroup,
ReadConversionCollector collector)
{
CalculationGroup rootCalculationGroup = rootCalculationGroupEntity.ReadAsWaveImpactAsphaltCoverWaveConditionsCalculationGroup(collector);
foreach (ICalculationBase calculationBase in rootCalculationGroup.Children)
{
targetRootCalculationGroup.Children.Add(calculationBase);
}
}
#endregion
#region Grass Cover Erosion Outwards
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsGrassCoverErosionOutwardsFailureMechanism(this FailureMechanismEntity entity, GrassCoverErosionOutwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadGeneralGrassCoverErosionOutwardsCalculationInput(failureMechanism.GeneralInput);
entity.ReadGrassCoverErosionOutwardsMechanismSectionResults(failureMechanism, collector);
entity.ReadForeshoreProfiles(failureMechanism.ForeshoreProfiles, collector);
entity.ReadHydraulicBoundaryLocations(failureMechanism.HydraulicBoundaryLocations, collector);
ReadGrassCoverErosionOutwardsWaveConditionsRootCalculationGroup(entity.CalculationGroupEntity, failureMechanism.WaveConditionsCalculationGroup, collector);
}
private static void ReadGeneralGrassCoverErosionOutwardsCalculationInput(this FailureMechanismEntity entity, GeneralGrassCoverErosionOutwardsInput input)
{
entity.GrassCoverErosionOutwardsFailureMechanismMetaEntities.Single().Read(input);
}
private static void ReadGrassCoverErosionOutwardsMechanismSectionResults(this FailureMechanismEntity entity, GrassCoverErosionOutwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.GrassCoverErosionOutwardsSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
private static void ReadHydraulicBoundaryLocations(this FailureMechanismEntity entity, List locations, ReadConversionCollector collector)
{
locations.AddRange(
entity
.GrassCoverErosionOutwardsHydraulicLocationEntities
.OrderBy(location => location.Order)
.Select(location => location.Read(collector)));
}
private static void ReadGrassCoverErosionOutwardsWaveConditionsRootCalculationGroup(CalculationGroupEntity rootCalculationGroupEntity,
CalculationGroup targetRootCalculationGroup, ReadConversionCollector collector)
{
CalculationGroup rootCalculationGroup = rootCalculationGroupEntity.ReadAsGrassCoverErosionOutwardsWaveConditionsCalculationGroup(collector);
foreach (ICalculationBase calculationBase in rootCalculationGroup.Children)
{
targetRootCalculationGroup.Children.Add(calculationBase);
}
}
#endregion
#region Grass Cover Slip Off Inwards
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsGrassCoverSlipOffInwardsFailureMechanism(this FailureMechanismEntity entity, GrassCoverSlipOffInwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadGrassCoverSlipOffInwardsMechanismSectionResults(failureMechanism, collector);
}
private static void ReadGrassCoverSlipOffInwardsMechanismSectionResults(this FailureMechanismEntity entity, GrassCoverSlipOffInwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.GrassCoverSlipOffInwardsSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Grass Cover Slip Off Outwards
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsGrassCoverSlipOffOutwardsFailureMechanism(this FailureMechanismEntity entity, GrassCoverSlipOffOutwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadGrassCoverSlipOffOutwardsMechanismSectionResults(failureMechanism, collector);
}
private static void ReadGrassCoverSlipOffOutwardsMechanismSectionResults(this FailureMechanismEntity entity, GrassCoverSlipOffOutwardsFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.GrassCoverSlipOffOutwardsSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Microstability
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsMicrostabilityFailureMechanism(this FailureMechanismEntity entity, MicrostabilityFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadMicrostabilityMechanismSectionResults(failureMechanism, collector);
}
private static void ReadMicrostabilityMechanismSectionResults(this FailureMechanismEntity entity, MicrostabilityFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.MicrostabilitySectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Piping Structure
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsPipingStructureFailureMechanism(this FailureMechanismEntity entity, PipingStructureFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadPipingStructureMechanismSectionResults(failureMechanism, collector);
}
private static void ReadPipingStructureMechanismSectionResults(this FailureMechanismEntity entity, PipingStructureFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.PipingStructureSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Dune Erosion
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsDuneErosionFailureMechanism(this FailureMechanismEntity entity, DuneErosionFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadDuneErosionMechanismSectionResults(failureMechanism, collector);
}
private static void ReadDuneErosionMechanismSectionResults(this FailureMechanismEntity entity, DuneErosionFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.DuneErosionSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
#endregion
#region Stability Stone Cover
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsStabilityStoneCoverFailureMechanism(this FailureMechanismEntity entity, StabilityStoneCoverFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadStabilityStoneCoverMechanismSectionResults(failureMechanism, collector);
entity.ReadForeshoreProfiles(failureMechanism.ForeshoreProfiles, collector);
ReadStabilityStoneCoverWaveConditionsRootCalculationGroup(entity.CalculationGroupEntity, failureMechanism.WaveConditionsCalculationGroup, collector);
}
private static void ReadForeshoreProfiles(this FailureMechanismEntity entity, ObservableList foreshoreProfiles, ReadConversionCollector collector)
{
foreshoreProfiles.AddRange(entity.ForeshoreProfileEntities.OrderBy(fpe => fpe.Order).Select(foreshoreProfileEntity => foreshoreProfileEntity.Read(collector)));
}
private static void ReadStabilityStoneCoverMechanismSectionResults(this FailureMechanismEntity entity, StabilityStoneCoverFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.StabilityStoneCoverSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
private static void ReadStabilityStoneCoverWaveConditionsRootCalculationGroup(CalculationGroupEntity rootCalculationGroupEntity,
CalculationGroup targetRootCalculationGroup, ReadConversionCollector collector)
{
CalculationGroup rootCalculationGroup = rootCalculationGroupEntity.ReadAsStabilityStoneCoverWaveConditionsCalculationGroup(collector);
foreach (ICalculationBase calculationBase in rootCalculationGroup.Children)
{
targetRootCalculationGroup.Children.Add(calculationBase);
}
}
#endregion
#region Stability Point Structures
///
/// Read the and use the information to update a .
///
/// The to create for.
/// The target of the read operation.
/// The object keeping track of read operations.
internal static void ReadAsStabilityPointStructuresFailureMechanism(this FailureMechanismEntity entity, StabilityPointStructuresFailureMechanism failureMechanism, ReadConversionCollector collector)
{
entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
entity.ReadStabilityPointStructuresMechanismSectionResults(failureMechanism, collector);
entity.ReadForeshoreProfiles(failureMechanism.ForeshoreProfiles, collector);
entity.ReadGeneralInput(failureMechanism.GeneralInput);
}
private static void ReadStabilityPointStructuresMechanismSectionResults(this FailureMechanismEntity entity, StabilityPointStructuresFailureMechanism failureMechanism, ReadConversionCollector collector)
{
foreach (var sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.StabilityPointStructuresSectionResultEntities))
{
var failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
var result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
sectionResultEntity.Read(result);
}
}
private static void ReadGeneralInput(this FailureMechanismEntity entity, GeneralStabilityPointStructuresInput generalInput)
{
GeneralStabilityPointStructuresInput generalStabilityPointStructuresInput = entity.StabilityPointStructuresFailureMechanismMetaEntities.First().Read();
generalInput.N = generalStabilityPointStructuresInput.N;
}
#endregion
}
}