This commit is contained in:
Digital Data - Marlon Schreiber
2019-03-22 15:48:41 +01:00
parent fb92a0fd1c
commit 676e9d40b8
17 changed files with 547 additions and 184 deletions

View File

@@ -4,6 +4,7 @@ Imports System.Net
Imports Newtonsoft.Json
Imports System.Text
Imports DigitalData.Modules.Logging
Imports System.Text.RegularExpressions
Public Class clsDateiverarbeitung
Dim Logger As Logger
@@ -122,64 +123,134 @@ Public Class clsDateiverarbeitung
Return False
End Try
End Function
'Kopiert die übergebene Datei in den Zielpfad
Public Function Export_File(WDDatei As WMObject, Zielpfad As String)
Private Function CleanInput(strIn As String) As String
' Replace invalid characters with empty strings.
Try
If Not Zielpfad.EndsWith("\") Then
Zielpfad = Zielpfad & "\"
Return Regex.Replace(strIn, "[^\w\.@-]", "")
' If we timeout when replacing invalid characters,
' we should return String.Empty.
Catch ex As Exception
Logger.Error(ex)
Return String.Empty
End Try
End Function
Public Function Export_WMFile2HDD(oWMFile As WMObject, MyExportpath As String)
Try
If Not MyExportpath.EndsWith("\") Then
MyExportpath &= "\"
End If
Logger.Info("Verarbeitung von Datei: " & WDDatei.aName)
'Die Quelle zusammensetzen
Logger.Debug("PFAD: " & clsCURRENT.WDLAUFWERK & ":" & WDDatei.aPath & "\" & WDDatei.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
WDDatei.LockFor(WMObjectEditModeFileSystem)
Try
If Not WDDatei.aLocked Then
WDDatei.lock()
End If
Logger.Info("Working on WMFile: " & oWMFile.aName)
Catch ex As Exception
Logger.Error(ex) 'clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File")
Logger.Error(ex)
Return False
End Try
Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO
Logger.Debug("ExportFileIO created...")
Dim oWMStream = WDDatei.OpenStream("BinaryObject", WMObjectStreamOpenModeReadWrite)
Dim oWMStream = oWMFile.OpenStream("BinaryObject", 1)
'### VERSIONIERUNG ###
Dim version As Integer = 2
'Dim Stammname As String = System.IO.Path.GetFileNameWithoutExtension(Quelle)
Dim Filename = WDDatei.aName.Substring(0, WDDatei.aName.LastIndexOf("."))
Dim Extension = WDDatei.aName.Substring(WDDatei.aName.LastIndexOf("."))
Dim tempFilename As String = Zielpfad & Filename & Extension
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(tempFilename) = True
tempFilename = Zielpfad & Filename & "_" & version & Extension
Do While IO.File.Exists(oTempFilename) = True
oTempFilename = MyExportpath & oFilename & "_" & version & oExtension
version = version + 1
Loop
Logger.Debug("Zieldateiname: " & tempFilename)
Logger.Debug("Exportfilename is: " & oTempFilename)
' den Dateiinhalt der neuen Datei zuweisen
ExportFileIO.bstrOriginalFileName = oTempFilename
ExportFileIO.aWMStream = oWMStream
ExportFileIO.bstrOriginalFileName = tempFilename
'Das eigentliche kopieren
ExportFileIO.ExportOriginal(True)
' close the windream file stream
oWMStream.Close()
WDDatei.Save()
WDDatei.unlock()
clsCURRENT.EXPORTED_FILENAME = tempFilename
Logger.Info("Datei erfolgreich nach '" & tempFilename & "' verschoben.")
aktfile_Exportresult = tempFilename
Return True
Catch ex As Exception
'bei einem Fehler einen Eintrag in der Logdatei machen
Logger.Error(ex)
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_File(oWMFile As WMObject, oZielpfad As String)
' Try
' 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
' 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", 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 = oZielpfad & oFilename & oExtension
' 'Überprüfen ob File existiert
' Do While IO.File.Exists(oTempFilename) = True
' oTempFilename = oZielpfad & oFilename & "_" & version & oExtension
' version = version + 1
' Loop
' Logger.Debug("Zieldateiname: " & 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()
' 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)
' Return False
' End Try
'End Function
Public Function Rename_File(WMFile As WMObject, konvention As String)
Try
Logger.Debug("Konvention: '" & konvention & "'")
@@ -416,6 +487,9 @@ Public Class clsDateiverarbeitung
Dim result = REGEX_REPLACE(WMFile, OracleCommandRAW)
If result = Nothing Then
Return False
ElseIf result.ToString.Contains("[%") Then
Logger.Warn($"Replace Function OracleCommandRAW did not match all patterns: {result.ToString}")
Return False
End If
@@ -436,6 +510,9 @@ Public Class clsDateiverarbeitung
Dim result = REGEX_REPLACE(WMFile, SQLCommandRAW)
If result = Nothing Then
Return False
ElseIf result.ToString.Contains("[%") Then
Logger.Warn($"Replace Function SQLCommandRAW did not match all patterns: {result.ToString}")
Return False
End If
@@ -611,7 +688,7 @@ Public Class clsDateiverarbeitung
Logger.Debug("REGEX_String after vector-for-each (" & i & ") " & _STRING)
End If
Else
Logger.Warn("Attention: Indexvalue is NOTHING, standardvalue '0' will be used", False, "clsDateiverarbeitung.REGEX_REPLACE")
Logger.Info($"Attention: Indexvalue for Index [{reg_element_Ohne_SZ}]is NOTHING, standardvalue '0' will be used - clsDateiverarbeitung.REGEX_REPLACE")
_STRING = _STRING.Replace(reg_element.Value, "0")
End If
End If