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

@@ -2,4 +2,6 @@
Public CURRENToWMSession_Created As Date = Now
Public CURRENToWMConnect As Object
Public CURRENToWMSession As Object
Public CURRENT_WMDriveLetter As String = "W"
End Module

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyVersion("2.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -8,6 +8,6 @@
Public Shared DT_TBDD_EMAIL As DataTable = Nothing
Public Shared CONCATTED_FILE As String = ""
Public Shared _PROFIL_ID, _profGUID As Integer
Public Shared TEMP_FILES As List(Of String) = New List(Of String)
Public Shared _proflastRun As Date
End Class

View File

@@ -54,6 +54,7 @@ Public Class clsDatabase
Oracle_Command.AddToStatementCache = True
Catch ex As Exception
Logger.Warn($"PLSQL-Command: [{plsqlcommand}]")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.plsqlcommandDefine")
Oracle_Conn.Close()
@@ -71,6 +72,7 @@ Public Class clsDatabase
Return True
Catch ex As Exception
Logger.Warn($"PLSQL-Command: [{plsqlcommand}]")
Logger.Error(ex)
'clsLogger.Add(ex.Message & vbNewLine & "Execute Command => (" & plsqlcommand & ")", True, "clsDatatabase.ExecuteonOracleDb")
Oracle_Conn.Close()
@@ -88,6 +90,7 @@ Public Class clsDatabase
Catch ex As Exception
Logger.Warn($"PLSQL-Command: [{plsqlcommand}]")
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in ExecuteonOracleDb: " & ex.Message & vbNewLine & "SQL: " & plsqlcommand, True, "clsDatatabase.ExecuteonOracleDb")
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden

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

View File

@@ -4,6 +4,9 @@ Imports Independentsoft.Email
Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime
Imports DigitalData.Modules.Logging
Imports System.Net.Mail
Imports System.Net
Imports System.Net.Mime
Public Class clsEmail
Dim Logger As DigitalData.Modules.Logging.Logger
@@ -15,30 +18,135 @@ Public Class clsEmail
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, Optional attment As String = "")
Try
Dim message As New Message()
message.From = New Mailbox(mailUser, mailUser)
message.To.Add(New Mailbox(mailto))
message.Subject = mailSubject
message.Body = mailBody
message.ContentType = New ContentType("text", "plain", "iso-8859-1")
message.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
Dim oReceipiants As String()
If mailto.Contains(";") Then
oReceipiants = mailto.Split(";")
Else
ReDim Preserve oReceipiants(0)
oReceipiants(0) = mailto
End If
For Each oMailReceipiant As String In oReceipiants
Dim sClient = New Mail.SmtpClient(mailsmtp)
Dim mymesssage As New MailMessage
sClient.Port = mailport
If AUTH_TYPE = "SSL" Then
sClient.EnableSsl = True
Else
sClient.EnableSsl = False
End If
Dim client As New SmtpClient(mailsmtp, mailport)
client.EnableSsl = True
client.ValidateRemoteCertificate = False
sClient.Credentials = New NetworkCredential(mailUser, mailPW)
sClient.UseDefaultCredentials = False
mymesssage.Body = $"This is the body (text will be replaced within profile)! <br> mailsmtp: {mailsmtp} <br> mailport: {mailport} <br> mailUser: {mailUser} <br> mailPW: XXXX <br> AUTH_TYPE: {AUTH_TYPE}"
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body)
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
mymesssage.AlternateViews.Add(htmlView)
mymesssage.From = New MailAddress(mailfrom)
mymesssage.Subject = mailSubject
mymesssage.To.Add(New MailAddress(oMailReceipiant))
If attment <> String.Empty Then
Dim oAttment As String = attment.Replace("W:\", "\\windream\objects\")
If System.IO.File.Exists(oAttment) Then
Logger.Info($"working on attachment {oAttment}...")
Dim oAttachment As New System.Net.Mail.Attachment(oAttment)
mymesssage.Attachments.Add(oAttachment)
Else
MsgBox($"Attachment {oAttment.ToString} is not existing - Mail won't be send!")
Return False
End If
End If
sClient.Send(mymesssage)
Logger.Info($"Email has been send to {oMailReceipiant}!!")
Next
client.Connect()
client.Login(mailUser, mailPW)
client.Send(message)
client.Disconnect()
Return True
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Function Email_Send(ByVal mailSubject As String, ByVal mailBody As String, mailto As String,
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, Optional attment As String = "", Optional Test As Boolean = False)
Try
Dim oError As Boolean = False
Dim oReceipiants As String()
If mailto.Contains(";") Then
oReceipiants = mailto.Split(";")
Else
ReDim Preserve oReceipiants(0)
oReceipiants(0) = mailto
End If
For Each oMailReceipiant As String In oReceipiants
Dim sClient = New Net.Mail.SmtpClient(mailsmtp)
Dim mymesssage As New MailMessage
sClient.Port = mailport
If AUTH_TYPE = "SSL" Then
sClient.EnableSsl = True
Else
sClient.EnableSsl = False
End If
sClient.Credentials = New NetworkCredential(mailUser, mailPW)
sClient.UseDefaultCredentials = False
If Test = True Then
mymesssage.Body = $"This is the body (text will be replaced within profile)! <br> mailsmtp: {mailsmtp} <br> mailport: {mailport} <br> mailUser: {mailUser} <br> mailPW: XXXX <br> AUTH_TYPE: {AUTH_TYPE}"
Else
mymesssage.Body = mailBody
End If
'mymesssage.IsBodyHtml = True
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body)
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
mymesssage.AlternateViews.Add(htmlView)
attment = attment.Replace("W:\", "\\windream\objects\")
If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then
Logger.Info($"working on attachment {attment.ToString}...")
Dim oAttachment As New System.Net.Mail.Attachment(attment)
'If attment.ToLower.EndsWith("pdf") Then
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "pdf")
'ElseIf attment.ToLower.EndsWith("jpg") Then
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "jpg")
'ElseIf attment.ToLower.EndsWith("docx") Then
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word")
'End If
mymesssage.Attachments.Add(oAttachment)
Else
Logger.Warn($"Attachment {attment.ToString} is not existing - Mail won't be send!")
oError = True
End If
End If
mymesssage.From = New MailAddress(mailfrom)
mymesssage.Subject = mailSubject
mymesssage.To.Add(New MailAddress(oMailReceipiant))
sClient.Send(mymesssage)
Next
If oError = False Then
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Email_Send_Independentsoft(ByVal mailSubject As String, ByVal mailBody As String, mailto As String,
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, Optional attment As String = "")
@@ -64,28 +172,31 @@ Public Class clsEmail
message.Subject = mailSubject
Logger.Debug($"Message created..")
Dim textBodyPart As New BodyPart()
textBodyPart.ContentType = New ContentType("text", "html", "utf-8")
textBodyPart.ContentType = New Independentsoft.Email.Mime.ContentType("text", "html", "utf-8")
textBodyPart.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
textBodyPart.Body = mailBody
message.BodyParts.Add(textBodyPart)
attment = attment.Replace("W:\", "\\windream\objects\")
If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then
Dim attachment1 As New Attachment(attment)
Logger.Info($"working on attachment {attment.ToString}...")
Dim attachment1 As New Independentsoft.Email.Mime.Attachment(attment)
If attment.ToLower.EndsWith("pdf") Then
attachment1.ContentType = New ContentType("application", "pdf")
attachment1.ContentType = New Independentsoft.Email.Mime.ContentType("application", "pdf")
ElseIf attment.ToLower.EndsWith("jpg") Then
attachment1.ContentType = New ContentType("application", "jpg")
attachment1.ContentType = New Independentsoft.Email.Mime.ContentType("application", "jpg")
ElseIf attment.ToLower.EndsWith("docx") Then
attachment1.ContentType = New ContentType("application", "MS-word")
attachment1.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word")
End If
message.BodyParts.Add(attachment1)
Else
Logger.Warn($"Attachment {attment.ToString} is not existing!")
Logger.Warn($"Attachment {attment.ToString} is not existing - Mail won't be send!")
Return False
End If
End If
Dim client As SmtpClient
Dim client As Smtp.SmtpClient
Try
client = New SmtpClient(mailsmtp, mailport)
client = New Smtp.SmtpClient(mailsmtp, mailport)
Catch ex As Exception
Logger.Warn("clsEmail.Create Client: " & ex.Message)
_error = True

View File

@@ -44,7 +44,7 @@ Public Class clsJob_Work
Logger.Warn("PWPlain is Nothing - Could not decrypt passwort 44")
Return False
End If
If _mail.Email_Send_Independentsoft(Email_subject, Email_Body, Email_receipiants, oMAILFROM, oMAILSMTP, oMAIL_PORT, oMAIL_USER, oMAIL_USER_PW, oMAIL_AUTH_TYPE, Attachment_Filename) = True Then
If _mail.Email_Send(Email_subject, Email_Body, Email_receipiants, oMAILFROM, oMAILSMTP, oMAIL_PORT, oMAIL_USER, oMAIL_USER_PW, oMAIL_AUTH_TYPE, Attachment_Filename) = True Then
Return True
Else
Logger.Warn("Email_Send_Independentsoft was not successfull!")

View File

@@ -128,6 +128,7 @@ Public Class clsProfil
Logger.Info($"Working on profile '{_Profilname}'")
clsCURRENT.DT_TBDD_EMAIL = _database.Return_Datatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
clsCURRENT.PROFILE_HandledFiles = Nothing
clsCURRENT.EXPORTED_FILENAME = ""
Logger.Debug("Start RUN of profile '" & _Profilname & "'")
'den Durchlaufszeitpunkt speichern
If File.Exists(_profwdSuche) = False Then
@@ -160,7 +161,11 @@ Public Class clsProfil
Dim FileJobSuccessful As Boolean = False
Dim CountExportedDoc As Integer = 0
clsCURRENT.PROFILE_HandledFiles = Nothing
Dim oFileRunNo As String
Dim oCountDocs As Integer = 0
For Each WMdok As WMObject In windreamSucheErgebnisse
oCountDocs += 1
oFileRunNo = "#DocRun" & oCountDocs.ToString
For Each DR_PR_JB As DataRow In DT_PROFIL_JOB.Rows
Select Case DR_PR_JB.Item("JOB_TYP").ToString.ToUpper
Case "Create Mail Attachment".ToUpper
@@ -178,6 +183,15 @@ Public Class clsProfil
If Not IsNothing(clsCURRENT.DT_TBDD_EMAIL) And clsCURRENT.DT_TBDD_EMAIL.Rows.Count >= 1 Then
Dim oAttachment = clsCURRENT.WDLAUFWERK & ":" & WMdok.aPath
If _dateiverarbeitung.Export_WMFile2HDD(WMdok, Path.GetTempPath()) = True Then
oAttachment = clsCURRENT.EXPORTED_FILENAME
Else
Logger.Warn($"Could not create a tempfile...")
FileJobSuccessful = False
Return False
End If
Dim MAILFROM As String = ""
Dim MAILSMTP As String = ""
@@ -201,16 +215,10 @@ Public Class clsProfil
Dim PWPlain = wrapper.DecryptData(MAIL_USER_PW)
If Not IsNothing(PWPlain) Then
If PWPlain <> "" Then
MAIL_USER_PW = PWPlain
Else
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort181")
Return False
End If
MAIL_USER_PW = PWPlain
Else
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort188")
Logger.Warn("PWPlain is Nothing - Could not decrypt passwort188")
Return False
End If
@@ -222,32 +230,34 @@ Public Class clsProfil
Email_Betreff = _dateiverarbeitung.REGEX_REPLACE(WMdok, Email_Betreff)
Email_Body = _dateiverarbeitung.REGEX_REPLACE(WMdok, Email_Body)
If _email.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, oAttachment) = True Then
If _email.Email_Send(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, oAttachment) = True Then
FileJobSuccessful = True
Else
Logger.Warn("Email_Send_Independentsoft was not successfull!")
Logger.Warn($"{oFileRunNo} Email_Send_Independentsoft 1 was not successfull!")
FileJobSuccessful = False
End If
Else
Logger.Warn("DT_TBDD_EMAIL is nothing or contains no rows")
Logger.Warn($"{oFileRunNo} DT_TBDD_EMAIL is nothing or contains no rows")
Return False
End If
Case "Export HDD".ToUpper
Logger.Info("JobType: Case Export HDD")
Logger.Info($"{oFileRunNo} JobType: Case Export HDD")
'Für jedes Dokument in der Windream-Ergebnisliste
'For Each dok As WMObject In windreamSucheErgebnisse
' aktuelles Dokument zum Export bereitstellen
clsCURRENT.EXPORTED_FILENAME = ""
If _dateiverarbeitung.Export_File(WMdok, DR_PR_JB.Item("STRING1")) = True Then
If _dateiverarbeitung.Export_WMFile2HDD(WMdok, DR_PR_JB.Item("STRING1")) = True Then
ReDim Preserve clsCURRENT.PROFILE_HandledFiles(CountExportedDoc)
clsCURRENT.PROFILE_HandledFiles(CountExportedDoc) = clsCURRENT.EXPORTED_FILENAME
CountExportedDoc += 1
FileJobSuccessful = True
Logger.Info($"{oFileRunNo} Export HDD completed!")
End If
'Next
Case "BNS json Download".ToUpper
Logger.Info("JobType: BNS json Download")
Logger.Info($"{oFileRunNo} JobType: BNS json Download")
FileJobSuccessful = _dateiverarbeitung.BNSjsonDownload(WMdok, DR_PR_JB.Item("STRING1"), DR_PR_JB.Item("STRING2"))
'Case "Send to printer".ToUpper
' Logger.Info("JobType: Send to printer")
@@ -305,9 +315,26 @@ Public Class clsProfil
'Für jeden File-Job
For Each DR_PR_FILE_JOB As DataRow In DT_PROFIL_FILE_JOB.Rows
If FileJobSuccessful = False Then
Logger.Info("AUSSTIEG FOR SCHLEIFE cause FileJobSuccessful = False...")
Logger.Info($"{oFileRunNo} AUSSTIEG FOR SCHLEIFE cause FileJobSuccessful = False...")
Exit For
End If
If DR_PR_FILE_JOB.Item("STRING2").ToString.Contains("EXPORTED_FILENAME") Then
If clsCURRENT.EXPORTED_FILENAME = "" Then
Logger.Warn($"{oFileRunNo} clsCURRENT.EXPORTED_FILENAME Is empty! So FileJobSuccessful will be set to FALSE")
FileJobSuccessful = False
Continue For
Else
If File.Exists(clsCURRENT.EXPORTED_FILENAME) = False Then
Logger.Warn($"{oFileRunNo} clsCURRENT.EXPORTED_FILENAME [{clsCURRENT.EXPORTED_FILENAME}] not existing! So FileJobSuccessful will be set to FALSE")
FileJobSuccessful = False
Continue For
Else
Logger.Debug($"{oFileRunNo} clsCURRENT.EXPORTED_FILENAME [{clsCURRENT.EXPORTED_FILENAME}] exists!")
End If
End If
End If
Select Case DR_PR_FILE_JOB.Item("TYP").ToString.ToLower
Case "Set Index".ToLower
Try
@@ -319,17 +346,17 @@ Public Class clsProfil
idxvalue = idxvalue.Replace("[%DATETIME]", Now.ToString)
End If
idxvalue = _dateiverarbeitung.REGEX_REPLACE(WMdok, idxvalue)
Logger.Debug($"Index '{idxName}' shall be set with value '{idxvalue}'")
Logger.Debug($"{oFileRunNo} Index '{idxName}' shall be set with value '{idxvalue}'")
Dim arrIndex() As String
ReDim Preserve arrIndex(0)
arrIndex(0) = idxName
Logger.Debug("...nach arrIndex")
Logger.Debug($"{oFileRunNo} ...nach arrIndex")
Dim arrValue() As String
Dim aktvalue As Object
aktvalue = WMdok.GetVariableValue(idxName)
Logger.Debug("...nach aktValue zuweisen..")
Logger.Debug($"{oFileRunNo} ...nach aktValue zuweisen..")
Dim wmtype = clsWindream_allgemein.GetTypeOfIndexAsIntByName(idxName)
Dim is_vektor As Boolean = False
Select Case wmtype
@@ -372,9 +399,10 @@ Public Class clsProfil
' 07.01.2019: Weitere Jobs bei Fehler in RunIndexing überspringen
If oErrorOccurred = True Then
FileJobSuccessful = False
End If
Else
Logger.Warn("arrValue is nothing - keine Indexierung")
Logger.Warn($"{oFileRunNo} arrValue is nothing - keine Indexierung")
End If
Catch ex As Exception
@@ -382,14 +410,14 @@ Public Class clsProfil
'clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(SetIndex)")
End Try
Case "Rename File with windream Index".ToLower
Logger.Debug("Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
Logger.Debug($"{oFileRunNo} Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
_dateiverarbeitung.Rename_File(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Rename File with WMVector (only one)".ToLower
Logger.Debug("Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
Logger.Debug($"{oFileRunNo} Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
_dateiverarbeitung.Rename_File_Vektor(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Execute Oracle Command".ToLower
Try
Logger.Debug("Execute Oracle Command.......")
Logger.Debug($"{oFileRunNo} Execute Oracle Command.......")
Dim oracleconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim oracleCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
FileJobSuccessful = _dateiverarbeitung.RUN_ORACLE_COMMAND(WMdok, oracleconnectionstring, oracleCommandRAW)
@@ -401,7 +429,7 @@ Public Class clsProfil
Try
Dim MSSQLconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim MSSQLCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
Logger.Debug("Execute MSSQL Command.......")
Logger.Debug($"{oFileRunNo} Execute MSSQL Command.......")
FileJobSuccessful = _dateiverarbeitung.RUN_MSSQL_COMMAND(WMdok, MSSQLconnectionstring, MSSQLCommandRAW)
Catch ex As Exception
Logger.Error(ex)
@@ -426,8 +454,8 @@ Public Class clsProfil
Logger.Debug("pdftk location: " & pdftk)
clsCURRENT.CONCATTED_FILE = DR_PR_JB.Item("STRING1")
Logger.Debug("CONCATTED_FILE location: " & clsCURRENT.CONCATTED_FILE)
Dim deleteJaNein = DR_PR_JB.Item("STRING2").ToString.ToUpper
Logger.Debug("deleteJaNein: " & deleteJaNein.ToString)
Dim oDeleteResultFile = DR_PR_JB.Item("STRING2").ToString.ToUpper
Logger.Debug("deleteJaNein: " & oDeleteResultFile.ToString)
If File.Exists(pdftk) Then
If File.Exists(clsCURRENT.CONCATTED_FILE) Then
Try
@@ -496,10 +524,11 @@ Public Class clsProfil
Loop
sw.Stop()
If deleteJaNein = "JA" Then
If oDeleteResultFile = "JA" Then
For Each str As String In clsCURRENT.PROFILE_HandledFiles
Try
File.Delete(str)
Logger.Debug($"Deleted file [{str}]!")
Catch ex As Exception
Logger.Error(ex)
End Try
@@ -562,10 +591,11 @@ Public Class clsProfil
Return False
End If
If _email.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, clsCURRENT.CONCATTED_FILE) = True Then
If _email.Email_Send(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, clsCURRENT.CONCATTED_FILE) = True Then
FileJobSuccessful = True
Else
Logger.Warn("Email_Send_Independentsoft was not successfull!")
Logger.Warn("Email_Send_Independentsoft 2 was not successfull!")
FileJobSuccessful = False
End If
@@ -581,10 +611,10 @@ Public Class clsProfil
Case "Send to printer".ToUpper
Logger.Info("Working on CASE Send to printer.... ")
Dim printername = DR_PR_JB.Item("STRING1")
For Each str As String In clsCURRENT.PROFILE_HandledFiles
For Each oFileString As String In clsCURRENT.PROFILE_HandledFiles
Try
Dim myproc As Process = New Process()
myproc.StartInfo.FileName = """" & str & """"
myproc.StartInfo.FileName = """" & oFileString & """"
myproc.StartInfo.Verb = "printto"
myproc.StartInfo.Arguments = printername
myproc.StartInfo.UseShellExecute = True
@@ -605,9 +635,10 @@ Public Class clsProfil
FileJobSuccessful = True
sw.Stop()
' myproc.Kill()
File.Delete(str)
File.Delete(oFileString)
Logger.Debug($"Deleted oFileString [{oFileString}]!")
Catch ex As Exception
Logger.Warn("Could not print (printto) file: " & str)
Logger.Warn("Could not print (printto) file: " & oFileString)
Logger.Error(ex)
End Try
Next

View File

@@ -43,7 +43,7 @@ Public Class clsWindream_allgemein
' wenn ein Fehler bei der Initialisierung auftrat
If Not Init() Then
' Nachricht ausgeben
Logger.Warn("Es trat ein Fehler bei der Initialisierung der Klasse windream auf. Bitte prüfen Sie ob der windream-Server aktiv ist und alle Dienste gestartet sind")
Logger.Warn("Error while initializing WM-Class!!")
' das Programm "abschießen"
Process.GetCurrentProcess.Kill()
End If
@@ -464,7 +464,7 @@ Public Class clsWindream_allgemein
Return oSearch.execute
Catch ex As Exception
Logger.Error(ex)
Logger.Warn($"WM-SEARCH ({wdfLocation})")
Logger.Warn($"WM-SEARCH in Exception ({wdfLocation})")
Return Nothing
End Try
@@ -552,10 +552,17 @@ Public Class clsWindream_allgemein
If WMObjects.Count > 0 Then
For Each dok As WMObject In WMObjects
Dim oPath As String = dok.aPath
Dim oDOC_ID = dok.GetVariableValue(NameIndexDocID)
Dim oCreated = dok.GetVariableValue(NameIndexCreated)
Logger.Debug($"Adding DocInfo {oDOC_ID.ToString}|{oPath}|{oCreated}")
Logger.Debug($"Adding DocInfo {oDOC_ID.ToString}|{dok.aPath}|{oCreated}")
Dim oPath As String
If dok.aPath.StartsWith("\") Then
oPath = dok.aPath.Substring(1, dok.aPath.Length - 1)
Else
oPath = dok.aPath
End If
dtresult.Rows.Add(oDOC_ID, oPath, oCreated)
Next
dtresult.AcceptChanges()
@@ -563,11 +570,33 @@ Public Class clsWindream_allgemein
Return dtresult
Catch ex As Exception
Logger.Error(ex)
Logger.Warn($"WM-SEARCH ({wdfLocation})")
Logger.Warn($"WM-SEARCH from GetSearchDocumentsDT ({wdfLocation})")
Return dtresult
End Try
End Function
Public Function TestFileExists(Path As String) As Boolean
Return TestObjectExists(GetNormalizedPath(Path), WMEntityDocument)
End Function
Private Function TestObjectExists(ObjectName As String, ObjectType As WMEntity) As Boolean
Try
Dim oObjectId = 0
Dim oObjectDbId = 0
Return CURRENToWMSession.WMObjectExists(ObjectType, ObjectName, oObjectId, oObjectDbId)
Catch ex As Exception
Logger.Error(ex, "Error while checking existence of WMObject {0} of type {1}", ObjectName, ObjectType.ToString)
Return False
End Try
End Function
Private Function GetNormalizedPath(Path As String) As String
Dim oNormalizedPath = Path
If Not Path.StartsWith("\") And Path.ToUpper().StartsWith(CURRENT_WMDriveLetter.ToUpper) Then
oNormalizedPath = Path.Substring(2)
End If
Return oNormalizedPath
End Function
#End Region
End Class