Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs =================================================================== diff -u -rad69743281f3934fee4089cb577e078bcb92b736 -r376d4148dc5ffa208c84e70475090e713f2f13c0 --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision ad69743281f3934fee4089cb577e078bcb92b736) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision 376d4148dc5ffa208c84e70475090e713f2f13c0) @@ -64,36 +64,34 @@ private void InitializeDemoReferenceLine(DikeAssessmentSection demoAssessmentSection) { - using (var temporaryShapeFile = new TemporaryImportFile("traject_10-1.shp", - "traject_10-1.dbf", "traject_10-1.prj", "traject_10-1.shx")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(true, "traject_10-1.shp", "traject_10-1.dbf", "traject_10-1.prj", "traject_10-1.shx")) { var importer = new ReferenceLineImporter(); - importer.Import(new ReferenceLineContext(demoAssessmentSection), Path.Combine(temporaryShapeFile.TargetFolderPath, "traject_10-1.shp")); + importer.Import(new ReferenceLineContext(demoAssessmentSection), Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "traject_10-1.shp")); } } private void InitializeDemoHydraulicBoundaryDatabase(DikeAssessmentSection demoAssessmentSection) { - using (var tempPath = new TemporaryImportFile("HRD_dutchcoastsouth.sqlite", "HLCD.sqlite")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(false, "HRD_dutchcoastsouth.sqlite", "HLCD.sqlite")) { using (var hydraulicBoundaryDatabaseImporter = new HydraulicBoundaryDatabaseImporter()) { - hydraulicBoundaryDatabaseImporter.ValidateAndConnectTo(Path.Combine(tempPath.TargetFolderPath, "HRD_dutchcoastsouth.sqlite")); + hydraulicBoundaryDatabaseImporter.ValidateAndConnectTo(Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "HRD_dutchcoastsouth.sqlite")); hydraulicBoundaryDatabaseImporter.Import(new HydraulicBoundaryDatabaseContext(demoAssessmentSection)); } } } private void InitializeDemoFailureMechanismSections(DikeAssessmentSection demoAssessmentSection) { - using (var temporaryShapeFile = new TemporaryImportFile("traject_10-1_vakken.shp", - "traject_10-1_vakken.dbf", "traject_10-1_vakken.prj", "traject_10-1_vakken.shx")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(true, "traject_10-1_vakken.shp", "traject_10-1_vakken.dbf", "traject_10-1_vakken.prj", "traject_10-1_vakken.shx")) { var importer = new FailureMechanismSectionsImporter(); foreach (var failureMechanism in demoAssessmentSection.GetFailureMechanisms()) { var context = new FailureMechanismSectionsContext(failureMechanism, demoAssessmentSection); - importer.Import(context, Path.Combine(temporaryShapeFile.TargetFolderPath, "traject_10-1_vakken.shp")); + importer.Import(context, Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "traject_10-1_vakken.shp")); } } } @@ -102,16 +100,16 @@ { var pipingFailureMechanism = demoAssessmentSection.PipingFailureMechanism; - using (var tempPath = new TemporaryImportFile("DR6_surfacelines.csv", "DR6_surfacelines.krp.csv")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(true, "DR6_surfacelines.csv", "DR6_surfacelines.krp.csv")) { var surfaceLinesImporter = new PipingSurfaceLinesCsvImporter(); - surfaceLinesImporter.Import(pipingFailureMechanism.SurfaceLines, Path.Combine(tempPath.TargetFolderPath, "DR6_surfacelines.csv")); + surfaceLinesImporter.Import(pipingFailureMechanism.SurfaceLines, Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "DR6_surfacelines.csv")); } - using (var tempPath = new TemporaryImportFile("DR6.soil")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(true, "DR6.soil")) { var surfaceLinesImporter = new PipingSoilProfilesImporter(); - surfaceLinesImporter.Import(pipingFailureMechanism.SoilProfiles, Path.Combine(tempPath.TargetFolderPath, "DR6.soil")); + surfaceLinesImporter.Import(pipingFailureMechanism.SoilProfiles, Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "DR6.soil")); } var calculation = pipingFailureMechanism.CalculationsGroup.GetPipingCalculations().First(); Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDuneAssessmentSectionCommand.cs =================================================================== diff -u -rad69743281f3934fee4089cb577e078bcb92b736 -r376d4148dc5ffa208c84e70475090e713f2f13c0 --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDuneAssessmentSectionCommand.cs (.../AddNewDemoDuneAssessmentSectionCommand.cs) (revision ad69743281f3934fee4089cb577e078bcb92b736) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDuneAssessmentSectionCommand.cs (.../AddNewDemoDuneAssessmentSectionCommand.cs) (revision 376d4148dc5ffa208c84e70475090e713f2f13c0) @@ -58,36 +58,34 @@ private void InitializeDemoReferenceLine(DuneAssessmentSection demoAssessmentSection) { - using (var temporaryShapeFile = new TemporaryImportFile("traject_10-1.shp", - "traject_10-1.dbf", "traject_10-1.prj", "traject_10-1.shx")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(true, "traject_10-1.shp", "traject_10-1.dbf", "traject_10-1.prj", "traject_10-1.shx")) { var importer = new ReferenceLineImporter(); - importer.Import(new ReferenceLineContext(demoAssessmentSection), Path.Combine(temporaryShapeFile.TargetFolderPath, "traject_10-1.shp")); + importer.Import(new ReferenceLineContext(demoAssessmentSection), Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "traject_10-1.shp")); } } private void InitializeDemoHydraulicBoundaryDatabase(DuneAssessmentSection demoAssessmentSection) { - using (var tempPath = new TemporaryImportFile("HRD_dutchcoastsouth.sqlite", "HLCD.sqlite")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(false, "HRD_dutchcoastsouth.sqlite", "HLCD.sqlite")) { using (var hydraulicBoundaryDatabaseImporter = new HydraulicBoundaryDatabaseImporter()) { - hydraulicBoundaryDatabaseImporter.ValidateAndConnectTo(Path.Combine(tempPath.TargetFolderPath, "HRD_dutchcoastsouth.sqlite")); + hydraulicBoundaryDatabaseImporter.ValidateAndConnectTo(Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "HRD_dutchcoastsouth.sqlite")); hydraulicBoundaryDatabaseImporter.Import(new HydraulicBoundaryDatabaseContext(demoAssessmentSection)); } } } private void InitializeDemoFailureMechanismSections(DuneAssessmentSection demoAssessmentSection) { - using (var temporaryShapeFile = new TemporaryImportFile("traject_10-1_vakken.shp", - "traject_10-1_vakken.dbf", "traject_10-1_vakken.prj", "traject_10-1_vakken.shx")) + using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(true, "traject_10-1_vakken.shp", "traject_10-1_vakken.dbf", "traject_10-1_vakken.prj", "traject_10-1_vakken.shx")) { var importer = new FailureMechanismSectionsImporter(); foreach (IFailureMechanism failureMechanism in demoAssessmentSection.GetFailureMechanisms()) { var context = new FailureMechanismSectionsContext(failureMechanism, demoAssessmentSection); - importer.Import(context, Path.Combine(temporaryShapeFile.TargetFolderPath, "traject_10-1_vakken.shp")); + importer.Import(context, Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "traject_10-1_vakken.shp")); } } } Index: Demo/Ringtoets/src/Demo.Ringtoets/Demo.Ringtoets.csproj =================================================================== diff -u -ra8d92ed8a79b45075e5e3a388da73d0ea40a25e3 -r376d4148dc5ffa208c84e70475090e713f2f13c0 --- Demo/Ringtoets/src/Demo.Ringtoets/Demo.Ringtoets.csproj (.../Demo.Ringtoets.csproj) (revision a8d92ed8a79b45075e5e3a388da73d0ea40a25e3) +++ Demo/Ringtoets/src/Demo.Ringtoets/Demo.Ringtoets.csproj (.../Demo.Ringtoets.csproj) (revision 376d4148dc5ffa208c84e70475090e713f2f13c0) @@ -64,7 +64,7 @@ RingtoetsDemoProjectRibbon.xaml - + Index: Demo/Ringtoets/src/Demo.Ringtoets/EmbeddedResourceFileWriter.cs =================================================================== diff -u --- Demo/Ringtoets/src/Demo.Ringtoets/EmbeddedResourceFileWriter.cs (revision 0) +++ Demo/Ringtoets/src/Demo.Ringtoets/EmbeddedResourceFileWriter.cs (revision 376d4148dc5ffa208c84e70475090e713f2f13c0) @@ -0,0 +1,77 @@ +using System; +using System.IO; +using Core.Common.Utils.Reflection; + +namespace Demo.Ringtoets +{ + /// + /// Class for writing Embedded Resources to the Windows Temp directory. + /// + internal class EmbeddedResourceFileWriter : IDisposable + { + private readonly bool removeFilesOnDispose; + private readonly string targetFolderPath; + + /// + /// Initializes a new instance of the class. + /// + /// Whether or not the files should be removed after disposing the created instance. + /// The names of the Embedded Resource files to (temporary) write to the Windows Temp directory. + public EmbeddedResourceFileWriter(bool removeFilesOnDispose, params string[] embeddedResourceFileNames) + { + this.removeFilesOnDispose = removeFilesOnDispose; + + targetFolderPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + + Directory.CreateDirectory(targetFolderPath); + + foreach (string embeddedResourceFileName in embeddedResourceFileNames) + { + WriteEmbeddedResourceToTemporaryFile(embeddedResourceFileName, Path.Combine(targetFolderPath, embeddedResourceFileName)); + } + } + + /// + /// Gets the target folder path. + /// + public string TargetFolderPath + { + get + { + return targetFolderPath; + } + } + + /// + /// Disposes the instance. + /// + public void Dispose() + { + if (removeFilesOnDispose) + { + Directory.Delete(targetFolderPath, true); + } + } + + private void WriteEmbeddedResourceToTemporaryFile(string embeddedResourceFileName, string filePath) + { + var stream = GetStreamToFileInResource(embeddedResourceFileName); + var bytes = GetBinaryDataOfStream(stream); + + File.WriteAllBytes(filePath, bytes); + } + + private Stream GetStreamToFileInResource(string embeddedResourceFileName) + { + return AssemblyUtils.GetAssemblyResourceStream(GetType().Assembly, embeddedResourceFileName); + } + + private static byte[] GetBinaryDataOfStream(Stream stream) + { + var bytes = new byte[stream.Length]; + var reader = new BinaryReader(stream); + reader.Read(bytes, 0, (int) stream.Length); + return bytes; + } + } +} \ No newline at end of file Fisheye: Tag 376d4148dc5ffa208c84e70475090e713f2f13c0 refers to a dead (removed) revision in file `Demo/Ringtoets/src/Demo.Ringtoets/TemporaryImportFile.cs'. Fisheye: No comparison available. Pass `N' to diff?