Index: Ringtoets/Migration/src/Ringtoets.Migration.Core/EmbeddedResources/Migration_17.3_18.1.sql =================================================================== diff -u -r19382b3670a64bb81d862b8a423d2d4ed1736420 -re9a3ea2b12aec1bdf19ec28a3894cf6b0c0312c2 --- Ringtoets/Migration/src/Ringtoets.Migration.Core/EmbeddedResources/Migration_17.3_18.1.sql (.../Migration_17.3_18.1.sql) (revision 19382b3670a64bb81d862b8a423d2d4ed1736420) +++ Ringtoets/Migration/src/Ringtoets.Migration.Core/EmbeddedResources/Migration_17.3_18.1.sql (.../Migration_17.3_18.1.sql) (revision e9a3ea2b12aec1bdf19ec28a3894cf6b0c0312c2) @@ -78,7 +78,11 @@ [Orientation], [BreakWaterType], [BreakWaterHeight], - [ForeshoreXml], + REPLACE( + REPLACE(ForeshoreXml, ' xmlns="http://schemas.datacontract.org/2004/07/Application.Ringtoets.Storage.Serializers"', ''), + 'Point2DXmlSerializer.SerializablePoint2D', + 'SerializablePoint2D' + ), REPLACE( REPLACE(DikeGeometryXml, ' xmlns="http://schemas.datacontract.org/2004/07/Application.Ringtoets.Storage.Serializers"', ''), 'RoughnessPointXmlSerializer.SerializableRoughnessPoint', @@ -117,11 +121,55 @@ FROM [SOURCEPROJECT].DuneErosionSectionResultEntity; INSERT INTO DuneLocationEntity SELECT * FROM [SOURCEPROJECT].DuneLocationEntity; INSERT INTO FailureMechanismEntity SELECT * FROM [SOURCEPROJECT].FailureMechanismEntity; -INSERT INTO FailureMechanismSectionEntity SELECT * FROM [SOURCEPROJECT].FailureMechanismSectionEntity; +INSERT INTO FailureMechanismSectionEntity ( + [FailureMechanismSectionEntityId], + [FailureMechanismEntityId], + [Name], + [FailureMechanismSectionPointXml]) +SELECT + [FailureMechanismSectionEntityId], + [FailureMechanismEntityId], + [Name], + REPLACE( + REPLACE(FailureMechanismSectionPointXml, ' xmlns="http://schemas.datacontract.org/2004/07/Application.Ringtoets.Storage.Serializers"', ''), + 'Point2DXmlSerializer.SerializablePoint2D', + 'SerializablePoint2D' + ) +FROM [SOURCEPROJECT].FailureMechanismSectionEntity; INSERT INTO FaultTreeIllustrationPointEntity SELECT * FROM [SOURCEPROJECT].FaultTreeIllustrationPointEntity; INSERT INTO FaultTreeIllustrationPointStochastEntity SELECT * FROM [SOURCEPROJECT].FaultTreeIllustrationPointStochastEntity; INSERT INTO FaultTreeSubmechanismIllustrationPointEntity SELECT * FROM [SOURCEPROJECT].FaultTreeSubmechanismIllustrationPointEntity; -INSERT INTO ForeshoreProfileEntity SELECT * FROM [SOURCEPROJECT].ForeshoreProfileEntity; +INSERT INTO ForeshoreProfileEntity ( + [ForeshoreProfileEntityId], + [FailureMechanismEntityId], + [Id], + [Name], + [Orientation], + [BreakWaterType], + [BreakWaterHeight], + [GeometryXml], + [X], + [Y], + [X0], + [Order]) +SELECT + [ForeshoreProfileEntityId], + [FailureMechanismEntityId], + [Id], + [Name], + [Orientation], + [BreakWaterType], + [BreakWaterHeight], + REPLACE( + REPLACE(GeometryXml, ' xmlns="http://schemas.datacontract.org/2004/07/Application.Ringtoets.Storage.Serializers"', ''), + 'Point2DXmlSerializer.SerializablePoint2D', + 'SerializablePoint2D' + ), + [X], + [Y], + [X0], + [Order] +FROM [SOURCEPROJECT].ForeshoreProfileEntity; INSERT INTO GeneralResultFaultTreeIllustrationPointEntity SELECT * FROM [SOURCEPROJECT].GeneralResultFaultTreeIllustrationPointEntity; INSERT INTO GeneralResultFaultTreeIllustrationPointStochastEntity SELECT * FROM [SOURCEPROJECT].GeneralResultFaultTreeIllustrationPointStochastEntity; INSERT INTO GeneralResultSubMechanismIllustrationPointEntity SELECT * FROM [SOURCEPROJECT].GeneralResultSubMechanismIllustrationPointEntity; @@ -432,7 +480,63 @@ NULL FROM [SOURCEPROJECT].MacroStabilityInwardsSectionResultEntity; INSERT INTO MacroStabilityInwardsSoilLayerOneDEntity SELECT * FROM [SOURCEPROJECT].MacroStabilityInwardsSoilLayerOneDEntity; -INSERT INTO MacroStabilityInwardsSoilLayerTwoDEntity SELECT * FROM [SOURCEPROJECT].MacroStabilityInwardsSoilLayerTwoDEntity; +INSERT INTO MacroStabilityInwardsSoilLayerTwoDEntity ( + [MacroStabilityInwardsSoilLayerTwoDEntityId], + [ParentMacroStabilityInwardsSoilLayerTwoDEntityId], + [IsAquifer], + [Color], + [MaterialName], + [ShearStrengthModel], + [UsePop], + [AbovePhreaticLevelMean], + [AbovePhreaticLevelCoefficientOfVariation], + [AbovePhreaticLevelShift], + [BelowPhreaticLevelMean], + [BelowPhreaticLevelCoefficientOfVariation], + [BelowPhreaticLevelShift], + [CohesionMean], + [CohesionCoefficientOfVariation], + [FrictionAngleMean], + [FrictionAngleCoefficientOfVariation], + [ShearStrengthRatioMean], + [ShearStrengthRatioCoefficientOfVariation], + [StrengthIncreaseExponentMean], + [StrengthIncreaseExponentCoefficientOfVariation], + [PopMean], + [PopCoefficientOfVariation], + [OuterRingXml], + [Order]) +SELECT + [MacroStabilityInwardsSoilLayerTwoDEntityId], + [ParentMacroStabilityInwardsSoilLayerTwoDEntityId], + [IsAquifer], + [Color], + [MaterialName], + [ShearStrengthModel], + [UsePop], + [AbovePhreaticLevelMean], + [AbovePhreaticLevelCoefficientOfVariation], + [AbovePhreaticLevelShift], + [BelowPhreaticLevelMean], + [BelowPhreaticLevelCoefficientOfVariation], + [BelowPhreaticLevelShift], + [CohesionMean], + [CohesionCoefficientOfVariation], + [FrictionAngleMean], + [FrictionAngleCoefficientOfVariation], + [ShearStrengthRatioMean], + [ShearStrengthRatioCoefficientOfVariation], + [StrengthIncreaseExponentMean], + [StrengthIncreaseExponentCoefficientOfVariation], + [PopMean], + [PopCoefficientOfVariation], + REPLACE( + REPLACE(OuterRingXml, ' xmlns="http://schemas.datacontract.org/2004/07/Application.Ringtoets.Storage.Serializers"', ''), + 'Point2DXmlSerializer.SerializablePoint2D', + 'SerializablePoint2D' + ), + [Order] +FROM [SOURCEPROJECT].MacroStabilityInwardsSoilLayerTwoDEntity; INSERT INTO MacroStabilityInwardsSoilProfileOneDEntity SELECT * FROM [SOURCEPROJECT].MacroStabilityInwardsSoilProfileOneDEntity; INSERT INTO MacroStabilityInwardsSoilProfileTwoDEntity SELECT * FROM [SOURCEPROJECT].MacroStabilityInwardsSoilProfileTwoDEntity; INSERT INTO MacroStabilityInwardsSoilProfileTwoDSoilLayerTwoDEntity SELECT * FROM [SOURCEPROJECT].MacroStabilityInwardsSoilProfileTwoDSoilLayerTwoDEntity; @@ -734,7 +838,23 @@ JOIN [SOURCEPROJECT].AssessmentSectionEntity USING(AssessmentSectionEntityId); INSERT INTO StabilityStoneCoverWaveConditionsOutputEntity SELECT * FROM [SOURCEPROJECT].StabilityStoneCoverWaveConditionsOutputEntity; INSERT INTO StochastEntity SELECT * FROM [SOURCEPROJECT].StochastEntity; -INSERT INTO StochasticSoilModelEntity SELECT * FROM [SOURCEPROJECT].StochasticSoilModelEntity; +INSERT INTO StochasticSoilModelEntity ( + [StochasticSoilModelEntityId], + [FailureMechanismEntityId], + [Name], + [StochasticSoilModelSegmentPointXml], + [Order]) +SELECT + [StochasticSoilModelEntityId], + [FailureMechanismEntityId], + [Name], + REPLACE( + REPLACE(StochasticSoilModelSegmentPointXml, ' xmlns="http://schemas.datacontract.org/2004/07/Application.Ringtoets.Storage.Serializers"', ''), + 'Point2DXmlSerializer.SerializablePoint2D', + 'SerializablePoint2D' + ), + [Order] +FROM [SOURCEPROJECT].StochasticSoilModelEntity; INSERT INTO StrengthStabilityLengthwiseConstructionSectionResultEntity ( [StrengthStabilityLengthwiseConstructionSectionResultEntityId], [FailureMechanismSectionEntityId], @@ -1149,7 +1269,11 @@ [HydraulicDatabaseVersion], [HydraulicDatabaseLocation], [Composition], - [ReferenceLinePointXml], + REPLACE( + REPLACE(ReferenceLinePointXml, ' xmlns="http://schemas.datacontract.org/2004/07/Application.Ringtoets.Storage.Serializers"', ''), + 'Point2DXmlSerializer.SerializablePoint2D', + 'SerializablePoint2D' + ), [Order] FROM [SOURCEPROJECT].AssessmentSectionEntity JOIN ( Index: Ringtoets/Migration/test/Ringtoets.Migration.Integration.Test/MigrationTo181IntegrationTest.cs =================================================================== diff -u -r19382b3670a64bb81d862b8a423d2d4ed1736420 -re9a3ea2b12aec1bdf19ec28a3894cf6b0c0312c2 --- Ringtoets/Migration/test/Ringtoets.Migration.Integration.Test/MigrationTo181IntegrationTest.cs (.../MigrationTo181IntegrationTest.cs) (revision 19382b3670a64bb81d862b8a423d2d4ed1736420) +++ Ringtoets/Migration/test/Ringtoets.Migration.Integration.Test/MigrationTo181IntegrationTest.cs (.../MigrationTo181IntegrationTest.cs) (revision e9a3ea2b12aec1bdf19ec28a3894cf6b0c0312c2) @@ -126,8 +126,9 @@ AssertWaveConditionsCalculations(reader, sourceFilePath); MigratedSerializedDataTestHelper.AssertSerializedMacroStabilityInwardsOutput(reader); - MigratedSerializedDataTestHelper.AssertSerializedDikeProfile(reader); + MigratedSerializedDataTestHelper.AssertSerializedDikeProfileRoughnessPoints(reader); MigratedSerializedDataTestHelper.AssertSerializedSurfaceLine(reader); + MigratedSerializedDataTestHelper.AssertSerializedPoint2DCollection(reader); } AssertLogDatabase(logFilePath); @@ -637,7 +638,6 @@ "AND NEW.HydraulicDatabaseVersion IS OLD.HydraulicDatabaseVersion " + "AND NEW.HydraulicDatabaseLocation IS OLD.HydraulicDatabaseLocation " + "AND NEW.Composition = OLD.Composition " + - "AND NEW.ReferenceLinePointXml IS OLD.ReferenceLinePointXml " + "AND NEW.\"Order\" = OLD.\"Order\"; " + "DETACH DATABASE SOURCEPROJECT;"; @@ -1010,7 +1010,7 @@ /// The namespace is still present. /// The class name of the serialized data is still present. /// - public static void AssertSerializedDikeProfile(MigratedDatabaseReader reader) + public static void AssertSerializedDikeProfileRoughnessPoints(MigratedDatabaseReader reader) { string validateDikeGeometry = "SELECT " + @@ -1042,6 +1042,35 @@ reader.AssertReturnedDataIsValid(validateSurfaceLinePoints); } + + /// + /// Asserts the migrated serialized data related to serialized 2D point collections. + /// + /// The reader to read the migrated database. + /// Thrown when: + /// + /// The namespace is still present. + /// The class name of the serialized data is still present. + /// + public static void AssertSerializedPoint2DCollection(MigratedDatabaseReader reader) + { + reader.AssertReturnedDataIsValid(GenerateSerializedPoint2DValidationQuery("AssessmentSectionEntity", "ReferenceLinePointXml")); + reader.AssertReturnedDataIsValid(GenerateSerializedPoint2DValidationQuery("FailureMechanismSectionEntity", "FailureMechanismSectionPointXml")); + reader.AssertReturnedDataIsValid(GenerateSerializedPoint2DValidationQuery("StochasticSoilModelEntity", "StochasticSoilModelSegmentPointXml")); + reader.AssertReturnedDataIsValid(GenerateSerializedPoint2DValidationQuery("DikeProfileEntity", "ForeshoreXml")); + reader.AssertReturnedDataIsValid(GenerateSerializedPoint2DValidationQuery("ForeshoreProfileEntity", "GeometryXml")); + reader.AssertReturnedDataIsValid(GenerateSerializedPoint2DValidationQuery("MacroStabilityInwardsSoilLayerTwoDEntity", "OuterRingXml")); + } + + private static string GenerateSerializedPoint2DValidationQuery(string tableName, + string columnName) + { + return "SELECT " + + "COUNT() = 0 " + + $"FROM {tableName} " + + $"WHERE LIKE('%Point2DXmlSerializer%', {columnName}) " + + $"OR LIKE('%{oldNamespace}%', {columnName})"; + } } #endregion