Index: Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/DatabaseStructure21.2.sql =================================================================== diff -u -r5a893e30153aefd5b3366a14adcca4acb556016e -r6698fe75e6ecebbb7d7e8ebed2e8011b74a3274a --- Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/DatabaseStructure21.2.sql (.../DatabaseStructure21.2.sql) (revision 5a893e30153aefd5b3366a14adcca4acb556016e) +++ Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/DatabaseStructure21.2.sql (.../DatabaseStructure21.2.sql) (revision 6698fe75e6ecebbb7d7e8ebed2e8011b74a3274a) @@ -1,6 +1,6 @@ /* ---------------------------------------------------- */ /* Generated by Enterprise Architect Version 14.1 */ -/* Created On : 27-sep-2021 13:17:16 */ +/* Created On : 28-sep-2021 09:27:57 */ /* DBMS : SQLite */ /* ---------------------------------------------------- */ @@ -1018,7 +1018,6 @@ 'UpperBoundaryWaterLevels' REAL NULL, 'LowerBoundaryWaterLevels' REAL NULL, 'StepSize' TINYINT (1) NOT NULL, -- Enum: 1 = 0.5, 2 = 1.0, 3 = 2.0 - 'CategoryType' TINYINT (1) NOT NULL, -- Enum: 1 = MechanismSpecificFactorizedSignalingNorm, 2 = MechanismSpecificSignalingNorm, 3 = MechanismSpecificLowerLimitNorm, 4 = LowerLimitNorm, 5 = FactorizedLowerLimitNorm 'CalculationType' TINYINT (1) NOT NULL, -- Enum: 1 = WaveRunUp 2 = WaveImpact 3 = WaveRunUpAndWaveImpact 4 = TailorMadeWaveImpact 5 = WaveRunUpAndTailorMadeWaveImpact 6 = All 'WaterLevelType' TINYINT (1) NOT NULL, -- Enum: 1 = None, 2 = LowerLimit, 3 = Signaling, 4 = UserDefinedTargetProbability CONSTRAINT 'FK_GrassCoverErosionOutwardsWaveConditionsCalculationEntity_CalculationGroupEntity' FOREIGN KEY ('CalculationGroupEntityId') REFERENCES 'CalculationGroupEntity' ('CalculationGroupEntityId') ON DELETE Cascade ON UPDATE Cascade, @@ -1910,7 +1909,6 @@ 'UpperBoundaryWaterLevels' REAL NULL, 'LowerBoundaryWaterLevels' REAL NULL, 'StepSize' TINYINT (1) NOT NULL, -- Enum: 1 = 0.5, 2 = 1.0, 3 = 2.0 - 'CategoryType' TINYINT (1) NOT NULL, -- Enum: 1 = FactorizedSignalingNorm, 2 = SignalingNorm, 3 = LowerLimitNorm, 4 = FactorizedLowerLimitNorm 'CalculationType' TINYINT (1) NOT NULL, -- Enum: 1 = Blocks, 2 = Columns, 3 = Both 'WaterLevelType' TINYINT (1) NOT NULL, -- Enum: 1 = None, 2 = LowerLimit, 3 = Signaling, 4 = UserDefinedTargetProbability CONSTRAINT 'FK_StabilityStoneCoverWaveConditionsCalculationEntity_CalculationGroupEntity' FOREIGN KEY ('CalculationGroupEntityId') REFERENCES 'CalculationGroupEntity' ('CalculationGroupEntityId') ON DELETE Cascade ON UPDATE Cascade, @@ -2074,7 +2072,6 @@ 'UpperBoundaryWaterLevels' REAL NULL, 'LowerBoundaryWaterLevels' REAL NULL, 'StepSize' TINYINT (1) NOT NULL, -- Enum: 1 = 0.5, 2 = 1.0, 3 = 2.0 - 'CategoryType' TINYINT (1) NOT NULL, -- Enum: 1 = FactorizedSignalingNorm, 2 = SignalingNorm, 3 = LowerLimitNorm, 4 = FactorizedLowerLimitNorm 'WaterLevelType' TINYINT (1) NOT NULL, -- Enum: 1 = None, 2 = LowerLimit, 3 = Signaling, 4 = UserDefinedTargetProbability CONSTRAINT 'FK_WaveImpactAsphaltCoverWaveConditionsCalculationEntity_CalculationGroupEntity' FOREIGN KEY ('CalculationGroupEntityId') REFERENCES 'CalculationGroupEntity' ('CalculationGroupEntityId') ON DELETE Cascade ON UPDATE Cascade, CONSTRAINT 'FK_WaveImpactAsphaltCoverWaveConditionsCalculationEntity_ForeshoreProfileEntity' FOREIGN KEY ('ForeshoreProfileEntityId') REFERENCES 'ForeshoreProfileEntity' ('ForeshoreProfileEntityId') ON DELETE Set Null ON UPDATE Cascade, Index: Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/Migration_21.1_21.2.sql =================================================================== diff -u -rd3307452db981d9940550d412c832e08db1f34c9 -r6698fe75e6ecebbb7d7e8ebed2e8011b74a3274a --- Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/Migration_21.1_21.2.sql (.../Migration_21.1_21.2.sql) (revision d3307452db981d9940550d412c832e08db1f34c9) +++ Riskeer/Migration/src/Riskeer.Migration.Core/EmbeddedResources/Migration_21.1_21.2.sql (.../Migration_21.1_21.2.sql) (revision 6698fe75e6ecebbb7d7e8ebed2e8011b74a3274a) @@ -85,6 +85,54 @@ [ForeshoreProfileCollectionSourcePath] FROM [SOURCEPROJECT].GrassCoverErosionOutwardsFailureMechanismMetaEntity; INSERT INTO GrassCoverErosionOutwardsSectionResultEntity SELECT * FROM [SOURCEPROJECT].GrassCoverErosionOutwardsSectionResultEntity; +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], + NULL, + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + [StepSize], + [CalculationType], + CASE WHEN [CategoryType] = 4 + THEN 2 + ELSE + 1 + END +FROM [SOURCEPROJECT].GrassCoverErosionOutwardsWaveConditionsCalculationEntity; INSERT INTO GrassCoverSlipOffInwardsSectionResultEntity SELECT * FROM [SOURCEPROJECT].GrassCoverSlipOffInwardsSectionResultEntity; INSERT INTO GrassCoverSlipOffOutwardsSectionResultEntity SELECT * FROM [SOURCEPROJECT].GrassCoverSlipOffOutwardsSectionResultEntity; INSERT INTO HeightStructureEntity SELECT * FROM [SOURCEPROJECT].HeightStructureEntity; @@ -166,6 +214,56 @@ INSERT INTO StabilityPointStructuresSectionResultEntity SELECT * FROM [SOURCEPROJECT].StabilityPointStructuresSectionResultEntity; INSERT INTO StabilityStoneCoverFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].StabilityStoneCoverFailureMechanismMetaEntity; INSERT INTO StabilityStoneCoverSectionResultEntity SELECT * FROM [SOURCEPROJECT].StabilityStoneCoverSectionResultEntity; +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], + NULL, + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + [StepSize], + [CalculationType], + CASE WHEN [CategoryType] = 2 + THEN 3 + WHEN [CategoryType] = 3 + THEN 2 + ELSE + 1 + END +FROM [SOURCEPROJECT].StabilityStoneCoverWaveConditionsCalculationEntity; INSERT INTO StochastEntity SELECT * FROM [SOURCEPROJECT].StochastEntity; INSERT INTO StochasticSoilModelEntity SELECT * FROM [SOURCEPROJECT].StochasticSoilModelEntity; INSERT INTO StrengthStabilityLengthwiseConstructionSectionResultEntity SELECT * FROM [SOURCEPROJECT].StrengthStabilityLengthwiseConstructionSectionResultEntity; @@ -189,6 +287,54 @@ INSERT INTO WaterPressureAsphaltCoverSectionResultEntity SELECT * FROM [SOURCEPROJECT].WaterPressureAsphaltCoverSectionResultEntity; INSERT INTO WaveImpactAsphaltCoverFailureMechanismMetaEntity SELECT * FROM [SOURCEPROJECT].WaveImpactAsphaltCoverFailureMechanismMetaEntity; INSERT INTO WaveImpactAsphaltCoverSectionResultEntity SELECT * FROM [SOURCEPROJECT].WaveImpactAsphaltCoverSectionResultEntity; +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], + NULL, + [Order], + [Name], + [Comments], + [UseBreakWater], + [BreakWaterType], + [BreakWaterHeight], + [UseForeshore], + [Orientation], + [UpperBoundaryRevetment], + [LowerBoundaryRevetment], + [UpperBoundaryWaterLevels], + [LowerBoundaryWaterLevels], + [StepSize], + CASE WHEN [CategoryType] = 2 + THEN 3 + WHEN [CategoryType] = 3 + THEN 2 + ELSE + 1 + END +FROM [SOURCEPROJECT].WaveImpactAsphaltCoverWaveConditionsCalculationEntity; /* Map all calculation groups to failure mechanism ids. Index: Riskeer/Migration/test/Riskeer.Migration.Integration.Test/MigrationTo212IntegrationTest.cs =================================================================== diff -u -rd3307452db981d9940550d412c832e08db1f34c9 -r6698fe75e6ecebbb7d7e8ebed2e8011b74a3274a --- Riskeer/Migration/test/Riskeer.Migration.Integration.Test/MigrationTo212IntegrationTest.cs (.../MigrationTo212IntegrationTest.cs) (revision d3307452db981d9940550d412c832e08db1f34c9) +++ Riskeer/Migration/test/Riskeer.Migration.Integration.Test/MigrationTo212IntegrationTest.cs (.../MigrationTo212IntegrationTest.cs) (revision 6698fe75e6ecebbb7d7e8ebed2e8011b74a3274a) @@ -61,6 +61,7 @@ AssertDatabase(reader); AssertAssessmentSection(reader, sourceFilePath); + AssertGrassCoverErosionFailureMechanismMetaEntity(reader, sourceFilePath); AssertHydraulicBoundaryLocationCalculation(reader, sourceFilePath); AssertHydraulicLocationOutput(reader); @@ -69,6 +70,11 @@ AssertDuneLocationCalculation(reader); AssertDuneLocationCalculationOutput(reader); + AssertGrassCoverErosionOutwardsCalculations(reader, sourceFilePath); + AssertStabilityStoneCoverCalculations(reader, sourceFilePath); + AssertWaveImpactAsphaltCoverCalculations(reader, sourceFilePath); + AssertWaveConditionCalculationOutputs(reader); + AssertGrassCoverErosionInwardsCalculation(reader, sourceFilePath); AssertGrassCoverErosionInwardsOutput(reader); } @@ -155,6 +161,25 @@ reader.AssertReturnedDataIsValid(validateHydraulicLocationCalculationMapping); } + private static void AssertGrassCoverErosionFailureMechanismMetaEntity(MigratedDatabaseReader reader, string sourceFilePath) + { + string validateFailureMechanismEntity = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.GrassCoverErosionOutwardsFailureMechanismMetaEntity " + + ") " + + "FROM GrassCoverErosionOutwardsFailureMechanismMetaEntity NEW " + + "JOIN SOURCEPROJECT.GrassCoverErosionOutwardsFailureMechanismMetaEntity OLD USING(GrassCoverErosionOutwardsFailureMechanismMetaEntityId) " + + "WHERE NEW.[FailureMechanismEntityId] = OLD.[FailureMechanismEntityId] " + + "AND NEW.[ForeshoreProfileCollectionSourcePath] IS OLD.[ForeshoreProfileCollectionSourcePath] " + + "AND NEW.[N] = OLD.[N];" + + "DETACH SOURCEPROJECT;"; + + reader.AssertReturnedDataIsValid(validateFailureMechanismEntity); + } + private static void AssertHydraulicLocationOutput(MigratedDatabaseReader reader) { const string validateOutput = @@ -353,6 +378,222 @@ reader.AssertReturnedDataIsValid(validateOvertoppingRateOutput); } + private static void AssertGrassCoverErosionOutwardsCalculations(MigratedDatabaseReader reader, string sourceFilePath) + { + string validateLowerLimitCalculations = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.GrassCoverErosionOutwardsWaveConditionsCalculationEntity " + + "WHERE [CategoryType] = 4 " + + ") " + + "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 NULL " + + "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.[StepSize] = OLD.[StepSize] " + + "AND NEW.[CalculationType] = OLD.[CalculationType] " + + "AND NEW.[WaterLevelType] = 2;" + + "DETACH SOURCEPROJECT;"; + + reader.AssertReturnedDataIsValid(validateLowerLimitCalculations); + + string validateOtherCalculations = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.GrassCoverErosionOutwardsWaveConditionsCalculationEntity " + + "WHERE [CategoryType] != 4 " + + ") " + + "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 NULL " + + "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.[StepSize] = OLD.[StepSize] " + + "AND NEW.[CalculationType] = OLD.[CalculationType] " + + "AND NEW.[WaterLevelType] = 1;" + + "DETACH SOURCEPROJECT;"; + + reader.AssertReturnedDataIsValid(validateOtherCalculations); + } + + private static void AssertStabilityStoneCoverCalculations(MigratedDatabaseReader reader, string sourceFilePath) + { + string validateNormBaseQueryFormat = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.StabilityStoneCoverWaveConditionsCalculationEntity " + + "WHERE [CategoryType] = {0} " + + ") " + + "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 NULL " + + "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.[StepSize] = OLD.[StepSize] " + + "AND NEW.[CalculationType] = OLD.[CalculationType] " + + "AND NEW.[WaterLevelType] = {1};" + + "DETACH SOURCEPROJECT;"; + + reader.AssertReturnedDataIsValid(string.Format(validateNormBaseQueryFormat, 2, 3)); + reader.AssertReturnedDataIsValid(string.Format(validateNormBaseQueryFormat, 3, 2)); + + string validateOtherCalculations = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.StabilityStoneCoverWaveConditionsCalculationEntity " + + "WHERE [CategoryType] != 2 AND [CategoryType] != 3" + + ") " + + "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 NULL " + + "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.[StepSize] = OLD.[StepSize] " + + "AND NEW.[CalculationType] = OLD.[CalculationType] " + + "AND NEW.[WaterLevelType] = 1;" + + "DETACH SOURCEPROJECT;"; + + reader.AssertReturnedDataIsValid(validateOtherCalculations); + } + private static void AssertWaveImpactAsphaltCoverCalculations(MigratedDatabaseReader reader, string sourceFilePath) + { + string validateNormBaseQueryFormat = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.WaveImpactAsphaltCoverWaveConditionsCalculationEntity " + + "WHERE [CategoryType] = {0} " + + ") " + + "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 NULL " + + "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.[StepSize] = OLD.[StepSize] " + + "AND NEW.[WaterLevelType] = {1};" + + "DETACH SOURCEPROJECT;"; + + reader.AssertReturnedDataIsValid(string.Format(validateNormBaseQueryFormat, 2, 3)); + reader.AssertReturnedDataIsValid(string.Format(validateNormBaseQueryFormat, 3, 2)); + + string validateOtherCalculations = + $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " + + "SELECT COUNT() = " + + "(" + + "SELECT COUNT() " + + "FROM SOURCEPROJECT.WaveImpactAsphaltCoverWaveConditionsCalculationEntity " + + "WHERE [CategoryType] != 2 AND [CategoryType] != 3" + + ") " + + "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 NULL " + + "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.[StepSize] = OLD.[StepSize] " + + "AND NEW.[WaterLevelType] = 1;" + + "DETACH SOURCEPROJECT;"; + + reader.AssertReturnedDataIsValid(validateOtherCalculations); + } + + private static void AssertWaveConditionCalculationOutputs(MigratedDatabaseReader reader) + { + const string validateOutputQueryFormat = + "SELECT COUNT() = 0 " + + "FROM [{0}]; "; + reader.AssertReturnedDataIsValid(string.Format(validateOutputQueryFormat, "GrassCoverErosionOutwardsWaveConditionsOutputEntity")); + reader.AssertReturnedDataIsValid(string.Format(validateOutputQueryFormat, "StabilityStoneCoverWaveConditionsOutputEntity")); + reader.AssertReturnedDataIsValid(string.Format(validateOutputQueryFormat, "WaveImpactAsphaltCoverWaveConditionsOutputEntity")); + } + private static void AssertTablesContentMigrated(MigratedDatabaseReader reader, string sourceFilePath) { string[] tables =