fix result handler deleting exported files

This commit is contained in:
Jonathan Jenne
2019-03-25 17:03:42 +01:00
parent 676e9d40b8
commit 30bddc05bb
2 changed files with 124 additions and 49 deletions

View File

@@ -15,8 +15,7 @@ Public Class clsDateiverarbeitung
Dim _database As clsDatabase Dim _database As clsDatabase
Public Shared pr_DTPROFIL_REGELN As DataTable Public Shared pr_DTPROFIL_REGELN As DataTable
Public Shared aktfile_Exportresult Public Shared aktfile_Exportresult As String
Public Shared CriticalError As Boolean = False Public Shared CriticalError As Boolean = False
@@ -134,62 +133,138 @@ Public Class clsDateiverarbeitung
Return String.Empty Return String.Empty
End Try End Try
End Function End Function
Public Function Export_WMFile2HDD(oWMFile As WMObject, MyExportpath As String)
' Neu geschriebene version 25.03.19
Public Function Export_WMFile2HDD(WMObject As WMObject, ExportPath As String) As Boolean
Try Try
If Not MyExportpath.EndsWith("\") Then Dim oWMObject As IWMObject6 = DirectCast(WMObject, IWMObject6)
MyExportpath &= "\"
End If
Dim oFilenameFull As String = oWMObject.aName
Dim oFilenameExport As String
Dim oSplitIndex = oFilenameFull.LastIndexOf(".")
Dim oVersion = 1
Try Dim oFilename = oFilenameFull.Substring(0, oSplitIndex)
Logger.Info("Working on WMFile: " & oWMFile.aName) Dim oExtension = oFilenameFull.Substring(oSplitIndex)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO
Logger.Debug("ExportFileIO created...")
Dim oWMStream = oWMFile.OpenStream("BinaryObject", 1) Logger.Debug("Preparing export of file {0}..", oFilenameFull)
'### VERSIONIERUNG ### Logger.Debug("Filename: {0}", oFilename)
Dim version As Integer = 2 Logger.Debug("Extension: {0}", oExtension)
'Dim Stammname As String = System.IO.Path.GetFileNameWithoutExtension(Quelle)
Dim oFilename = oWMFile.aName.Substring(0, oWMFile.aName.LastIndexOf(".")) ' build the file path in case the exported file doesn't already exist
Dim oExtension = oWMFile.aName.Substring(oWMFile.aName.LastIndexOf(".")) oFilenameExport = BuildExportPath(ExportPath, oFilename, oExtension)
Dim oTempFilename As String = MyExportpath & oFilename & oExtension
'Überprüfen ob File existiert ' Add version until we find the version that does NOT exist
Do While IO.File.Exists(oTempFilename) = True Do While File.Exists(oFilenameExport)
oTempFilename = MyExportpath & oFilename & "_" & version & oExtension oVersion += 1
version = version + 1 oFilenameExport = BuildExportPath(ExportPath, oFilename, oExtension, oVersion)
Loop Loop
Logger.Debug("Exportfilename is: " & oTempFilename)
' den Dateiinhalt der neuen Datei zuweisen
ExportFileIO.bstrOriginalFileName = oTempFilename
ExportFileIO.aWMStream = oWMStream
'Das eigentliche kopieren Logger.Debug("File will be exported to {0}", oFilenameExport)
ExportFileIO.ExportOriginal(True)
' close the windream file stream Logger.Debug("Opening file stream..")
oWMStream.Close() Dim oStream As WMStream = oWMObject.OpenStream("BinaryObject", WMObjectStreamOpenMode.WMObjectStreamOpenModeRead)
If File.Exists(oTempFilename) Then Dim oWMFileIO As New WMOTOOLLib.WMFileIO() With {
clsCURRENT.EXPORTED_FILENAME = oTempFilename .aWMStream = oStream,
Logger.Info($"File Export to HDD [{clsCURRENT.EXPORTED_FILENAME}]was successfull (File.Exists = True)!") .bstrOriginalFileName = oFilenameExport
aktfile_Exportresult = clsCURRENT.EXPORTED_FILENAME }
clsCURRENT.TEMP_FILES.Add(clsCURRENT.EXPORTED_FILENAME)
Logger.Debug("Exporting file..")
oWMFileIO.ExportOriginal(True)
Logger.Debug("Cleaning up..")
oStream.Close()
Logger.Debug("File exported!")
If File.Exists(oFilenameExport) Then
Logger.Info($"File Export to HDD [{oFilenameExport}]was successfull (File.Exists = True)!")
aktfile_Exportresult = oFilenameExport
clsCURRENT.EXPORTED_FILENAME = oFilenameExport
clsCURRENT.TEMP_FILES.Add(oFilenameExport)
Logger.Debug("FileInfo Added to variables...") Logger.Debug("FileInfo Added to variables...")
Return True Return True
Else Else
Logger.Warn($"Export not successfull or File.Exists = false Export: [{oTempFilename}]") Logger.Warn($"Export not successfull or File.Exists = false Export: [{oFilenameExport}]")
Return False Return False
End If End If
Return True
Catch ex As Exception Catch ex As Exception
Logger.Error(ex) Logger.Error(ex)
Logger.Info("Unexpected error in Export_WMFile: " & ex.Message)
Return False Return False
End Try End Try
End Function End Function
Private Function BuildExportPath(BasePath As String, FilenameWithoutExtension As String, Extension As String, Optional Version As Integer = 1)
Dim oFilename
If Version = 1 Then
oFilename = FilenameWithoutExtension & Extension
Else
oFilename = FilenameWithoutExtension & "_" & Version & Extension
End If
Return Path.Combine(BasePath, oFilename)
End Function
' Aktuelle Funktion 25.03.19
'Public Function Export_WMFile2HDD(oWMFile As WMObject, MyExportpath As String)
' Try
' If Not MyExportpath.EndsWith("\") Then
' MyExportpath &= "\"
' End If
' Try
' Logger.Info("Working on WMFile: " & oWMFile.aName)
' Catch ex As Exception
' Logger.Error(ex)
' Return False
' End Try
' Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO
' Logger.Debug("ExportFileIO created...")
' Dim oWMStream = oWMFile.OpenStream("BinaryObject", 1)
' '### VERSIONIERUNG ###
' Dim version As Integer = 2
' 'Dim Stammname As String = System.IO.Path.GetFileNameWithoutExtension(Quelle)
' Dim oFilename = oWMFile.aName.Substring(0, oWMFile.aName.LastIndexOf("."))
' Dim oExtension = oWMFile.aName.Substring(oWMFile.aName.LastIndexOf("."))
' Dim oTempFilename As String = MyExportpath & oFilename & oExtension
' 'Überprüfen ob File existiert
' Do While IO.File.Exists(oTempFilename) = True
' oTempFilename = MyExportpath & oFilename & "_" & version & oExtension
' version = version + 1
' Loop
' Logger.Debug("Exportfilename is: " & oTempFilename)
' ' den Dateiinhalt der neuen Datei zuweisen
' ExportFileIO.bstrOriginalFileName = oTempFilename
' ExportFileIO.aWMStream = oWMStream
' 'Das eigentliche kopieren
' ExportFileIO.ExportOriginal(True)
' ' close the windream file stream
' oWMStream.Close()
' If File.Exists(oTempFilename) Then
' clsCURRENT.EXPORTED_FILENAME = oTempFilename
' Logger.Info($"File Export to HDD [{clsCURRENT.EXPORTED_FILENAME}]was successfull (File.Exists = True)!")
' aktfile_Exportresult = clsCURRENT.EXPORTED_FILENAME
' clsCURRENT.TEMP_FILES.Add(clsCURRENT.EXPORTED_FILENAME)
' Logger.Debug("FileInfo Added to variables...")
' Return True
' Else
' Logger.Warn($"Export not successfull or File.Exists = false Export: [{oTempFilename}]")
' Return False
' End If
' Catch ex As Exception
' Logger.Error(ex)
' Logger.Info("Unexpected error in Export_WMFile: " & ex.Message)
' Return False
' End Try
'End Function
'Kopiert die übergebene Datei in den Zielpfad 'Kopiert die übergebene Datei in den Zielpfad
'Public Function Export_File(oWMFile As WMObject, oZielpfad As String) 'Public Function Export_File(oWMFile As WMObject, oZielpfad As String)

View File

@@ -188,16 +188,16 @@ Public Class DDWDResultHandler
Logger.Info("Keine aktiven Profile WMResulthandler vorhanden") Logger.Info("Keine aktiven Profile WMResulthandler vorhanden")
notcompleted = True notcompleted = True
End If End If
Try 'Try
For Each _file In clsCURRENT.TEMP_FILES ' For Each _file In clsCURRENT.TEMP_FILES
'Dim oFile As New FileInfo(_file) ' 'Dim oFile As New FileInfo(_file)
'If (DateTime.UtcNow - oFile.CreationTimeUtc > TimeSpan.FromDays(1)) Then ' 'If (DateTime.UtcNow - oFile.CreationTimeUtc > TimeSpan.FromDays(1)) Then
System.IO.File.Delete(_file) ' System.IO.File.Delete(_file)
'End If ' 'End If
Next ' Next
Catch ex As Exception 'Catch ex As Exception
End Try 'End Try
_database.Execute_non_Query("UPDATE TBWMRH_KONFIGURATION SET LAST_TICK = GETDATE() WHERE GUID = 1") _database.Execute_non_Query("UPDATE TBWMRH_KONFIGURATION SET LAST_TICK = GETDATE() WHERE GUID = 1")
If oFirstRun = True Then If oFirstRun = True Then