Index: Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/Migration_23.1_23.2.sql =================================================================== diff -u -r430cfce52a1a3be17397b98f06d96e0726a5ecaa -r624fe2579e0562d76ecb778d71045f27121b5ee7 --- Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/Migration_23.1_23.2.sql (.../Migration_23.1_23.2.sql) (revision 430cfce52a1a3be17397b98f06d96e0726a5ecaa) +++ Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/Migration_23.1_23.2.sql (.../Migration_23.1_23.2.sql) (revision 624fe2579e0562d76ecb778d71045f27121b5ee7) @@ -22,8 +22,7 @@ [NormativeProbabilityType], [Composition], [ReferenceLinePointXml], - [AreFailureMechanismsCorrelated] -) + [AreFailureMechanismsCorrelated]) SELECT [AssessmentSectionEntityId], [ProjectEntityId], @@ -57,7 +56,56 @@ INSERT INTO GrassCoverErosionInwardsCalculationEntity SELECT * FROM [SOURCEPROJECT].GrassCoverErosionInwardsCalculationEntity; INSERT INTO GrassCoverErosionInwardsFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].GrassCoverErosionInwardsFailureMechanismMetaEntity; INSERT INTO GrassCoverErosionOutwardsFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].GrassCoverErosionOutwardsFailureMechanismMetaEntity; -INSERT INTO GrassCoverErosionOutwardsWaveConditionsCalculationEntity SELECT * FROM [SOURCEPROJECT].GrassCoverErosionOutwardsWaveConditionsCalculationEntity; +INSERT INTO GrassCoverErosionOutwardsWaveConditionsCalculationEntity ( + [GrassCoverErosionOutwardsWaveConditionsCalculationEntityId], + [CalculationGroupEntityId], + [ForeshoreProfileEntityId], + [HydraulicLocationEntityId], + [HydraulicLocationCalculationForTargetProbabilityCollectionEntityId], + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + [StepSize], + [CalculationType], + [WaterLevelType]) +SELECT + [GrassCoverErosionOutwardsWaveConditionsCalculationEntityId], + [CalculationGroupEntityId], + [ForeshoreProfileEntityId], + [HydraulicLocationEntityId], + [HydraulicLocationCalculationForTargetProbabilityCollectionEntityId], + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + CASE + WHEN [StepSize] = 1 + THEN 0.5 + WHEN [StepSize] = 2 + THEN 1.0 + WHEN [StepSize] = 3 + THEN 2.0 + END, + [CalculationType], + [WaterLevelType] +FROM [SOURCEPROJECT].GrassCoverErosionOutwardsWaveConditionsCalculationEntity; INSERT INTO GrassCoverSlipOffInwardsFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].GrassCoverSlipOffInwardsFailureMechanismMetaEntity; INSERT INTO GrassCoverSlipOffOutwardsFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].GrassCoverSlipOffOutwardsFailureMechanismMetaEntity; INSERT INTO HeightStructureEntity SELECT * FROM [SOURCEPROJECT].HeightStructureEntity; @@ -198,21 +246,117 @@ [SellmeijerCriticalFall], [SellmeijerReducedFall] FROM [SOURCEPROJECT].SemiProbabilisticPipingCalculationOutputEntity sppcoe - JOIN [SOURCEPROJECT].SemiProbabilisticPipingCalculationEntity USING(SemiProbabilisticPipingCalculationEntityId) +JOIN [SOURCEPROJECT].SemiProbabilisticPipingCalculationEntity USING(SemiProbabilisticPipingCalculationEntityId) WHERE UseAssessmentLevelManualInput = 1; INSERT INTO SpecificFailureMechanismEntity SELECT * FROM [SOURCEPROJECT].SpecificFailureMechanismEntity; INSERT INTO SpecificFailureMechanismFailureMechanismSectionEntity SELECT * FROM [SOURCEPROJECT].SpecificFailureMechanismFailureMechanismSectionEntity; INSERT INTO StabilityPointStructureEntity SELECT * FROM [SOURCEPROJECT].StabilityPointStructureEntity; INSERT INTO StabilityPointStructuresCalculationEntity SELECT * FROM [SOURCEPROJECT].StabilityPointStructuresCalculationEntity; INSERT INTO StabilityPointStructuresFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].StabilityPointStructuresFailureMechanismMetaEntity; INSERT INTO StabilityStoneCoverFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].StabilityStoneCoverFailureMechanismMetaEntity; -INSERT INTO StabilityStoneCoverWaveConditionsCalculationEntity SELECT * FROM [SOURCEPROJECT].StabilityStoneCoverWaveConditionsCalculationEntity; +INSERT INTO StabilityStoneCoverWaveConditionsCalculationEntity( + [StabilityStoneCoverWaveConditionsCalculationEntityId], + [CalculationGroupEntityId], + [ForeshoreProfileEntityId], + [HydraulicLocationEntityId], + [HydraulicLocationCalculationForTargetProbabilityCollectionEntityId], + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + [StepSize], + [CalculationType], + [WaterLevelType]) +SELECT + [StabilityStoneCoverWaveConditionsCalculationEntityId], + [CalculationGroupEntityId], + [ForeshoreProfileEntityId], + [HydraulicLocationEntityId], + [HydraulicLocationCalculationForTargetProbabilityCollectionEntityId], + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + CASE + WHEN [StepSize] = 1 + THEN 0.5 + WHEN [StepSize] = 2 + THEN 1.0 + WHEN [StepSize] = 3 + THEN 2.0 + END, + [CalculationType], + [WaterLevelType] +FROM [SOURCEPROJECT].StabilityStoneCoverWaveConditionsCalculationEntity; INSERT INTO StochastEntity SELECT * FROM [SOURCEPROJECT].StochastEntity; INSERT INTO StochasticSoilModelEntity SELECT * FROM [SOURCEPROJECT].StochasticSoilModelEntity; INSERT INTO SurfaceLineEntity SELECT * FROM [SOURCEPROJECT].SurfaceLineEntity; INSERT INTO WaterPressureAsphaltCoverFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].WaterPressureAsphaltCoverFailureMechanismMetaEntity; INSERT INTO WaveImpactAsphaltCoverFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].WaveImpactAsphaltCoverFailureMechanismMetaEntity; -INSERT INTO WaveImpactAsphaltCoverWaveConditionsCalculationEntity SELECT * FROM [SOURCEPROJECT].WaveImpactAsphaltCoverWaveConditionsCalculationEntity; +INSERT INTO WaveImpactAsphaltCoverWaveConditionsCalculationEntity( + [WaveImpactAsphaltCoverWaveConditionsCalculationEntityId], + [CalculationGroupEntityId], + [ForeshoreProfileEntityId], + [HydraulicLocationEntityId], + [HydraulicLocationCalculationForTargetProbabilityCollectionEntityId], + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + [StepSize], + [WaterLevelType]) +SELECT + [WaveImpactAsphaltCoverWaveConditionsCalculationEntityId], + [CalculationGroupEntityId], + [ForeshoreProfileEntityId], + [HydraulicLocationEntityId], + [HydraulicLocationCalculationForTargetProbabilityCollectionEntityId], + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + CASE + WHEN [StepSize] = 1 + THEN 0.5 + WHEN [StepSize] = 2 + THEN 1.0 + WHEN [StepSize] = 3 + THEN 2.0 + END, + [WaterLevelType] +FROM [SOURCEPROJECT].WaveImpactAsphaltCoverWaveConditionsCalculationEntity; INSERT INTO VersionEntity ( [VersionId], Index: Riskeer/Migration/test/Riskeer.Migration.Integration.Test/MigrationTo232IntegrationTest.cs =================================================================== diff -u -r52f9711b42522a9101d598dff47dd14997799d8c -r624fe2579e0562d76ecb778d71045f27121b5ee7 --- Riskeer/Migration/test/Riskeer.Migration.Integration.Test/MigrationTo232IntegrationTest.cs (.../MigrationTo232IntegrationTest.cs) (revision 52f9711b42522a9101d598dff47dd14997799d8c) +++ Riskeer/Migration/test/Riskeer.Migration.Integration.Test/MigrationTo232IntegrationTest.cs (.../MigrationTo232IntegrationTest.cs) (revision 624fe2579e0562d76ecb778d71045f27121b5ee7) @@ -62,6 +62,10 @@ AssertAssessmentSection(reader, sourceFilePath); + AssertGrassCoverErosionOutwardsWaveConditionsCalculation(reader, sourceFilePath); + AssertStabilityStoneCoverWaveConditionsCalculation(reader, sourceFilePath); + AssertWaveImpactAsphaltCoverWaveConditionsCalculation(reader, sourceFilePath); + AssertVersions(reader); AssertDatabase(reader); @@ -150,6 +154,135 @@ reader.AssertReturnedDataIsValid(validateAssessmentSection); } + private static void AssertGrassCoverErosionOutwardsWaveConditionsCalculation(MigratedDatabaseReader reader, string sourceFilePath) + { + string validateCalculation = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.GrassCoverErosionOutwardsWaveConditionsCalculationEntity " + + ") " + + "FROM GrassCoverErosionOutwardsWaveConditionsCalculationEntity NEW " + + "JOIN SOURCEPROJECT.GrassCoverErosionOutwardsWaveConditionsCalculationEntity OLD USING(GrassCoverErosionOutwardsWaveConditionsCalculationEntityId) " + + "WHERE NEW.[CalculationGroupEntityId] = OLD.[CalculationGroupEntityId] " + + "AND NEW.[ForeshoreProfileEntityId] IS OLD.[ForeshoreProfileEntityId] " + + "AND NEW.[HydraulicLocationEntityId] IS OLD.[HydraulicLocationEntityId] " + + "AND NEW.[HydraulicLocationCalculationForTargetProbabilityCollectionEntityId] IS OLD.[HydraulicLocationCalculationForTargetProbabilityCollectionEntityId] " + + "AND NEW.\"Order\" = OLD.\"Order\" " + + "AND NEW.[Name] IS OLD.[Name] " + + "AND NEW.[Comments] IS OLD.[Comments] " + + "AND NEW.[UseBreakWater] = OLD.[UseBreakWater] " + + "AND NEW.[BreakWaterType] = OLD.[BreakWaterType] " + + "AND NEW.[BreakWaterHeight] IS OLD.[BreakWaterHeight] " + + "AND NEW.[UseForeshore] = OLD.[UseForeshore] " + + "AND NEW.[Orientation] IS OLD.[Orientation] " + + "AND NEW.[UpperBoundaryRevetment] IS OLD.[UpperBoundaryRevetment] " + + "AND NEW.[LowerBoundaryRevetment] IS OLD.[LowerBoundaryRevetment] " + + "AND NEW.[UpperBoundaryWaterLevels] IS OLD.[UpperBoundaryWaterLevels] " + + "AND NEW.[LowerBoundaryWaterLevels] IS OLD.[LowerBoundaryWaterLevels] " + + "AND NEW.[CalculationType] = OLD.[CalculationType] " + + "AND NEW.[WaterLevelType] = OLD.[WaterLevelType];" + + "DETACH SOURCEPROJECT;"; + reader.AssertReturnedDataIsValid(validateCalculation); + + AssertWaveConditionsStepSize(reader, sourceFilePath, "GrassCoverErosionOutwardsWaveConditionsCalculationEntity"); + } + + private static void AssertStabilityStoneCoverWaveConditionsCalculation(MigratedDatabaseReader reader, + string sourceFilePath) + { + string validateCalculation = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.StabilityStoneCoverWaveConditionsCalculationEntity " + + ") " + + "FROM StabilityStoneCoverWaveConditionsCalculationEntity NEW " + + "JOIN SOURCEPROJECT.StabilityStoneCoverWaveConditionsCalculationEntity OLD USING(StabilityStoneCoverWaveConditionsCalculationEntityId) " + + "WHERE NEW.[CalculationGroupEntityId] = OLD.[CalculationGroupEntityId] " + + "AND NEW.[ForeshoreProfileEntityId] IS OLD.[ForeshoreProfileEntityId] " + + "AND NEW.[HydraulicLocationEntityId] IS OLD.[HydraulicLocationEntityId] " + + "AND NEW.[HydraulicLocationCalculationForTargetProbabilityCollectionEntityId] IS OLD.[HydraulicLocationCalculationForTargetProbabilityCollectionEntityId] " + + "AND NEW.\"Order\" = OLD.\"Order\" " + + "AND NEW.[Name] IS OLD.[Name] " + + "AND NEW.[Comments] IS OLD.[Comments] " + + "AND NEW.[UseBreakWater] = OLD.[UseBreakWater] " + + "AND NEW.[BreakWaterType] = OLD.[BreakWaterType] " + + "AND NEW.[BreakWaterHeight] IS OLD.[BreakWaterHeight] " + + "AND NEW.[UseForeshore] = OLD.[UseForeshore] " + + "AND NEW.[Orientation] IS OLD.[Orientation] " + + "AND NEW.[UpperBoundaryRevetment] IS OLD.[UpperBoundaryRevetment] " + + "AND NEW.[LowerBoundaryRevetment] IS OLD.[LowerBoundaryRevetment] " + + "AND NEW.[UpperBoundaryWaterLevels] IS OLD.[UpperBoundaryWaterLevels] " + + "AND NEW.[LowerBoundaryWaterLevels] IS OLD.[LowerBoundaryWaterLevels] " + + "AND NEW.[CalculationType] = OLD.[CalculationType] " + + "AND NEW.[WaterLevelType] = OLD.[WaterLevelType];" + + "DETACH SOURCEPROJECT;"; + reader.AssertReturnedDataIsValid(validateCalculation); + + AssertWaveConditionsStepSize(reader, sourceFilePath, "StabilityStoneCoverWaveConditionsCalculationEntity"); + } + + private static void AssertWaveImpactAsphaltCoverWaveConditionsCalculation(MigratedDatabaseReader reader, + string sourceFilePath) + { + string validateCalculation = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.WaveImpactAsphaltCoverWaveConditionsCalculationEntity " + + ") " + + "FROM WaveImpactAsphaltCoverWaveConditionsCalculationEntity NEW " + + "JOIN SOURCEPROJECT.WaveImpactAsphaltCoverWaveConditionsCalculationEntity OLD USING(WaveImpactAsphaltCoverWaveConditionsCalculationEntityId) " + + "WHERE NEW.[CalculationGroupEntityId] = OLD.[CalculationGroupEntityId] " + + "AND NEW.[ForeshoreProfileEntityId] IS OLD.[ForeshoreProfileEntityId] " + + "AND NEW.[HydraulicLocationEntityId] IS OLD.[HydraulicLocationEntityId] " + + "AND NEW.[HydraulicLocationCalculationForTargetProbabilityCollectionEntityId] IS OLD.[HydraulicLocationCalculationForTargetProbabilityCollectionEntityId] " + + "AND NEW.\"Order\" = OLD.\"Order\" " + + "AND NEW.[Name] IS OLD.[Name] " + + "AND NEW.[Comments] IS OLD.[Comments] " + + "AND NEW.[UseBreakWater] = OLD.[UseBreakWater] " + + "AND NEW.[BreakWaterType] = OLD.[BreakWaterType] " + + "AND NEW.[BreakWaterHeight] IS OLD.[BreakWaterHeight] " + + "AND NEW.[UseForeshore] = OLD.[UseForeshore] " + + "AND NEW.[Orientation] IS OLD.[Orientation] " + + "AND NEW.[UpperBoundaryRevetment] IS OLD.[UpperBoundaryRevetment] " + + "AND NEW.[LowerBoundaryRevetment] IS OLD.[LowerBoundaryRevetment] " + + "AND NEW.[UpperBoundaryWaterLevels] IS OLD.[UpperBoundaryWaterLevels] " + + "AND NEW.[LowerBoundaryWaterLevels] IS OLD.[LowerBoundaryWaterLevels] " + + "AND NEW.[WaterLevelType] = OLD.[WaterLevelType];" + + "DETACH SOURCEPROJECT;"; + reader.AssertReturnedDataIsValid(validateCalculation); + + AssertWaveConditionsStepSize(reader, sourceFilePath, "WaveImpactAsphaltCoverWaveConditionsCalculationEntity"); + } + + private static void AssertWaveConditionsStepSize(MigratedDatabaseReader reader, + string sourceFilePath, + string calculationEntityName) + { + string validateStepSize = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCE; " + + "SELECT " + + "COALESCE (SUM([IsInvalid]), 0) = 0 " + + "FROM ( " + + "SELECT " + + "CASE " + + "WHEN OLD.[StepSize] = 1 AND NEW.[StepSize] = 0.5 THEN 0 " + + "WHEN OLD.[StepSize] = 2 AND NEW.[StepSize] = 1.0 THEN 0 " + + "WHEN OLD.[StepSize] = 3 AND NEW.[StepSize] = 2.0 THEN 0 " + + "ELSE 1 " + + "END AS [IsInvalid] " + + $"FROM {calculationEntityName} NEW " + + $"JOIN SOURCE.{calculationEntityName} OLD USING({calculationEntityName}Id)" + + "); " + + "DETACH DATABASE SOURCE;"; + reader.AssertReturnedDataIsValid(validateStepSize); + } + private static void AssertHydraulicLocationOutput(MigratedDatabaseReader reader) { const string validateOutput =