diff --git a/app/ClassWMResulthandler/clsDateiverarbeitung.vb b/app/ClassWMResulthandler/clsDateiverarbeitung.vb index 0278768..f536f26 100644 --- a/app/ClassWMResulthandler/clsDateiverarbeitung.vb +++ b/app/ClassWMResulthandler/clsDateiverarbeitung.vb @@ -134,58 +134,132 @@ Public Class clsDateiverarbeitung Return String.Empty End Try End Function - Public Function Export_WMFile2HDD(oWMFile As WMObject, MyExportpath As String) + '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...") + + ' oWMFile.LockFor(WMObjectEditModeFileSystem) + ' Try + ' If Not oWMFile.aLocked Then + ' oWMFile.lock() + ' End If + ' Catch ex As Exception + ' Logger.Error(ex) 'clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File") + ' Return False + ' End Try + + ' Dim oWMStream = oWMFile.OpenStream("BinaryObject", 2) + ' '### 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.aWMStream = oWMStream + ' ExportFileIO.bstrOriginalFileName = oTempFilename + + + ' 'Das eigentliche kopieren + ' ExportFileIO.ExportOriginal(True) + ' ' close the windream file stream + ' oWMStream.Close() + ' oWMFile.Save() + ' oWMFile.unlock() + ' 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 + Public Function Export_WMFile2HDD(oWMFile As WMObject, oZielpfad As String) Try - If Not MyExportpath.EndsWith("\") Then - MyExportpath &= "\" + If Not oZielpfad.EndsWith("\") Then + oZielpfad = oZielpfad & "\" End If + Dim oNewFilename As String + Logger.Info("Verarbeitung von Datei: " & oWMFile.aName) + oNewFilename = CleanInput(oWMFile.aName) + 'Die Quelle zusammensetzen + Logger.Debug("PFAD: " & clsCURRENT.WDLAUFWERK & ":" & oWMFile.aPath & "\" & oWMFile.aName) + 'Dim Quelle As String = IO.Path.GetDirectoryName(WDLaufwerk & ":" & WDDatei.aPath & "\" & WDDatei.aName) - + Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO + Logger.Debug("ExportFileIO erzeugt.....") + ' Stream Interface bereitstellen + oWMFile.LockFor(WMObjectEditModeFileSystem) Try - Logger.Info("Working on WMFile: " & oWMFile.aName) + If Not oWMFile.aLocked Then + oWMFile.lock() + End If Catch ex As Exception - Logger.Error(ex) + Logger.Error(ex) 'clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File") 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) + Dim oWMStream = oWMFile.OpenStream("BinaryObject", WMObjectStreamOpenModeReadWrite) '### 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 + Dim oTempFilename As String = oZielpfad & oFilename & oExtension 'Überprüfen ob File existiert Do While IO.File.Exists(oTempFilename) = True - oTempFilename = MyExportpath & oFilename & "_" & version & oExtension + oTempFilename = oZielpfad & oFilename & "_" & version & oExtension version = version + 1 Loop - Logger.Debug("Exportfilename is: " & oTempFilename) + Logger.Debug("Zieldateiname: " & oTempFilename) ' den Dateiinhalt der neuen Datei zuweisen - ExportFileIO.bstrOriginalFileName = oTempFilename ExportFileIO.aWMStream = oWMStream - + ExportFileIO.bstrOriginalFileName = oTempFilename '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 - + oWMFile.Save() + oWMFile.unlock() + clsCURRENT.EXPORTED_FILENAME = oTempFilename + Logger.Info("Datei erfolgreich nach '" & oTempFilename & "' kopiert.") + aktfile_Exportresult = oTempFilename + clsCURRENT.TEMP_FILES.Add(oTempFilename) + Return True Catch ex As Exception + 'bei einem Fehler einen Eintrag in der Logdatei machen + Logger.Warn($"Unexpected in Export-File: [{oWMFile.aName}]...") Logger.Error(ex) - Logger.Info("Unexpected error in Export_WMFile: " & ex.Message) Return False End Try End Function