Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.IO/ClosingStructuresImporter.cs =================================================================== diff -u -rf88343c0590cb04c7135ce141872940e59325927 -r81eeb27299fa8e87731b4a362a3671c8f3cfac02 --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.IO/ClosingStructuresImporter.cs (.../ClosingStructuresImporter.cs) (revision f88343c0590cb04c7135ce141872940e59325927) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.IO/ClosingStructuresImporter.cs (.../ClosingStructuresImporter.cs) (revision 81eeb27299fa8e87731b4a362a3671c8f3cfac02) @@ -76,8 +76,7 @@ ValidationResult parameterRowsValidationResult = StructuresParameterRowsValidator.ValidateClosingStructuresParameters(structureParameterRows); if (!parameterRowsValidationResult.IsValid) { - LogValidationErrorForStructure(structureLocation.Name, structureLocation.Id, parameterRowsValidationResult.ErrorMessages); - continue; + ThrowValidationErrorForStructure(structureLocation.Name, structureLocation.Id, parameterRowsValidationResult.ErrorMessages); } ClosingStructure closingStructure = CreateClosingStructure(structureLocation, structureParameterRows); Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.IO.Test/ClosingStructuresImporterTest.cs =================================================================== diff -u -rf88343c0590cb04c7135ce141872940e59325927 -r81eeb27299fa8e87731b4a362a3671c8f3cfac02 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.IO.Test/ClosingStructuresImporterTest.cs (.../ClosingStructuresImporterTest.cs) (revision f88343c0590cb04c7135ce141872940e59325927) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.IO.Test/ClosingStructuresImporterTest.cs (.../ClosingStructuresImporterTest.cs) (revision 81eeb27299fa8e87731b4a362a3671c8f3cfac02) @@ -52,7 +52,7 @@ } [Test] - public void Import_ValidIncompleteFile_LogAndTrue() + public void Import_ValidIncompleteFile_LogAndFalse() { // Setup string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, @@ -68,21 +68,13 @@ // Assert string csvFilePath = Path.ChangeExtension(filePath, "csv"); - string[] expectedSubMessages = + string message = CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", new[] { "Geen geldige parameter definities gevonden." - }; - string[] expectedMessages = - { - CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Lely (93k4)", "KUNST3", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal de Stontele (94k1)", "KUNST4", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerkeersluis (93k1)", "KUNST5", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerschutsluis (93k2)", "KUNST6", expectedSubMessages) - }; - TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); - Assert.IsTrue(importResult); - Assert.AreEqual(1, importTarget.Count); + }); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(message, LogLevelConstant.Error)); + Assert.IsFalse(importResult); + Assert.AreEqual(0, importTarget.Count); } [Test] @@ -148,26 +140,16 @@ // Assert string csvFilePath = Path.ChangeExtension(filePath, "csv"); - string[] expectedSubMessages = - { - "Geen geldige parameter definities gevonden." - }; - string[] expectedMessages = - { - CreateExpectedErrorMessage(csvFilePath, "Coupure Den Oever (90k1)", "KUNST1", - new[] - { - "De waarde voor parameter 'KW_BETSLUIT3' op regel 13, kolom 'Numeriekewaarde', moet in het bereik [0,0, 360,0] liggen.", - "Parameter 'KW_BETSLUIT5' komt meerdere keren voor." - }), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Lely (93k4)", "KUNST3", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal de Stontele (94k1)", "KUNST4", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerkeersluis (93k1)", "KUNST5", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerschutsluis (93k2)", "KUNST6", expectedSubMessages) - }; - TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); - Assert.IsTrue(importResult); + string message = CreateExpectedErrorMessage( + csvFilePath, "Coupure Den Oever (90k1)", "KUNST1", + new[] + { + "De waarde voor parameter 'KW_BETSLUIT3' op regel 13, kolom 'Numeriekewaarde', moet in het bereik [0,0, 360,0] liggen.", + "Parameter 'KW_BETSLUIT5' komt meerdere keren voor." + }); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(message, LogLevelConstant.Error), 1 + ); + Assert.IsFalse(importResult); Assert.AreEqual(0, importTarget.Count); } Index: Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/StructuresImporter.cs =================================================================== diff -u -r250f2f821d2540a5c562d5fa9ccaab669dacb24b -r81eeb27299fa8e87731b4a362a3671c8f3cfac02 --- Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/StructuresImporter.cs (.../StructuresImporter.cs) (revision 250f2f821d2540a5c562d5fa9ccaab669dacb24b) +++ Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/StructuresImporter.cs (.../StructuresImporter.cs) (revision 81eeb27299fa8e87731b4a362a3671c8f3cfac02) @@ -32,6 +32,7 @@ using Core.Common.Utils.Builders; using log4net; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.IO.Exceptions; using Ringtoets.Common.IO.Properties; using Ringtoets.Common.IO.Structures; @@ -81,7 +82,15 @@ } NotifyProgress(Resources.Importer_ProgressText_Adding_imported_data_to_data_model, 1, 1); - CreateStructures(importStructureLocationsResult, importStructureParameterRowsDataResult); + try + { + CreateStructures(importStructureLocationsResult, importStructureParameterRowsDataResult); + } + catch (CriticalFileValidationException e) + { + log.Error(e.Message); + return false; + } return true; } @@ -120,14 +129,15 @@ return (RoundedDouble) structuresParameterRow.VarianceValue; } - protected void LogValidationErrorForStructure(string structureName, string structureId, IEnumerable validationErrors) + protected void ThrowValidationErrorForStructure(string structureName, string structureId, IEnumerable validationErrors) { string shortMessage = new FileReaderErrorMessageBuilder(GetStructureDataCsvFilePath()) .WithSubject(string.Format(Resources.StructuresImporter_StructureName_0_StructureId_1_, structureName, structureId)) .Build(Resources.StructuresImporter_LogValidationErrorForStructure_Click_details_for_full_message_0_); string messageRemainder = string.Format(Resources.StructuresImporter_LogValidationErrorForStructure_One_or_more_erors_skip_structure_ErrorMessageList_0_, string.Join(Environment.NewLine, validationErrors.Select(msg => "* " + msg))); - log.ErrorFormat(shortMessage, messageRemainder); + string message = string.Format(shortMessage, messageRemainder); + throw new CriticalFileValidationException(message); } protected void TrySetConstructionProperty(Action, string> setPropertyAction, Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs =================================================================== diff -u -r250f2f821d2540a5c562d5fa9ccaab669dacb24b -r81eeb27299fa8e87731b4a362a3671c8f3cfac02 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs (.../HeightStructuresImporter.cs) (revision 250f2f821d2540a5c562d5fa9ccaab669dacb24b) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs (.../HeightStructuresImporter.cs) (revision 81eeb27299fa8e87731b4a362a3671c8f3cfac02) @@ -85,8 +85,7 @@ ValidationResult parameterRowsValidationResult = StructuresParameterRowsValidator.ValidateHeightStructuresParameters(structureParameterRows); if (!parameterRowsValidationResult.IsValid) { - LogValidationErrorForStructure(structureLocation.Name, structureLocation.Id, parameterRowsValidationResult.ErrorMessages); - continue; + ThrowValidationErrorForStructure(structureLocation.Name, structureLocation.Id, parameterRowsValidationResult.ErrorMessages); } HeightStructure heightStructure = CreateHeightStructure(structureLocation, structureParameterRows); Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresImporterTest.cs =================================================================== diff -u -r250f2f821d2540a5c562d5fa9ccaab669dacb24b -r81eeb27299fa8e87731b4a362a3671c8f3cfac02 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresImporterTest.cs (.../HeightStructuresImporterTest.cs) (revision 250f2f821d2540a5c562d5fa9ccaab669dacb24b) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresImporterTest.cs (.../HeightStructuresImporterTest.cs) (revision 81eeb27299fa8e87731b4a362a3671c8f3cfac02) @@ -69,7 +69,7 @@ } [Test] - public void Import_ValidIncompleteFile_LogAndTrue() + public void Import_ValidIncompleteFile_LogAndFalse() { // Setup string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, @@ -89,22 +89,14 @@ // Assert string csvFilePath = Path.ChangeExtension(filePath, "csv"); - string[] expectedSubMessages = + string message = CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", new[] { "Geen geldige parameter definities gevonden." - }; - string[] expectedMessages = - { - CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Lely (93k4)", "KUNST3", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal de Stontele (94k1)", "KUNST4", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerkeersluis (93k1)", "KUNST5", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerschutsluis (93k2)", "KUNST6", expectedSubMessages) - }; - TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); - Assert.IsTrue(importResult); - Assert.AreEqual(1, failureMechanism.HeightStructures.Count); - Assert.AreEqual(filePath, failureMechanism.HeightStructures.SourcePath); + }); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(message, LogLevelConstant.Error)); + Assert.IsFalse(importResult); + Assert.AreEqual(0, failureMechanism.HeightStructures.Count); + Assert.IsNull(failureMechanism.HeightStructures.SourcePath); } [Test] @@ -152,7 +144,7 @@ [Test] [SetCulture("nl-NL")] - public void Import_InvalidCsvFile_LogAndTrue() + public void Import_InvalidCsvFile_LogAndFalse() { // Setup string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, @@ -171,28 +163,17 @@ // Assert string csvFilePath = Path.ChangeExtension(filePath, "csv"); - string[] expectedSubMessages = - { - "Geen geldige parameter definities gevonden." - }; - string[] expectedMessages = - { - CreateExpectedErrorMessage(csvFilePath, "Coupure Den Oever (90k1)", "KUNST1", - new[] - { - "De waarde voor parameter 'KW_HOOGTE1' op regel 2, kolom 'Numeriekewaarde', moet in het bereik [0,0, 360,0] liggen.", - "Parameter 'KW_HOOGTE2' komt meerdere keren voor." - }), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Lely (93k4)", "KUNST3", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal de Stontele (94k1)", "KUNST4", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerkeersluis (93k1)", "KUNST5", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerschutsluis (93k2)", "KUNST6", expectedSubMessages) - }; - TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); - Assert.IsTrue(importResult); + string message = CreateExpectedErrorMessage( + csvFilePath, "Coupure Den Oever (90k1)", "KUNST1", + new[] + { + "De waarde voor parameter 'KW_HOOGTE1' op regel 2, kolom 'Numeriekewaarde', moet in het bereik [0,0, 360,0] liggen.", + "Parameter 'KW_HOOGTE2' komt meerdere keren voor." + }); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(message, LogLevelConstant.Error), 1); + Assert.IsFalse(importResult); Assert.AreEqual(0, failureMechanism.HeightStructures.Count); - Assert.AreEqual(filePath, failureMechanism.HeightStructures.SourcePath); + Assert.IsNull(failureMechanism.HeightStructures.SourcePath); } [Test] Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/StabilityPointStructuresImporter.cs =================================================================== diff -u -rff948d4633181ead2677ab35467a93b4118c6751 -r81eeb27299fa8e87731b4a362a3671c8f3cfac02 --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/StabilityPointStructuresImporter.cs (.../StabilityPointStructuresImporter.cs) (revision ff948d4633181ead2677ab35467a93b4118c6751) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.IO/StabilityPointStructuresImporter.cs (.../StabilityPointStructuresImporter.cs) (revision 81eeb27299fa8e87731b4a362a3671c8f3cfac02) @@ -76,8 +76,7 @@ ValidationResult parameterRowsValidationResult = StructuresParameterRowsValidator.ValidateStabilityPointStructuresParameters(structureParameterRows); if (!parameterRowsValidationResult.IsValid) { - LogValidationErrorForStructure(structureLocation.Name, structureLocation.Id, parameterRowsValidationResult.ErrorMessages); - continue; + ThrowValidationErrorForStructure(structureLocation.Name, structureLocation.Id, parameterRowsValidationResult.ErrorMessages); } StabilityPointStructure stabilityPointStructure = CreateStabilityPointStructure(structureLocation, structureParameterRows); Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/StabilityPointStructuresImporterTest.cs =================================================================== diff -u -rff948d4633181ead2677ab35467a93b4118c6751 -r81eeb27299fa8e87731b4a362a3671c8f3cfac02 --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/StabilityPointStructuresImporterTest.cs (.../StabilityPointStructuresImporterTest.cs) (revision ff948d4633181ead2677ab35467a93b4118c6751) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.IO.Test/StabilityPointStructuresImporterTest.cs (.../StabilityPointStructuresImporterTest.cs) (revision 81eeb27299fa8e87731b4a362a3671c8f3cfac02) @@ -52,7 +52,7 @@ } [Test] - public void Import_ValidIncompleteFile_LogAndTrue() + public void Import_ValidIncompleteFile_LogAndFalse() { // Setup string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, @@ -68,21 +68,13 @@ // Assert string csvFilePath = Path.ChangeExtension(filePath, "csv"); - string[] expectedSubMessages = + string message = CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", new[] { "Geen geldige parameter definities gevonden." - }; - string[] expectedMessages = - { - CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Lely (93k4)", "KUNST3", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal de Stontele (94k1)", "KUNST4", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerkeersluis (93k1)", "KUNST5", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerschutsluis (93k2)", "KUNST6", expectedSubMessages) - }; - TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); - Assert.IsTrue(importResult); - Assert.AreEqual(1, importTarget.Count); + }); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(message, LogLevelConstant.Error)); + Assert.IsFalse(importResult); + Assert.AreEqual(0, importTarget.Count); } [Test] @@ -165,26 +157,15 @@ // Assert string csvFilePath = Path.ChangeExtension(filePath, "csv"); - string[] expectedSubMessages = - { - "Geen geldige parameter definities gevonden." - }; - string[] expectedMessages = - { - CreateExpectedErrorMessage(csvFilePath, "Coupure Den Oever (90k1)", "KUNST1", - new[] - { - "Parameter 'KW_STERSTAB9' komt meerdere keren voor.", - "De waarde voor parameter 'KW_STERSTAB10' op regel 37, kolom 'Numeriekewaarde', moet een getal zijn groter dan 0." - }), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Leemans (93k3)", "KUNST2", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal Lely (93k4)", "KUNST3", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Gemaal de Stontele (94k1)", "KUNST4", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerkeersluis (93k1)", "KUNST5", expectedSubMessages), - CreateExpectedErrorMessage(csvFilePath, "Stontelerschutsluis (93k2)", "KUNST6", expectedSubMessages) - }; - TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); - Assert.IsTrue(importResult); + string message = CreateExpectedErrorMessage( + csvFilePath, "Coupure Den Oever (90k1)", "KUNST1", + new[] + { + "Parameter 'KW_STERSTAB9' komt meerdere keren voor.", + "De waarde voor parameter 'KW_STERSTAB10' op regel 37, kolom 'Numeriekewaarde', moet een getal zijn groter dan 0." + }); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(message, LogLevelConstant.Error), 1); + Assert.IsFalse(importResult); Assert.AreEqual(0, importTarget.Count); }