MS Klassen überarbeitet NLOG integriert

This commit is contained in:
Digital Data - Marlon Schreiber
2018-08-16 10:58:57 +02:00
parent be9fca94b3
commit 844a423f7d
76 changed files with 365601 additions and 1752 deletions

View File

@@ -6,8 +6,8 @@
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B3190AEC-8DC4-4822-9609-54DF5B976262}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>ClassWMResulthandler</RootNamespace>
<AssemblyName>ClassWMResulthandler</AssemblyName>
<RootNamespace>DD_WMResulthandler</RootNamespace>
<AssemblyName>DD_WMResulthandler</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
@@ -18,7 +18,7 @@
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>ClassWMResulthandler.xml</DocumentationFile>
<DocumentationFile>DD_WMResulthandler.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -27,7 +27,7 @@
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>ClassWMResulthandler.xml</DocumentationFile>
<DocumentationFile>DD_WMResulthandler.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
@@ -62,14 +62,23 @@
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.5.8\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="Oracle.ManagedDataAccess">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\Oracle.ManagedDataAccess.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Data" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
@@ -93,7 +102,6 @@
<Compile Include="clsDateiverarbeitung.vb" />
<Compile Include="clsEmail.vb" />
<Compile Include="clsEncryption.vb" />
<Compile Include="clsLogger.vb" />
<Compile Include="clsProfil.vb" />
<Compile Include="clsWindream_Allgemein.vb" />
<Compile Include="clsWindream_Index.vb" />

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------

View File

@@ -1,60 +1,61 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ClassWMResulthandler.Resources", GetType(Resources).Assembly)
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DD_WMResulthandler.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
Set
resourceCulture = value
End Set
End Property

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
@@ -13,42 +13,42 @@ Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
@@ -64,9 +64,9 @@ Namespace My
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.ClassWMResulthandler.My.MySettings
Friend ReadOnly Property Settings() As Global.DD_WMResulthandler.My.MySettings
Get
Return Global.ClassWMResulthandler.My.MySettings.Default
Return Global.DD_WMResulthandler.My.MySettings.Default
End Get
End Property
End Module

View File

@@ -3,7 +3,7 @@
Public Shared WDLAUFWERK, _profObjekttyp, _profwdSuche, _profDay, _profRunType, _Profilname As String
Public Shared SQLSERVER_CS As String = ""
Public Shared LOG_ERRORS_ONLY As Boolean = True
Public Shared ARR_Exported_Files() = Nothing
Public Shared PROFILE_HandledFiles() = Nothing
Public Shared DT_TBWMRH_KONFIGURATION As DataTable = Nothing
Public Shared DT_TBDD_EMAIL As DataTable = Nothing
Public Shared CONCATTED_FILE As String = ""

View File

@@ -2,6 +2,7 @@
Imports Oracle.ManagedDataAccess.Client
Public Class clsDatatabase
Private Shared MSSQL_inited As Boolean = False
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
Public Shared Function Init(CONSTRING As String)
Try
Dim SQLconnect As New SqlClient.SqlConnection
@@ -14,13 +15,12 @@ Public Class clsDatatabase
If clsCURRENT.DT_TBWMRH_KONFIGURATION.Rows.Count = 1 Then
clsCURRENT.LOG_ERRORS_ONLY = CBool(clsCURRENT.DT_TBWMRH_KONFIGURATION.Rows(0).Item("LOG_ERRORS_ONLY"))
clsCURRENT.WDLAUFWERK = clsCURRENT.DT_TBWMRH_KONFIGURATION.Rows(0).Item("WD_LAUFWERK")
End If
Return True
Catch ex As Exception
clsLogger.Add("Error in DatabaseInit: " & ex.Message, True)
Logger.Error(ex)
'clsLogger.Add("Error in DatabaseInit: " & ex.Message, True)
Return False
End Try
End Function
@@ -28,6 +28,7 @@ Public Class clsDatatabase
Public Shared Function ExecuteonOracleDb(CONSTRING As String, ByVal plsqlcommand As String)
Try
Logger.Debug("plsqlcommand: " & plsqlcommand)
' die nötigen Variablen definieren
Dim result As Object = Nothing
Dim conn As New OracleConnectionStringBuilder
@@ -40,7 +41,8 @@ Public Class clsDatatabase
Try
Oracle_Conn.Open()
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonOracleDb(OpenConnection)")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonOracleDb(OpenConnection)")
Return False
End Try
@@ -51,7 +53,8 @@ Public Class clsDatatabase
Oracle_Command.AddToStatementCache = True
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.plsqlcommandDefine")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.plsqlcommandDefine")
Oracle_Conn.Close()
Return False
End Try
@@ -60,29 +63,32 @@ Public Class clsDatatabase
' *** Ausführen des Command ***
If Command() IsNot Nothing Then
Try
clsLogger.AddDetailLog("Now executing: " & plsqlcommand)
Oracle_Command.ExecuteNonQuery()
' DB-Connection schliessen
Oracle_Conn.Close()
Return True
Catch ex As Exception
clsLogger.Add(ex.Message & vbNewLine & "Execute Command => (" & plsqlcommand & ")", True, "clsDatatabase.ExecuteonOracleDb")
Logger.Error(ex)
'clsLogger.Add(ex.Message & vbNewLine & "Execute Command => (" & plsqlcommand & ")", True, "clsDatatabase.ExecuteonOracleDb")
Oracle_Conn.Close()
Return False
End Try
Else
Logger.Info("SQL-Command ist ungültig bzw konnte nicht erstellt werden (SQL: " & plsqlcommand & ")")
' kann eintreten, wenn entweder die SQL-Anweisung falsch ist oder wenn die DataConnection nicht richtig aufgebaut werden konnte
' Eintrag in Logdatei machen
clsLogger.Add("SQL-Command ist ungültig bzw konnte nicht erstellt werden (SQL: " & plsqlcommand & ")", True, "clsDatatabase.ExecuteonOracleDb")
'clsLogger.Add("SQL-Command ist ungültig bzw konnte nicht erstellt werden (SQL: " & plsqlcommand & ")", True, "clsDatatabase.ExecuteonOracleDb")
Return False
End If
Catch ex As Exception
clsLogger.Add("Unexpected Error in ExecuteonOracleDb: " & ex.Message & vbNewLine & "SQL: " & plsqlcommand, True, "clsDatatabase.ExecuteonOracleDb")
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
Return False
End Try
@@ -99,13 +105,15 @@ Public Class clsDatatabase
Oracle_Conn.Open()
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.Oracle_CS_Test(OpenConnection)")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.Oracle_CS_Test(OpenConnection)")
Return False
End Try
Oracle_Conn.Close()
Return True
Catch ex As Exception
clsLogger.Add("Unexpected Error in Oracle_CS_Test: " & ex.Message, True, "clsDatatabase.Oracle_CS_Test")
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in Oracle_CS_Test: " & ex.Message, True, "clsDatatabase.Oracle_CS_Test")
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
Return False
End Try
@@ -123,21 +131,24 @@ Public Class clsDatatabase
Connection = New SqlConnection(CONSTRING)
Connection.Open()
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.MSSQL_CS_Test(OpenConnection)")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.MSSQL_CS_Test(OpenConnection)")
Return False
End Try
Connection.Close()
Return True
Catch ex As Exception
Logger.Error(ex)
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
clsLogger.Add("UNEXPECTED ERROR: " & ex.Message, True, "clsDatatabase.MSSQL_CS_Test")
'clsLogger.Add("UNEXPECTED ERROR: " & ex.Message, True, "clsDatatabase.MSSQL_CS_Test")
Return False
End Try
End Function
Public Shared Function ExecuteonMSSQL(ConString As String, ByVal sqlcommand As String)
Try
Logger.Debug("sqlcommand: " & sqlcommand)
If MSSQL_inited = False Then Return False
' die nötigen Variablen definieren
Dim Connection As SqlConnection = Nothing
@@ -159,7 +170,8 @@ Public Class clsDatatabase
Connection = New SqlConnection(ConString)
Connection.Open()
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonMSSQL(OpenConnection)")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonMSSQL(OpenConnection)")
Return False
End Try
@@ -168,7 +180,8 @@ Public Class clsDatatabase
Try
Command = New SqlCommand(sqlcommand, Connection)
Catch ex As Exception
clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonMSSQL(DefineCommand)")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonMSSQL(DefineCommand)")
Return False
Connection.Close()
End Try
@@ -182,21 +195,24 @@ Public Class clsDatatabase
Connection.Close()
Return True
Catch ex As Exception
Logger.Error(ex)
' bei einem Fehler einen Eintrag in der Logdatei erzeugen
clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonMSSQL(ExecuteCommand)")
'clsLogger.Add(ex.Message, True, "clsDatatabase.ExecuteonMSSQL(ExecuteCommand)")
Return False
Connection.Close()
End Try
Else
' kann eintreten, wenn entweder die SQL-Anweisung falsch ist oder wenn die DataConnection nicht richtig aufgebaut werden konnte
' Eintrag in Logdatei machen
clsLogger.Add("Could not create COMMAND", True, "clsDatatabase.ExecuteonMSSQL")
Logger.Info("Could not create COMMAND")
' clsLogger.Add("Could not create COMMAND", True, "clsDatatabase.ExecuteonMSSQL")
Return False
Connection.Close()
End If
Catch ex As Exception
Logger.Error(ex)
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
clsLogger.Add("UNEXPECTED ERROR: " & ex.Message, True, "clsDatatabase.ExecuteonMSSQL")
'clsLogger.Add("UNEXPECTED ERROR: " & ex.Message, True, "clsDatatabase.ExecuteonMSSQL")
Return False
End Try
@@ -205,6 +221,7 @@ Public Class clsDatatabase
Public Shared Function Return_Datatable(Select_anweisung As String)
Try
Logger.Debug("Select_anweisung: " & Select_anweisung)
If MSSQL_inited = False Then Return Nothing
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
@@ -223,9 +240,9 @@ Public Class clsDatatabase
Return dt
Catch ex As Exception
clsLogger.Add("Error in Return_Datatable: " & ex.Message, True)
clsLogger.Add(">> SQL: " & Select_anweisung, False)
Logger.Error(ex)
'clsLogger.Add("Error in Return_Datatable: " & ex.Message, True)
'clsLogger.Add(">> SQL: " & Select_anweisung, False)
Return Nothing
End Try
@@ -233,6 +250,7 @@ Public Class clsDatatabase
Public Shared Function Execute_non_Query(ExecuteCMD As String)
If MSSQL_inited = False Then Return False
Try
Logger.Debug("ExecuteCMD: " & ExecuteCMD)
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = clsCURRENT.SQLSERVER_CS
@@ -250,9 +268,9 @@ Public Class clsDatatabase
Return True
Catch ex As Exception
clsLogger.Add("Error in Execute_non_Query: " & ex.Message, True)
clsLogger.Add("SQL: " & ExecuteCMD, False)
Logger.Error(ex)
'clsLogger.Add("Error in Execute_non_Query: " & ex.Message, True)
'clsLogger.Add("SQL: " & ExecuteCMD, False)
Return False
End Try
@@ -262,7 +280,7 @@ Public Class clsDatatabase
If MSSQL_inited = False Then Return Nothing
Dim result
Try
Logger.Debug("cmdscalar: " & cmdscalar)
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
@@ -282,15 +300,16 @@ Public Class clsDatatabase
Return result
Catch ex As Exception
clsLogger.Add("Error in Execute_Scalar: " & ex.Message, True)
clsLogger.Add("SQL: " & cmdscalar, False)
Logger.Error(ex)
'clsLogger.Add("Error in Execute_Scalar: " & ex.Message, True)
'clsLogger.Add("SQL: " & cmdscalar, False)
Return Nothing
End Try
End Function
Public Shared Function OracleExecute_Scalar(cmdscalar As String, OracleConnection As String)
Dim result
Try
Logger.Debug("cmdscalar: " & cmdscalar)
Dim SQLconnect As New OracleConnection
Dim SQLcommand As New OracleCommand
SQLconnect.ConnectionString = OracleConnection
@@ -303,13 +322,15 @@ Public Class clsDatatabase
SQLconnect.Close()
Return result
Catch ex As Exception
clsLogger.Add("Error in OracleExecute_Scalar: " & ex.Message, True)
clsLogger.Add("#SQL: " & cmdscalar, False)
Logger.Error(ex)
'clsLogger.Add("Error in OracleExecute_Scalar: " & ex.Message, True)
'clsLogger.Add("#SQL: " & cmdscalar, False)
Return Nothing
End Try
End Function
Public Shared Function OracleExecute_non_Query(ExecuteCMD As String, OracleConnection As String, Optional userInput As Boolean = False)
Try
Logger.Debug("ExecuteCMD: " & ExecuteCMD)
Dim SQLconnect As New OracleConnection
Dim SQLcommand As OracleCommand
SQLconnect.ConnectionString = OracleConnection
@@ -322,9 +343,9 @@ Public Class clsDatatabase
SQLconnect.Close()
Return True
Catch ex As Exception
clsLogger.Add("Error in OracleExecute_non_Query: " & ex.Message, True)
clsLogger.Add("#SQL: " & ExecuteCMD, False)
Logger.Error(ex)
'clsLogger.Add("Error in OracleExecute_non_Query: " & ex.Message, True)
'clsLogger.Add("#SQL: " & ExecuteCMD, False)
Return False
End Try
@@ -332,6 +353,7 @@ Public Class clsDatatabase
Public Shared Function Oracle_Return_Datatable(Select_anweisung As String, OracleConnection As String, Optional userInput As Boolean = False)
Try
Logger.Debug("Select_anweisung: " & Select_anweisung)
Dim SQLconnect As New OracleConnection
Dim SQLcommand As OracleCommand
SQLconnect.ConnectionString = OracleConnection
@@ -345,9 +367,9 @@ Public Class clsDatatabase
SQLconnect.Close()
Return dt
Catch ex As Exception
clsLogger.Add("Error in Oracle_Return_Datatable: " & ex.Message, True)
clsLogger.Add("#SQL: " & Select_anweisung, False)
Logger.Error(ex)
'clsLogger.Add("Error in Oracle_Return_Datatable: " & ex.Message, True)
'clsLogger.Add("#SQL: " & Select_anweisung, False)
Return Nothing
End Try
End Function

View File

@@ -5,7 +5,7 @@ Imports Newtonsoft.Json
Imports System.Text
Public Class clsDateiverarbeitung
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
#Region "***** Variablen und Konstanten*****"
Public Shared _windream As New clsWindream_allgemein
@@ -30,10 +30,11 @@ Public Class clsDateiverarbeitung
Try
pr_DTPROFIL_REGELN = Nothing
' Profildaten der Klasse mitteilen
clsLogger.AddDetailLog("InitProfilData Profildaten zugewiesen....")
Logger.Info("InitProfilData Profildaten zugewiesen....")
Return True
Catch ex As Exception
clsLogger.AddError(ex.Message, "cls_DV.InitProfilData")
Logger.Error(ex)
'clsLogger.AddError(ex.Message, "cls_DV.InitProfilData")
Return False
End Try
End Function
@@ -43,14 +44,14 @@ Public Class clsDateiverarbeitung
If Not Zielpfad.EndsWith("\") Then
Zielpfad = Zielpfad & "\"
End If
clsLogger.Add("", False)
clsLogger.Add(">> Verarbeitung von Datei: " & WDDatei.aName, False)
Logger.Info("Verarbeitung von Datei: " & WDDatei.aName)
'Die Quelle zusammensetzen
clsLogger.AddDetailLog("PFAD: " & clsCURRENT.WDLAUFWERK & ":" & WDDatei.aPath & "\" & WDDatei.aName)
Logger.Info("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
clsLogger.AddDetailLog("ExportFileIO erzeugt.....")
Logger.Info("ExportFileIO erzeugt.....")
' Stream Interface bereitstellen
WDDatei.LockFor(WMObjectEditModeFileSystem)
Try
@@ -58,7 +59,7 @@ Public Class clsDateiverarbeitung
WDDatei.lock()
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File")
Logger.Error(ex) 'clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File")
Return False
End Try
@@ -74,7 +75,7 @@ Public Class clsDateiverarbeitung
tempFilename = Zielpfad & Filename & "_" & version & Extension
version = version + 1
Loop
clsLogger.AddDetailLog("Zieldateiname: " & tempFilename)
Logger.Info("Zieldateiname: " & tempFilename)
' den Dateiinhalt der neuen Datei zuweisen
ExportFileIO.aWMStream = oWMStream
ExportFileIO.bstrOriginalFileName = tempFilename
@@ -85,18 +86,19 @@ Public Class clsDateiverarbeitung
WDDatei.Save()
WDDatei.unlock()
clsCURRENT.EXPORTED_FILENAME = tempFilename
clsLogger.Add(">> Datei erfolgreich nach '" & tempFilename & "' verschoben.", False, "clsDV Export_File")
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
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsDV.Export_File")
Logger.Error(ex)
Return False
End Try
End Function
Public Shared Function Rename_File(WMFile As WMObject, konvention As String)
Try
clsLogger.AddDetailLog("Konvention: '" & konvention & "'")
Logger.Info("Konvention: '" & konvention & "'")
'Regulären Ausdruck zum Auslesen der windream-Indexe definieren
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
@@ -110,42 +112,43 @@ Public Class clsDateiverarbeitung
'die Zeichen [% und ] entfernen (liefert den wirklichen windream-Index)
Dim reg_element_Ohne_SZ As String = reg_element.Value.Replace("[%", "")
reg_element_Ohne_SZ = reg_element_Ohne_SZ.Replace("]", "")
clsLogger.AddDetailLog("Indexwert aus Index '" & reg_element_Ohne_SZ & "' auslesen....")
Logger.Info("Indexwert aus Index '" & reg_element_Ohne_SZ & "' auslesen....")
Dim wdIndexwert
'den Wert des Indexes für das aktuelle Dokument auslesen
wdIndexwert = WMFile.GetVariableValue(reg_element_Ohne_SZ)
If wdIndexwert Is Nothing = False Then
If Not wdIndexwert.GetType.ToString.Contains("System.Object") Then
clsLogger.AddDetailLog("Namenkonvention (" & i & ") " & konvention)
Logger.Info("Namenkonvention (" & i & ") " & konvention)
wdIndexwert = wdIndexwert.ToString.TrimEnd
wdIndexwert = wdIndexwert.ToString.TrimStart
clsLogger.AddDetailLog("Ausgelesener Indexwert = '" & wdIndexwert & "'")
Logger.Info("Ausgelesener Indexwert = '" & wdIndexwert & "'")
konvention = konvention.Replace(reg_element.Value, wdIndexwert.ToString)
i += 1
Else
clsLogger.Add(">> Achtung gelesener Wert ist ein Vektorfeld - keine Umbenennung möglich ", False, "clsProfil.Profil_Durchlauf")
Logger.Warn("Achtung gelesener Wert ist ein Vektorfeld - keine Umbenennung möglich ")
End If
End If
Next
Dim version As Integer = 2
Dim ZielPfad As String = Path.GetDirectoryName(aktfile_Exportresult)
clsLogger.AddDetailLog("ZielPfad: " & ZielPfad)
Logger.Info("ZielPfad: " & ZielPfad)
Dim Filename = konvention
Dim Extension = Path.GetExtension(aktfile_Exportresult)
clsLogger.AddDetailLog("Extension: " & Extension)
Logger.Info("Extension: " & Extension)
Dim tempFilename As String = ZielPfad & "\" & Filename & Extension
clsLogger.AddDetailLog("tempFilename: " & tempFilename)
Logger.Info("tempFilename: " & tempFilename)
'Überprüfen ob File existiert
Do While IO.File.Exists(tempFilename) = True
tempFilename = ZielPfad & "\" & Filename & "~" & version & Extension
version += 1
Loop
clsLogger.AddDetailLog("RenameFile - OLDFilename: " & aktfile_Exportresult & " - NEWFilename: " & Path.GetFileName(tempFilename))
Logger.Info("RenameFile - OLDFilename: " & aktfile_Exportresult & " - NEWFilename: " & Path.GetFileName(tempFilename))
My.Computer.FileSystem.RenameFile(aktfile_Exportresult, Path.GetFileName(tempFilename))
clsLogger.Add(">> Datei wurde erfolgreich umbenannt.", False, "clsProfil.RenameFile")
Logger.Info("Datei wurde erfolgreich umbenannt.")
Return True
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.RenameFile")
Logger.Error(ex)
Return False
End Try
End Function
@@ -153,9 +156,9 @@ Public Class clsDateiverarbeitung
Try
Dim WMIndexwert
Dim ZielPfad As String = Path.GetDirectoryName(aktfile_Exportresult)
clsLogger.AddDetailLog("ZielPfad: " & ZielPfad)
Logger.Info("ZielPfad: " & ZielPfad)
Dim Extension = Path.GetExtension(aktfile_Exportresult)
clsLogger.AddDetailLog("Extension: " & Extension)
Logger.Info("Extension: " & Extension)
If WMINDEX_NAME.StartsWith("[%") Then
WMINDEX_NAME = WMINDEX_NAME.Replace("[%", "")
@@ -164,7 +167,7 @@ Public Class clsDateiverarbeitung
'den Wert des Indexes für das aktuelle Dokument auslesen
WMIndexwert = WMFile.GetVariableValue(WMINDEX_NAME)
If WMIndexwert.GetType.ToString.Contains("System.Object") Then
clsLogger.AddDetailLog("Rename_File_Vektor in Progress for index " & WMINDEX_NAME)
Logger.Info("Rename_File_Vektor in Progress for index " & WMINDEX_NAME)
Dim anz As Integer = 1
Dim copybasefile As String
For Each WMvalue As Object In WMIndexwert
@@ -172,9 +175,9 @@ Public Class clsDateiverarbeitung
Try
If WMvalue.ToString <> String.Empty Then
Dim tempFilename As String = ZielPfad & "\" & WMvalue & Extension
clsLogger.AddDetailLog("tempFilename: " & tempFilename)
Logger.Info("tempFilename: " & tempFilename)
If anz = 1 Then
clsLogger.AddDetailLog("RenameFile - OLDFilename: " & aktfile_Exportresult & " - NEWFilename: " & Path.GetFileName(tempFilename))
Logger.Info("RenameFile - OLDFilename: " & aktfile_Exportresult & " - NEWFilename: " & Path.GetFileName(tempFilename))
My.Computer.FileSystem.RenameFile(aktfile_Exportresult, Path.GetFileName(tempFilename))
copybasefile = tempFilename
Else
@@ -190,18 +193,20 @@ Public Class clsDateiverarbeitung
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsDateiverarbeitung.ForEachWMvalue")
Logger.Error(ex)
'
End Try
Next
Else
clsLogger.Add(">> Achtung WMIndex " & WMINDEX_NAME & " scheint kein Vektorfeld zu sein!", False, "clsDateiverarbeitung.Rename_File_Vektor")
Logger.Warn("Achtung WMIndex " & WMINDEX_NAME & " scheint kein Vektorfeld zu sein!")
Return False
End If
clsLogger.Add(">> Dateien wurde erfolgreich nach Vektorfeld erzeugt.", False, "clsDateiverarbeitung.Rename_File_Vektor")
Logger.Info("Dateien wurde erfolgreich nach Vektorfeld erzeugt.")
Return True
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsDateiverarbeitung.Rename_File_Vektor")
Logger.Error(ex)
End Try
End Function
@@ -264,8 +269,8 @@ Public Class clsDateiverarbeitung
Dim geschaeftsId = SENDUNGNR
Dim url As String = $"http://{apiAddress}/onwebui/api/Customer/{mandatenId}/{geschaeftsObjekt}/{geschaeftsId}/dokument"
clsLogger.Add($">> Generiertes JSON: {json}", False, "BNSjsonDownload")
clsLogger.Add($">> Creating WebRequest for {url}", False, "BNSjsonDownload")
Logger.Info($">> Generiertes JSON: {json}")
Logger.Info($">> Creating WebRequest for {url}")
Dim req As HttpWebRequest = WebRequest.CreateHttp(url)
@@ -279,8 +284,8 @@ Public Class clsDateiverarbeitung
reqStream.Write(bytes, 0, bytes.Length)
reqStream.Close()
clsLogger.Add($">> Datei wird hochgeladen... docId: {DOKID}, dokart: {DOKART}, userId: {userId}", False, "BNSjsonDownload")
clsLogger.Add($">> Upload URL: {url}", False, "BNSjsonDownload")
Logger.Info($">> Datei wird hochgeladen... docId: {DOKID}, dokart: {DOKART}, userId: {userId}")
Logger.Info($">> Upload URL: {url}")
Using res As HttpWebResponse = req.GetResponse()
Dim code As HttpStatusCode = res.StatusCode
@@ -288,14 +293,15 @@ Public Class clsDateiverarbeitung
' Status 201 Created bedeutet: Alles okay!
If code = HttpStatusCode.Created Then
clsLogger.Add($">> Datei geschrieben! docId: {DOKID}, dokart: {DOKART}, userId: {userId}", False, "BNSjsonDownload")
Logger.Info($">> Datei geschrieben! docId: {DOKID}, dokart: {DOKART}, userId: {userId}")
Else
Throw New Exception($"Server Error (HTTP {code}: {text})")
End If
End Using
Return True
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message & " - " & ex.Source, "BNSjsonDownload")
Logger.Error(ex)
Return True
End Try
End Function
@@ -314,7 +320,8 @@ Public Class clsDateiverarbeitung
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "RUN_ORACLE_COMMAND")
Logger.Error(ex)
Return False
End Try
End Function
@@ -333,14 +340,15 @@ Public Class clsDateiverarbeitung
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "RUN_MSSQL_COMMAND")
Logger.Error(ex)
Return False
End Try
End Function
Public Shared Function REGEX_REPLACE(WMFile As WMObject, _STRING As String)
Try
clsLogger.AddDetailLog("REGEX_String before replacing: '" & _STRING & "'")
Logger.Info("REGEX_String before replacing: '" & _STRING & "'")
' Regulären Ausdruck zum Auslesen der windream-Indexe definieren
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
' einen Regulären Ausdruck laden
@@ -353,7 +361,7 @@ Public Class clsDateiverarbeitung
' die Zeichen [% und ] entfernen (liefert den wirklichen windream-Index)
Dim reg_element_Ohne_SZ As String = reg_element.Value.Replace("[%", "")
reg_element_Ohne_SZ = reg_element_Ohne_SZ.Replace("]", "")
clsLogger.AddDetailLog("read indexvalue from index '" & reg_element_Ohne_SZ & "'....")
Logger.Info("read indexvalue from index '" & reg_element_Ohne_SZ & "'....")
If reg_element_Ohne_SZ = "EXPORTED_FILENAME" Then
If clsCURRENT.EXPORTED_FILENAME <> "" Then
_STRING = _STRING.Replace(reg_element.Value, clsCURRENT.EXPORTED_FILENAME)
@@ -369,14 +377,14 @@ Public Class clsDateiverarbeitung
If Not wdIndexwert.GetType.ToString.Contains("System.Object") Then
wdIndexwert = wdIndexwert.ToString.TrimEnd
wdIndexwert = wdIndexwert.ToString.TrimStart
clsLogger.AddDetailLog("indexvalue read is: '" & wdIndexwert & "'")
Logger.Info("indexvalue read is: '" & wdIndexwert & "'")
_STRING = _STRING.Replace(reg_element.Value, wdIndexwert.ToString)
clsLogger.AddDetailLog("REGEX_String (" & i & ") " & _STRING)
Logger.Info("REGEX_String (" & i & ") " & _STRING)
i += 1
Else
clsLogger.Add(">> Attention: WMIndex is an vectorfield - seperation of values via ;", False, "clsDateiverarbeitung.REGEX_REPLACE")
clsLogger.AddDetailLog("wdIndexValue is System.Object....")
clsLogger.AddDetailLog("trying to seperate via ,....")
Logger.Warn("Attention: WMIndex is an vectorfield - seperation of values via ;")
Logger.Info("wdIndexValue is System.Object....")
Logger.Info("trying to seperate via ,....")
Dim vector_result As String = ""
For Each WMvalue As Object In wdIndexwert
Dim x As Integer = 0
@@ -392,10 +400,10 @@ Public Class clsDateiverarbeitung
End If
Next
_STRING = _STRING.Replace(reg_element.Value, vector_result.ToString)
clsLogger.AddDetailLog("REGEX_String after vector-for-each (" & i & ") " & _STRING)
Logger.Info("REGEX_String after vector-for-each (" & i & ") " & _STRING)
End If
Else
clsLogger.Add(">> Attention: Indexvalue is NOTHING, standardvalue '0' will be used", False, "clsDateiverarbeitung.REGEX_REPLACE")
Logger.Warn("Attention: Indexvalue is NOTHING, standardvalue '0' will be used", False, "clsDateiverarbeitung.REGEX_REPLACE")
_STRING = _STRING.Replace(reg_element.Value, "0")
End If
End If
@@ -404,7 +412,8 @@ Public Class clsDateiverarbeitung
Next
Return _STRING
Catch ex As Exception
clsLogger.AddError("Unexpected error: " & ex.Message, "REGEX_REPLACE")
Logger.Error(ex)
Return Nothing
End Try
End Function

View File

@@ -4,6 +4,7 @@ Imports Independentsoft.Email
Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime
Public Class clsEmail
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
Private Shared MailAktiv As Boolean = False
'Public Shared Function Init()
@@ -116,7 +117,7 @@ Public Class clsEmail
message.BodyParts.Add(textBodyPart)
If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then
Dim attachment1 As New Attachment("c:\testfolder\test.docx")
Dim attachment1 As New Attachment(attment)
If attment.ToLower.EndsWith("pdf") Then
attachment1.ContentType = New ContentType("application", "pdf")
ElseIf attment.ToLower.EndsWith("jpg") Then
@@ -131,7 +132,8 @@ Public Class clsEmail
Try
client = New SmtpClient(mailsmtp, mailport)
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail(Create Client)")
Logger.Warn("clsEmail.SendMail(Create Client): " & ex.Message)
_error = True
Continue For
End Try
@@ -139,7 +141,7 @@ Public Class clsEmail
Try
client.Connect()
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail(Client.Connect)")
Logger.Warn("clsEmail.SendMail(Client.Connect): " & ex.Message)
_error = True
Continue For
@@ -148,7 +150,7 @@ Public Class clsEmail
Try
client.Login(mailUser, mailPW)
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail(Client.Login)")
Logger.Warn("clsEmail.SendMail(Client.Login): " & ex.Message)
_error = True
client.Disconnect()
Continue For
@@ -156,7 +158,7 @@ Public Class clsEmail
Try
client.Send(message)
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail(Client.Send)")
Logger.Warn("clsEmail.SendMail(Client.Send): " & ex.Message)
_error = True
client.Disconnect()
Continue For
@@ -164,11 +166,11 @@ Public Class clsEmail
client.Disconnect()
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail()")
Logger.Error(ex)
_error = True
End Try
Next
clsLogger.WriteLog()
If _error = True Then
Return False

View File

@@ -1,172 +0,0 @@
Imports System.IO
Public Class clsLogger
Private Shared LogPath As String
Public Shared LogFilename As String
Private Shared logErr_name As String
Private Shared log_string As String
Private Shared Inited As Boolean = False
Public Shared Function Init(ByVal speicherort As String, ByVal prefix As String)
Try
'Den Speicherort festlegen
SetSpeicherort()
Dim logf_name As String = LogPath & "\" & System.DateTime.Now.ToString("yyyy_MM_dd") & prefix & ".txt"
logErr_name = LogPath & "\" & "ErrorLog_" & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt"
Dim anz As Integer = 1
Do While File.Exists(logf_name)
Dim info As New FileInfo(logf_name)
Dim length As Long = info.Length
If length > 5000000 Then
logf_name = IO.Path.GetDirectoryName(logf_name)
logf_name = logf_name & "\" & prefix & System.DateTime.Now.ToString("yyyy_MM_dd") & "(" & anz.ToString & ").txt"
anz = anz + 1
Else
Exit Do
End If
Loop
LogFilename = logf_name
Try
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(" ")
' --- Writer und Stream schließen
w.Close()
fs.Close()
Catch ex As Exception
LogEscalation_Error("The Logfile could not be created - Error: " & ex.Message)
Return False
End Try
'Alles Ok
Inited = True
Return True
Catch ex As Exception
LogEscalation_Error("Unexpected Error in init Logger - Error: " & ex.Message)
Return False
End Try
End Function
Private Shared Sub LogEscalation_Error(msg As String)
Try
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(logErr_name, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(msg)
' --- Writer und Stream schließen
w.Close()
fs.Close()
Catch ex As Exception
End Try
End Sub
' legt den Speicherort fest
Public Shared Sub SetSpeicherort()
Dim f As New IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Log")
If f.Exists = False Then
IO.Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\Log")
End If
LogPath = My.Application.Info.DirectoryPath & "\Log\"
End Sub
Public Shared Sub Add(ByVal text As String, ByVal _error As Boolean, Optional ByVal Funktion As String = "")
If Inited = False Then
Exit Sub
End If
Dim msg As String
If log_string <> "" Then
log_string &= vbNewLine
End If
'Präfixe schreiben
If _error = True And Funktion <> "" Then
msg = ">> Unexpected error in function '" & Funktion & "': "
ElseIf _error = True Then
msg = ">> Unexpected error: "
End If
'Präfix und Meldung zusammenstellen
msg &= text
log_string &= Now.ToString & " " & msg
End Sub
Public Shared Sub AddError(ByVal error_string As String, Optional ByVal Funktion As String = "")
If Inited = False Then
Exit Sub
End If
Try
'Zuerst mal die Details schreiben
WriteLog()
'Nun den eigentlichen Fehler loggen
Dim msg As String = Now.ToString
'Präfixe schreiben
If Funktion <> "" Then
msg &= ">> Unexpected error in function '" & Funktion & "': "
Else
msg &= ">> Unexpected error: "
End If
'Präfix und Meldung zusammenstellen
msg &= error_string
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(msg)
' --- Writer und Stream schließen
w.Close()
fs.Close()
Catch ex As Exception
LogEscalation_Error("Unexpected Error in AddError - Error: " & ex.Message)
End Try
End Sub
Public Shared Sub AddDetailLog(ByVal text As String)
If Inited = False Then
Exit Sub
End If
Try
If clsCURRENT.LOG_ERRORS_ONLY = False Then
If log_string <> "" Then
log_string &= vbNewLine
End If
log_string &= ">> " & text
End If
Catch ex As Exception
LogEscalation_Error("Unexpected Error in AddDetailLog - Error: " & ex.Message)
End Try
End Sub
Public Shared Sub WriteLog()
Try
If log_string = Nothing Then
Exit Sub
End If
If log_string = String.Empty Then
Exit Sub
End If
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(log_string)
' --- Writer und Stream schließen
w.Close()
fs.Close()
SetSpeicherort()
'Den Meldungsstring wieder leeren
log_string = ""
Catch ex As Exception
LogEscalation_Error("Unexpected Error in WriteLog - Error: " & ex.Message)
End Try
End Sub
End Class

View File

@@ -5,6 +5,7 @@ Imports Newtonsoft.Json
Public Class clsProfil
Inherits clsCURRENT
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
#Region "***** Variablen *****"
@@ -15,20 +16,22 @@ Public Class clsProfil
Private Shared WD_aktivesDokument As WMObject
#End Region
Public Shared Function Init(guid As Integer)
Try
Sub New(PROFIL_ID As Integer, LogSpeicherort As String, praefix As String)
Init(PROFIL_ID)
clsLogger.AddDetailLog("Start Initialisierung Profil für GUID: " & guid.ToString)
Dim DT As DataTable = clsDatatabase.Return_Datatable("Select * from TBWMRH_PROFIL where GUID = " & guid)
End Sub
Public Shared Function Init(PROFIL_ID As Integer)
Try
Logger.Info("Start Initialisierung Profil für GUID: " & PROFIL_ID.ToString)
Dim DT As DataTable = clsDatatabase.Return_Datatable("Select * from TBWMRH_PROFIL where GUID = " & PROFIL_ID)
If DT.Rows.Count > 0 Then
For Each DR As DataRow In DT.Rows
clsCURRENT._profGUID = guid
_profGUID = PROFIL_ID
_Profilname = CStr(DR.Item("Profilname"))
clsLogger.AddDetailLog("Check Profilname '" & _Profilname & "', GUID: " & _profGUID & " geladen")
Logger.Info("Check Profilname '" & _Profilname & "', GUID: " & _profGUID & " geladen")
' Überprüfen ob Profil aktiv oder inaktiv
If CBool(DR.Item("Aktiv")) = False Then
clsLogger.Add("## Profil '" & _Profilname & "' ist inaktiv geschaltet", False)
clsLogger.Add("", False)
Logger.Info("## Profil '" & _Profilname & "' ist inaktiv geschaltet")
Return False
Else
_profObjekttyp = CStr(DR.Item("Objekttyp"))
@@ -36,17 +39,17 @@ Public Class clsProfil
_profDay = CStr(DR.Item("Day"))
_profRunType = CStr(DR.Item("Run"))
_proflastRun = DR.Item("Letzter_Durchlauf")
clsLogger.AddDetailLog("Raw-Daten für Profil '" & _Profilname & "', GUID: " & _profGUID & " geladen")
Logger.Info("Raw-Daten für Profil '" & _Profilname & "', GUID: " & _profGUID & " geladen")
Return True
End If
Next
Else
clsLogger.Add("Achtung - keine Profile für diesen Durchlaufthread verfügbar", False)
Logger.Warn("Achtung - keine Profile für diesen Durchlaufthread verfügbar")
Return False
End If
Catch ex As Exception
clsLogger.AddError(ex.Message, "Profil_Init")
Logger.Error(ex)
Return False
End Try
@@ -60,21 +63,21 @@ Public Class clsProfil
Dim Dayofweek As Integer = My.Computer.Clock.LocalTime.DayOfWeek
If _profDay.Substring(Dayofweek - 1, 1) = 1 Then
'Verarbeitung soll heute durchgeführt werden
clsLogger.AddDetailLog("Verarbeitung soll heute durchgeführt werden!")
clsLogger.AddDetailLog("_RunType: " & _profRunType)
Logger.Info("Verarbeitung soll heute durchgeführt werden!")
Logger.Info("_RunType: " & _profRunType)
Dim arr As String()
arr = _profRunType.Split(";")
clsLogger.AddDetailLog("arr(1): " & arr(1).ToString)
Logger.Info("arr(1): " & arr(1).ToString)
Select Case arr(0)
Case "TIME"
' Dim intervall As Integer = clsSQLITE.konf_intervall / 60
clsLogger.AddDetailLog("Intervall: 1 Minute")
Logger.Info("Intervall: 1 Minute")
Dim Time_next As DateTime = _proflastRun.AddMinutes(1)
Dim _RunTime As Date = CDate(arr(1))
clsLogger.AddDetailLog("ProfilTime: " & _RunTime)
clsLogger.AddDetailLog("_RunTime.ToShortTimeString: " & _RunTime.ToShortTimeString & " # " & "Now.ToShortTimeString: " & Now.ToShortTimeString)
Logger.Info("ProfilTime: " & _RunTime)
Logger.Info("_RunTime.ToShortTimeString: " & _RunTime.ToShortTimeString & " # " & "Now.ToShortTimeString: " & Now.ToShortTimeString)
If Time_next.ToString.StartsWith("11.11.1911") Then
clsLogger.AddDetailLog("Manueller Durchlauf des Profils - 11.11.1911")
Logger.Info("Manueller Durchlauf des Profils - 11.11.1911")
Run_Profile = True
Else
'Ist die Uhrzeit in der Range
@@ -90,67 +93,66 @@ Public Class clsProfil
msg = "Minutenangaben: " & vbNewLine
msg = msg & "DiffMin: " & DiffMin & vbNewLine
msg = msg & "Intervall: " & arr(1)
clsLogger.AddDetailLog(msg)
Logger.Info(msg)
If DiffMin >= CInt(arr(1)) Then
'Den Durchlauf erlauben
Run_Profile = True
End If
Case Else
clsLogger.Add(">> _profRunType konnte nicht ausgewertet werden - " & arr(0), False)
Logger.Warn("_profRunType konnte nicht ausgewertet werden - " & arr(0))
End Select
If Run_Profile = True Then
ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL = clsDatatabase.Return_Datatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
ClassWMResulthandler.clsCURRENT.ARR_Exported_Files = Nothing
clsLogger.Add(">> Start des Durchlaufes für Profil '" & _Profilname & "'", False)
clsCURRENT.DT_TBDD_EMAIL = clsDatatabase.Return_Datatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
clsCURRENT.PROFILE_HandledFiles = Nothing
Logger.Info("Start des Durchlaufes für Profil '" & _Profilname & "'")
'den Durchlaufszeitpunkt speichern
clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 1 WHERE GUID = " & _profGUID)
clsLogger.AddDetailLog("Prüfen der windream-Suche.......")
Logger.Info("Prüfen der windream-Suche.......")
If File.Exists(_profwdSuche) = False Then
clsLogger.Add("Die Windream-Suche '" & _profwdSuche & "' existiert nicht!", True, "clsProfil.Profil_Durchlauf")
Logger.Warn("Die Windream-Suche '" & _profwdSuche & "' existiert nicht!", True, "clsProfil.Profil_Durchlauf")
'wenn die gesuchte File eine Suche ist: per MAil informierne und Indexierung abbrechen
clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 0 WHERE GUID = " & _profGUID)
clsLogger.WriteLog()
Return False
Else
' windream-Suche für Profil starten
clsLogger.AddDetailLog("GetSearchDocuments für Suche '" & _profwdSuche & "' starten: ")
Logger.Info("GetSearchDocuments für Suche '" & _profwdSuche & "' starten: ")
Dim windreamSucheErgebnisse As WMObjects = clsWindream_allgemein.GetSearchDocuments(_profwdSuche)
If windreamSucheErgebnisse Is Nothing Then
clsLogger.Add("windreamSucheErgebnisse is nothing!", True, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
Logger.Warn("windreamSucheErgebnisse is nothing!", True, "clsProfil.Profil_Durchlauf")
Return False
End If
If windreamSucheErgebnisse.Count > 0 Then
clsLogger.Add("- Insgesamt sollen '" & windreamSucheErgebnisse.Count & "' Dateien bearbeitet werden", False)
clsLogger.AddDetailLog("SELECT * FROM TBWMRH_PROFIL_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
Logger.Info("- Insgesamt sollen '" & windreamSucheErgebnisse.Count & "' Dateien bearbeitet werden")
Logger.Info("SELECT * FROM TBWMRH_PROFIL_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
Dim DT_PROFIL_JOB As DataTable = clsDatatabase.Return_Datatable("SELECT * FROM TBWMRH_PROFIL_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
Dim DT_PROFIL_FILE_JOB As DataTable = clsDatatabase.Return_Datatable("SELECT * FROM TBWMRH_PROFIL_FILE_JOB WHERE AKTIV = 1 AND PROFIL_ID = " & _profGUID & " ORDER BY REIHENFOLGE")
clsLogger.AddDetailLog("DT_PROFIL_JOB und DT_PROFIL_FILE_JOB generiert ")
clsLogger.AddDetailLog("DT_PROFIL_JOB.Rows.Count = " & DT_PROFIL_JOB.Rows.Count)
clsLogger.AddDetailLog("DT_PROFIL_FILE_JOB.Rows.Count = " & DT_PROFIL_FILE_JOB.Rows.Count)
Logger.Info("DT_PROFIL_JOB und DT_PROFIL_FILE_JOB generiert ")
Logger.Info("DT_PROFIL_JOB.Rows.Count = " & DT_PROFIL_JOB.Rows.Count)
Logger.Info("DT_PROFIL_FILE_JOB.Rows.Count = " & DT_PROFIL_FILE_JOB.Rows.Count)
If DT_PROFIL_JOB.Rows.Count > 0 Then
If clsDateiverarbeitung.InitProfilData = True Then
clsLogger.AddDetailLog("clsDateiverarbeitung.InitProfilData = True")
Logger.Info("clsDateiverarbeitung.InitProfilData = True")
For Each _JOBROW As DataRow In DT_PROFIL_JOB.Rows
clsLogger.AddDetailLog("JOB_TYP: " & _JOBROW.Item("JOB_TYP").ToString.ToUpper & " GUID: " & _JOBROW.Item("GUID").ToString)
Logger.Info("JOB_TYP: " & _JOBROW.Item("JOB_TYP").ToString.ToUpper & " GUID: " & _JOBROW.Item("GUID").ToString)
Next
Dim FileJobSuccessful As Boolean = False
Dim CountExportedDoc As Integer = 0
clsCURRENT.PROFILE_HandledFiles = Nothing
For Each WMdok As WMObject In windreamSucheErgebnisse
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
'XX
Dim Email_Empfänger = DR_PR_JB.Item("STRING1")
clsLogger.AddDetailLog("Email_Empfänger: " & Email_Empfänger)
Logger.Info("Email_Empfänger: " & Email_Empfänger)
Dim Email_Betreff = DR_PR_JB.Item("STRING2")
clsLogger.AddDetailLog("Email_Betreff: " & Email_Betreff)
Logger.Info("Email_Betreff: " & Email_Betreff)
Dim Email_Body = DR_PR_JB.Item("STRING3")
clsLogger.AddDetailLog("Email_Body: " & Email_Body)
Logger.Info("Email_Body: " & Email_Body)
Dim EMAIL_PROFIL = DR_PR_JB.Item("STRING4")
clsLogger.AddDetailLog("EMAIL_PROFIL: " & EMAIL_PROFIL)
If Not IsNothing(ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL) And ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows.Count >= 1 Then
Logger.Info("EMAIL_PROFIL: " & EMAIL_PROFIL)
If Not IsNothing(clsCURRENT.DT_TBDD_EMAIL) And clsCURRENT.DT_TBDD_EMAIL.Rows.Count >= 1 Then
Dim MAILFROM As String = ""
Dim MAILSMTP As String = ""
Dim MAIL_USER As String = ""
@@ -158,7 +160,7 @@ Public Class clsProfil
Dim MAIL_SSL As Boolean = False
Dim MAIL_PORT As String = "25"
For Each emailrow As DataRow In ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows
For Each emailrow As DataRow In clsCURRENT.DT_TBDD_EMAIL.Rows
If emailrow.Item("GUID") = CInt(EMAIL_PROFIL) Then
MAILFROM = emailrow.Item("EMAIL_FROM")
MAILSMTP = emailrow.Item("EMAIL_SMTP")
@@ -176,42 +178,42 @@ Public Class clsProfil
If PWPlain <> "" Then
MAIL_USER_PW = PWPlain
Else
clsLogger.AddError("PWPlain is string.empty - Could not decrypt passwort", "clsProfil.Profil_Durchlauf(wrapper.DecryptData(MAIL_USER_PW))")
clsLogger.WriteLog()
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort181")
Return False
End If
Else
clsLogger.AddError("PWPlain is nothing - Could not decrypt passwort", "clsProfil.Profil_Durchlauf(wrapper.DecryptData(MAIL_USER_PW))")
clsLogger.WriteLog()
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort188")
Return False
End If
If Email_Empfänger.ToString.Contains("[%") Then
Email_Empfänger = clsDateiverarbeitung.REGEX_REPLACE(WMdok, Email_Empfänger)
clsLogger.AddDetailLog("Email_Empfänger: " & Email_Empfänger)
Logger.Info("Email_Empfänger: " & Email_Empfänger)
End If
Email_Betreff = clsDateiverarbeitung.REGEX_REPLACE(WMdok, Email_Betreff)
Email_Body = clsDateiverarbeitung.REGEX_REPLACE(WMdok, Email_Body)
Dim FILENAME = ClassWMResulthandler.clsCURRENT.WDLAUFWERK & ":" & WMdok.aPath
Dim FILENAME = clsCURRENT.WDLAUFWERK & ":" & WMdok.aPath
clsEmail.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_SSL, FILENAME)
Else
clsLogger.AddError("DT_TBDD_EMAIL is nothing or contains no rows", "clsProfil.Profil_Durchlauf(end concatted file via mail)")
clsLogger.WriteLog()
Logger.Warn("DT_TBDD_EMAIL is nothing or contains no rows")
Return False
End If
Case "Export HDD".ToUpper
clsLogger.AddDetailLog("Case Export HDD")
Logger.Info("Case Export HDD")
'Für jedes Dokument in der Windream-Ergebnisliste
'For Each dok As WMObject In windreamSucheErgebnisse
' aktuelles Dokument zum Export bereitstellen
ClassWMResulthandler.clsCURRENT.EXPORTED_FILENAME = ""
clsCURRENT.EXPORTED_FILENAME = ""
If clsDateiverarbeitung.Export_File(WMdok, DR_PR_JB.Item("STRING1")) = True Then
ReDim Preserve ClassWMResulthandler.clsCURRENT.ARR_Exported_Files(CountExportedDoc)
ClassWMResulthandler.clsCURRENT.ARR_Exported_Files(CountExportedDoc) = ClassWMResulthandler.clsCURRENT.EXPORTED_FILENAME
ReDim Preserve clsCURRENT.PROFILE_HandledFiles(CountExportedDoc)
clsCURRENT.PROFILE_HandledFiles(CountExportedDoc) = clsCURRENT.EXPORTED_FILENAME
CountExportedDoc += 1
FileJobSuccessful = True
Else
@@ -226,7 +228,7 @@ Public Class clsProfil
Dim printername = DR_PR_JB.Item("STRING1")
Dim filename = clsCURRENT.WDLAUFWERK & ":" & WMdok.aPath '& "\" & WMdok.aName
If File.Exists(pdfxchange) = False Then
clsLogger.Add("PDFXChange existiert nicht am Ort...", True)
Logger.Warn("PDFXChange existiert nicht am Ort...")
Continue For
End If
Dim myProcess As New Process
@@ -236,7 +238,7 @@ Public Class clsProfil
Dim _argument As String = "/printto: """ & printername & """ """ & filename & """"
myProcess.StartInfo.Arguments = _argument
clsLogger.AddDetailLog("Arguments: " & _argument)
Logger.Info("Arguments: " & _argument)
Try
myProcess.Start()
Dim p As Process
@@ -248,25 +250,33 @@ Public Class clsProfil
Do While p.HasExited = False
If sw.Elapsed.TotalSeconds = 30 Then
clsLogger.AddDetailLog("Still waiting (30 sec) for ending of process-id: " & myProcess.Id.ToString)
Logger.Info("Still waiting (30 sec) for ending of process-id: " & myProcess.Id.ToString)
ElseIf sw.Elapsed.TotalMinutes = 1 Then
clsLogger.AddDetailLog("Still waiting (60 sec) for ending of process-id: " & myProcess.Id.ToString & " - Exit now")
Logger.Info("Still waiting (60 sec) for ending of process-id: " & myProcess.Id.ToString & " - Exit now")
Exit Do
End If
Loop
clsLogger.AddDetailLog("...process has exited: ")
Logger.Info("...process has exited: ")
FileJobSuccessful = True
sw.Stop()
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsProfil.Print2Printer StartProcess")
Logger.Error(ex)
End Try
clsLogger.WriteLog()
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(Print2Printer)")
Logger.Error(ex)
End Try
Case "Send InfoMail with WM-Search".ToUpper
If clsCURRENT.PROFILE_HandledFiles.Length - 1 <> CountExportedDoc Then
ReDim Preserve clsCURRENT.PROFILE_HandledFiles(CountExportedDoc)
clsCURRENT.PROFILE_HandledFiles(CountExportedDoc) = clsCURRENT.EXPORTED_FILENAME
CountExportedDoc += 1
End If
End Select
'Abschluss Bearbeitung Job
clsLogger.WriteLog()
Next
'##################################
'JETZT DER DURCHLAUF DER DATEI-JOBS
@@ -275,8 +285,7 @@ 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
clsLogger.Add("AUSSTIEG FOR SCHLEIFE...", True)
clsLogger.WriteLog()
Logger.Warn("AUSSTIEG FOR SCHLEIFE...")
Exit For
End If
Select Case DR_PR_FILE_JOB.Item("TYP").ToString.ToLower
@@ -288,24 +297,24 @@ Public Class clsProfil
If idxvalue.Contains("[%DATETIME]") Then
idxvalue = idxvalue.Replace("[%DATETIME]", Now.ToString)
End If
clsLogger.AddDetailLog("Datei soll mit Index '" & idxName & "'indexiert werden...")
Logger.Info("Datei soll mit Index '" & idxName & "'indexiert werden...")
Dim arrIndex() As String
ReDim Preserve arrIndex(0)
arrIndex(0) = idxName
clsLogger.AddDetailLog("...nach arrIndex")
Logger.Info("...nach arrIndex")
Dim arrValue() As String
Dim aktvalue As Object
aktvalue = WMdok.GetVariableValue(idxName)
clsLogger.AddDetailLog("...nach aktValue zuweisen..")
Logger.Info("...nach aktValue zuweisen..")
If aktvalue Is Nothing Then
clsLogger.AddDetailLog("Index '" & idxName & "' ist noch leer.")
Logger.Info("Index '" & idxName & "' ist noch leer.")
ReDim Preserve arrValue(0)
arrValue(0) = idxvalue
Else
clsLogger.AddDetailLog("Index '" & idxName & "' ist bereits gefüllt.")
Logger.Info("Index '" & idxName & "' ist bereits gefüllt.")
Dim myArray()
ReDim myArray(0)
myArray(0) = idxvalue
@@ -323,64 +332,64 @@ Public Class clsProfil
If arrValue Is Nothing = False Then
clsWindream_Index.RunIndexing(WMdok, arrIndex, arrValue, _profObjekttyp)
Else
clsLogger.Add(">> arrValue is nothing - keine Indexierung", False, "clsProfil.Profil_Durchlauf")
Logger.Warn("arrValue is nothing - keine Indexierung")
End If
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(SetIndex)")
Logger.Error(ex)
'clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(SetIndex)")
End Try
Case "Rename File with windream Index".ToLower
clsLogger.AddDetailLog("Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
Logger.Info("Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
clsDateiverarbeitung.Rename_File(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Rename File with WMVector (only one)".ToLower
clsLogger.AddDetailLog("Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
Logger.Info("Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
clsDateiverarbeitung.Rename_File_Vektor(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Execute Oracle Command".ToLower
Try
clsLogger.AddDetailLog("Execute Oracle Command.......")
Logger.Info("Execute Oracle Command.......")
Dim oracleconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim oracleCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
FileJobSuccessful = clsDateiverarbeitung.RUN_ORACLE_COMMAND(WMdok, oracleconnectionstring, oracleCommandRAW)
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteOracleCommand)")
Logger.Error(ex)
'clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteOracleCommand)")
End Try
Case "Execute MSSQL Command".ToLower
Try
Dim MSSQLconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim MSSQLCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
clsLogger.AddDetailLog("Execute MSSQL Command.......")
Logger.Info("Execute MSSQL Command.......")
FileJobSuccessful = clsDateiverarbeitung.RUN_MSSQL_COMMAND(WMdok, MSSQLconnectionstring, MSSQLCommandRAW)
Catch ex As Exception
clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteMSSQLCommand)")
Logger.Error(ex)
'clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(ExecuteMSSQLCommand)")
End Try
End Select
'Abschluss Bearbeitung File Job
Next
clsLogger.WriteLog()
Else
clsLogger.Add(">> KEINE File-JOBS für Profil '" & _Profilname & "' angelegt!", False, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
Logger.Warn("KEINE File-JOBS für Profil '" & _Profilname & "' angelegt!")
End If
Next
clsLogger.WriteLog()
'Jetzt nochmal ein Durchlauf für Profiljobs wo alle Dateien abgearbeitet wurden.
For Each DR_PR_JB As DataRow In DT_PROFIL_JOB.Rows
clsLogger.AddDetailLog("Now again working on profile-type: " & DR_PR_JB.Item("JOB_TYP") & " - ID: " & DR_PR_JB.Item("GUID"))
Logger.Info("Now again working on profile-type: " & DR_PR_JB.Item("JOB_TYP") & " - ID: " & DR_PR_JB.Item("GUID"))
Select Case DR_PR_JB.Item("JOB_TYP").ToString.ToUpper
Case "Concat Files to one pdf".ToUpper
clsLogger.AddDetailLog("Case Concat Files to one pdf....")
Logger.Info("Case Concat Files to one pdf....")
Dim pdftk = clsCURRENT.DT_TBWMRH_KONFIGURATION.Rows(0).Item("PDF_TK_LOCATION")
clsLogger.AddDetailLog("pdftk location: " & pdftk)
Logger.Info("pdftk location: " & pdftk)
clsCURRENT.CONCATTED_FILE = DR_PR_JB.Item("STRING1")
clsLogger.AddDetailLog("CONCATTED_FILE location: " & ClassWMResulthandler.clsCURRENT.CONCATTED_FILE)
Logger.Info("CONCATTED_FILE location: " & clsCURRENT.CONCATTED_FILE)
Dim deleteJaNein = DR_PR_JB.Item("STRING2").ToString.ToUpper
clsLogger.AddDetailLog("deleteJaNein: " & deleteJaNein.ToString)
Logger.Info("deleteJaNein: " & deleteJaNein.ToString)
If File.Exists(pdftk) Then
If File.Exists(ClassWMResulthandler.clsCURRENT.CONCATTED_FILE) Then
If File.Exists(clsCURRENT.CONCATTED_FILE) Then
Try
File.Delete(ClassWMResulthandler.clsCURRENT.CONCATTED_FILE)
File.Delete(clsCURRENT.CONCATTED_FILE)
Catch ex As Exception
End Try
@@ -394,7 +403,7 @@ Public Class clsProfil
Dim _argument As String
Dim i As Integer
For Each str As String In ClassWMResulthandler.clsCURRENT.ARR_Exported_Files
For Each str As String In clsCURRENT.PROFILE_HandledFiles
If i = 0 Then
_argument = """" & str & """"
Else
@@ -402,16 +411,16 @@ Public Class clsProfil
End If
i += 1
Next
If File.Exists(ClassWMResulthandler.clsCURRENT.CONCATTED_FILE) Then
If File.Exists(clsCURRENT.CONCATTED_FILE) Then
Try
File.Delete(ClassWMResulthandler.clsCURRENT.CONCATTED_FILE)
File.Delete(clsCURRENT.CONCATTED_FILE)
Catch ex As Exception
End Try
End If
myProcess.StartInfo.Arguments = _argument & " cat output " & ClassWMResulthandler.clsCURRENT.CONCATTED_FILE
clsLogger.AddDetailLog("Arguments: " & _argument & " cat output " & ClassWMResulthandler.clsCURRENT.CONCATTED_FILE)
myProcess.StartInfo.Arguments = _argument & " cat output " & clsCURRENT.CONCATTED_FILE
Logger.Info("Arguments: " & _argument & " cat output " & clsCURRENT.CONCATTED_FILE)
myProcess.Start()
ProcID = myProcess.Id
@@ -424,50 +433,50 @@ Public Class clsProfil
Do While p.HasExited = False
If sw.Elapsed.TotalSeconds = 30 Then
clsLogger.AddDetailLog("Still waiting (30 sec) for ending of process-id: " & ProcID.ToString)
Logger.Info("Still waiting (30 sec) for ending of process-id: " & ProcID.ToString)
ElseIf sw.Elapsed.TotalMinutes = 1 Then
clsLogger.AddDetailLog("Still waiting (60 sec) for ending of process-id: " & ProcID.ToString & " - Exit now")
Logger.Info("Still waiting (60 sec) for ending of process-id: " & ProcID.ToString & " - Exit now")
Exit Do
End If
Loop
clsLogger.AddDetailLog("...process has exited: ")
Logger.Info("...process has exited: ")
sw.Stop()
clsLogger.AddDetailLog("Waiting for file: " & ClassWMResulthandler.clsCURRENT.CONCATTED_FILE)
Do While File.Exists(ClassWMResulthandler.clsCURRENT.CONCATTED_FILE) = False
Logger.Info("Waiting for file: " & clsCURRENT.CONCATTED_FILE)
Do While File.Exists(clsCURRENT.CONCATTED_FILE) = False
Console.WriteLine("...not existing!")
Loop
If deleteJaNein = "JA" Then
For Each str As String In ClassWMResulthandler.clsCURRENT.ARR_Exported_Files
For Each str As String In clsCURRENT.PROFILE_HandledFiles
Try
File.Delete(str)
Catch ex As Exception
clsLogger.AddError("Unexpected error in deleting ARR_Exported_Files files: " & ex.Message, "clsProfil.Profil_Durchlauf(Concat Files to one pdf)")
Logger.Error(ex)
End Try
Next
End If
clsLogger.WriteLog()
Catch ex As Exception
clsLogger.AddError("Unexpected error: " & ex.Message, "clsProfil.Profil_Durchlauf(Concat Files to one pdf)")
Logger.Error(ex) '("Unexpected error: " & ex.Message, "clsProfil.Profil_Durchlauf(Concat Files to one pdf)")
End Try
Else
clsLogger.AddError("pdftk is not existing", "clsProfil.Profil_Durchlauf(Concat Files to one pdf)")
Logger.Warn("pdftk is not existing")
End If
Case "Send concatted file via mail".ToUpper
clsLogger.AddDetailLog("CASE Send concatted file via mail.... ")
If File.Exists(ClassWMResulthandler.clsCURRENT.CONCATTED_FILE) = True Then
Logger.Info("CASE Send concatted file via mail.... ")
If File.Exists(clsCURRENT.CONCATTED_FILE) = True Then
Dim Email_Empfänger = DR_PR_JB.Item("STRING1")
clsLogger.AddDetailLog("Email_Empfänger: " & Email_Empfänger)
Logger.Info("Email_Empfänger: " & Email_Empfänger)
Dim Email_Betreff = DR_PR_JB.Item("STRING2")
clsLogger.AddDetailLog("Email_Betreff: " & Email_Betreff)
Logger.Info("Email_Betreff: " & Email_Betreff)
Dim Email_Body = DR_PR_JB.Item("STRING3")
clsLogger.AddDetailLog("Email_Body: " & Email_Body)
Logger.Info("Email_Body: " & Email_Body)
Dim EMAIL_PROFIL = DR_PR_JB.Item("STRING4")
clsLogger.AddDetailLog("EMAIL_PROFIL: " & EMAIL_PROFIL)
If Not IsNothing(ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL) And ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows.Count >= 1 Then
Logger.Info("EMAIL_PROFIL: " & EMAIL_PROFIL)
If Not IsNothing(clsCURRENT.DT_TBDD_EMAIL) And clsCURRENT.DT_TBDD_EMAIL.Rows.Count >= 1 Then
Dim MAILFROM As String = ""
Dim MAILSMTP As String = ""
Dim MAIL_USER As String = ""
@@ -475,7 +484,7 @@ Public Class clsProfil
Dim MAIL_SSL As Boolean = False
Dim MAIL_PORT As Integer
For Each emailrow As DataRow In ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows
For Each emailrow As DataRow In clsCURRENT.DT_TBDD_EMAIL.Rows
If emailrow.Item("GUID") = CInt(EMAIL_PROFIL) Then
MAILFROM = emailrow.Item("EMAIL_FROM")
MAILSMTP = emailrow.Item("EMAIL_SMTP")
@@ -493,58 +502,52 @@ Public Class clsProfil
If PWPlain <> "" Then
MAIL_USER_PW = PWPlain
Else
clsLogger.AddError("PWPlain is string.empty - Could not decrypt passwort", "clsProfil.Profil_Durchlauf(wrapper.DecryptData(MAIL_USER_PW))")
clsLogger.WriteLog()
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort")
Return False
End If
Else
clsLogger.AddError("PWPlain is nothing - Could not decrypt passwort", "clsProfil.Profil_Durchlauf(wrapper.DecryptData(MAIL_USER_PW))")
clsLogger.WriteLog()
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort1")
Return False
End If
clsEmail.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_SSL, ClassWMResulthandler.clsCURRENT.CONCATTED_FILE)
clsEmail.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_SSL, clsCURRENT.CONCATTED_FILE)
Else
clsLogger.AddError("DT_TBDD_EMAIL is nothing or contains no rows", "clsProfil.Profil_Durchlauf(end concatted file via mail)")
clsLogger.WriteLog()
Logger.Warn("DT_TBDD_EMAIL is nothing or contains no rows")
Return False
End If
Else
clsLogger.AddError("File not existing: " & ClassWMResulthandler.clsCURRENT.CONCATTED_FILE, "clsProfil.Profil_Durchlauf(Send concatted file via mail)")
Logger.Warn("File not existing: " & clsCURRENT.CONCATTED_FILE)
End If
End Select
Next
clsLogger.WriteLog()
Else
clsLogger.Add(">> Initialisierung Profil nicht erfolgreich", True)
clsLogger.WriteLog()
Logger.Warn("Initialisierung Profil nicht erfolgreich")
End If
Else
clsLogger.Add(">> KEINE JOBS für Profil '" & _Profilname & "' angelegt!", False, "clsProfil.Profil_Durchlauf")
clsLogger.WriteLog()
Logger.Warn("KEINE JOBS für Profil '" & _Profilname & "' angelegt!")
End If
Else
' keine Dateien zum Importieren
clsLogger.Add(">> Keine windream-Dokumente für Profil '" & _Profilname & "' vorhanden/gefunden.", False)
clsLogger.Add("", False)
clsLogger.WriteLog()
Logger.Warn("Keine windream-Dokumente für Profil '" & _Profilname & "' vorhanden/gefunden.")
End If
End If
End If
Else
clsLogger.AddDetailLog("Verarbeitung für heute NICHT konfiguriert")
clsLogger.WriteLog()
Logger.Info("Verarbeitung für heute NICHT konfiguriert")
End If
'Abschluss des Profiles
clsDatatabase.Execute_non_Query("UPDATE TBWMRH_PROFIL SET Running = 0, LETZTER_DURCHLAUF = GETDATE() WHERE GUID = " & _profGUID)
clsLogger.AddDetailLog("'UPDATE TBWMRH_PROFIL SET Running = 0' ausgeführt")
clsLogger.WriteLog()
Logger.Info("'UPDATE TBWMRH_PROFIL SET Running = 0' ausgeführt")
Return True
'Catch ex As Exception
' clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf")
@@ -586,7 +589,7 @@ Public Class clsProfil
End If
Next
Else
clsLogger.AddDetailLog("Duplikatprüfung soll durchgeführt werden.")
Logger.Info("Duplikatprüfung soll durchgeführt werden.")
'Duplikat Prüfung an, also nur anhängen wenn Wert <>
For Each WDValue As Object In wertWD
If WDValue Is Nothing = False Then
@@ -594,7 +597,7 @@ Public Class clsProfil
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = WDValue.ToString
clsLogger.AddDetailLog("Value (" & Anzahl & ") " & WDValue.ToString)
Logger.Info("Value (" & Anzahl & ") " & WDValue.ToString)
Anzahl += 1
End If
Next
@@ -602,21 +605,21 @@ Public Class clsProfil
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
If ValueArray.Contains(NewValue) = False Then
clsLogger.AddDetailLog("New Value (" & Anzahl & ") " & NewValue.ToString)
Logger.Info("New Value (" & Anzahl & ") " & NewValue.ToString)
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
Anzahl += 1
Else
clsLogger.AddDetailLog("Value '" & NewValue.ToString & "' bereits in Vektorfeld enthalten")
Logger.Info("Value '" & NewValue.ToString & "' bereits in Vektorfeld enthalten")
End If
End If
Next
End If
End If
Else
clsLogger.AddDetailLog("Vektorfeld ist noch leer....")
Logger.Info("Vektorfeld ist noch leer....")
'Den/die Neuen Wert(e) anfügen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
@@ -629,7 +632,7 @@ Public Class clsProfil
ValueArray(Anzahl) = NewValue.ToString
Anzahl += 1
Else
clsLogger.AddDetailLog("Value '" & NewValue.ToString & "' bereits in Array enthalten")
Logger.Info("Value '" & NewValue.ToString & "' bereits in Array enthalten")
End If
Else 'Dererste Wert, also hinzufügen
'Das Array anpassen
@@ -651,10 +654,10 @@ Public Class clsProfil
Next
End If
clsLogger.AddDetailLog("Return ValueArray: length " & ValueArray.Length)
Logger.Info("Return ValueArray: length " & ValueArray.Length)
Return ValueArray
Catch ex As Exception
clsLogger.AddError(ex.Message, "Return_VektorArray")
Logger.Error(ex)
Return Nothing
End Try
End Function

View File

@@ -10,7 +10,7 @@ Imports WMOSRCHLib
Imports System.IO
Public Class clsWindream_allgemein
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
#Region "+++++ Konstanten +++++"
Const DEBUG = AUS
Const AUS = 0
@@ -26,7 +26,6 @@ Public Class clsWindream_allgemein
Private Shared oController As New WMOSearchController
#End Region
#Region "+++++ Allgemeine Methoden und Funktionen +++++"
''' <summary>
@@ -37,7 +36,7 @@ Public Class clsWindream_allgemein
' wenn ein Fehler bei der Initialisierung auftrat
If Not Init() Then
' Nachricht ausgeben
clsLogger.Add("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", True, "clsWindream_allgemein.Init")
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")
' das Programm "abschießen"
Process.GetCurrentProcess.Kill()
End If
@@ -72,7 +71,7 @@ Public Class clsWindream_allgemein
' setzt die minimal erwartete windream-Version
oConnect.MinReqVersion = "3"
' clsLogger.AddDetailLog("Personifizierung'")
' Logger.Info("Personifizierung'")
' -- Impersonifizierung nur möglich mit registry-eintrag --
'oConnect.UserName = "\digitaldata\SchreiberM"
@@ -80,11 +79,11 @@ Public Class clsWindream_allgemein
' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen
oConnect.LoginSession(oSession)
clsLogger.AddDetailLog("windream-Server: '" & GetCurrentServer() & "'")
clsLogger.AddDetailLog("windream-UserName: '" & oConnect.UserName & "'")
Logger.Info("windream-Server: '" & GetCurrentServer() & "'")
Logger.Info("windream-UserName: '" & oConnect.UserName & "'")
If oSession.aLoggedin = False Then
clsLogger.Add("Es konnte keine Verbindung mit dem windream-Server hergestellt werden", True, "clswindream.Init")
Logger.Warn("Es konnte keine Verbindung mit dem windream-Server hergestellt werden")
Return False
End If
@@ -109,20 +108,22 @@ Public Class clsWindream_allgemein
' Ordnertypen ausgelesen werden
oDokumentTypen = oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
Catch ex As Exception
clsLogger.AddError("Problem beim Auslesen der Objekttypen", "clswindream.Init")
Logger.Warn("Problem beim Auslesen der Objekttypen: " & ex.Message)
Return False
End Try
End If
clsLogger.AddDetailLog("Alles OK - Erfolgreich angemeldet und Session aufgebaut")
Logger.Info("Alles OK - Erfolgreich angemeldet und Session aufgebaut")
Return True
Catch ex As Exception
If Err.Number = -2147220985 Then
clsLogger.AddError("Die installierte windream-Version ist nicht ausreichend für den Betrieb", "clswindream.Init")
Else
clsLogger.AddError("Fehler beim Login an windream: " & ex.Message, "clswindream.Init")
End If
Logger.Error(ex)
'If Err.Number = -2147220985 Then
' clsLogger.AddError("Die installierte windream-Version ist nicht ausreichend für den Betrieb", "clswindream.Init")
'Else
' clsLogger.AddError("Fehler beim Login an windream: " & ex.Message, "clswindream.Init")
'End If
Return False
End Try
@@ -145,7 +146,8 @@ Public Class clsWindream_allgemein
Return oDokumentTypen
Catch ex As Exception
clsLogger.AddError("Fehler beim Auslesen der Objekttypen: " & ex.Message, "clswindream.GetObjecttypesAsObjects")
Logger.Warn("Fehler beim Auslesen der Objekttypen: " & ex.Message)
'clsLogger.AddError("Fehler beim Auslesen der Objekttypen: " & ex.Message, "clswindream.GetObjecttypesAsObjects")
Return Nothing
End Try
End Function
@@ -167,7 +169,8 @@ Public Class clsWindream_allgemein
Return objektTypenStr
Catch ex As Exception
clsLogger.AddError("Fehler beim Auslesen der Objekttypen als String: " & ex.Message, "clswindream.GetObjecttypesAsStrings")
Logger.Error(ex)
'
Return Nothing
End Try
@@ -216,7 +219,8 @@ Public Class clsWindream_allgemein
Return aIndexNames
Catch ex As Exception
clsLogger.AddError("Fehler beim Auslesen der windream-Indexe: " & ex.Message, "clswindream.GetIndicesByObjecttype")
Logger.Error(ex)
Return Nothing
End Try
End Function
@@ -241,7 +245,8 @@ Public Class clsWindream_allgemein
Return Nothing
Catch ex As Exception
clsLogger.AddError("Ein Objekttyp kopnnte nicht erstellt werden. Fehler: " & ex.Message, "clswindream.GetObjecttypeByName")
Logger.Error(ex)
Return Nothing
End Try
End Function
@@ -264,7 +269,8 @@ Public Class clsWindream_allgemein
Next
Catch ex As Exception
clsLogger.AddError("Beim Prüfen ob ein Index für einen Objekttypen existiert, ist ein Fehler aufgetreten. Fehler: " & ex.Message, "clswindream.ExistIndexInObjekttyp")
Logger.Error(ex)
Return False
End Try
End Function
@@ -282,7 +288,7 @@ Public Class clsWindream_allgemein
Try
Return oSession.aLoggedin
Catch ex As Exception
clsLogger.AddError("Es konnte nicht erfolgreich geprüft werden, ob das Programm am windream-Server angemeldet ist. Fehler: " & ex.Message, "clswindream.IsLoggedIn")
Logger.Error(ex)
End Try
Return False
@@ -295,10 +301,10 @@ Public Class clsWindream_allgemein
''' <remarks></remarks>
Public Shared Function GetCurrentServer() As String
Try
clsLogger.AddDetailLog(oBrowser.GetCurrentServer.ToString)
Logger.Info(oBrowser.GetCurrentServer.ToString)
Return oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer
Catch ex As Exception
clsLogger.AddError("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden. Fehler: " & ex.Message, "clswindream.GetCurrentServer")
Logger.Error(ex)
End Try
Return ""
@@ -378,12 +384,12 @@ Public Class clsWindream_allgemein
Next
Return strListe
Else
clsLogger.Add("Auswahlliste: " & indexname & " nicht gefunden.", True, "clswindream.GetValuesfromAuswahlliste")
Logger.Warn("Auswahlliste: " & indexname & " nicht gefunden.")
Return Nothing
End If
Catch ex As Exception
clsLogger.AddError("Fehler: " & ex.Message, "clswindream.GetValuesfromAuswahlliste")
Logger.Error(ex)
Return Nothing
End Try
End Function
@@ -394,13 +400,13 @@ Public Class clsWindream_allgemein
If WDObject Is Nothing Then
Return False
Else
clsLogger.AddDetailLog("WDObject exists")
Logger.Info("WDObject exists")
Return True
End If
Catch ex As Exception
' bei einem Fehler einen Eintrag in der Logdatei machen
clsLogger.AddError("Es konnte kein windream-Object erzeugt werden - " & ex.Message, "clswindream.WDObject_exists")
Logger.Error(ex)
Return False
End Try
End Function
@@ -409,12 +415,12 @@ Public Class clsWindream_allgemein
Try
Dim SearchName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1)
Dim SearchPath = wdfLocation.Substring(0, wdfLocation.Length - SearchName.Length)
clsLogger.Add("WMSearch: " & wdfLocation.ToLower, False)
Logger.Warn("WMSearch: " & wdfLocation.ToLower)
If System.IO.File.Exists(wdfLocation.ToLower) Then
clsLogger.AddDetailLog("Search exists")
Logger.Info("Search exists")
End If
oController.CheckSearchProfile(wdfLocation.ToLower) 'wdfLocation.ToLower)
clsLogger.AddDetailLog("oController erzeugt")
Logger.Info("oController erzeugt")
Dim suchTyp = oController.SearchProfileTargetProgID
Dim ExSettings As Object
Dim oSearch As Object
@@ -424,8 +430,8 @@ Public Class clsWindream_allgemein
Dim srchQuick As WMOSRCHLib.WMQuickSearch = CreateObject("WMOSrch.WMQuickSearch")
Dim srchIndex As WMOSRCHLib.WMIndexSearch = CreateObject("WMOSrch.WMIndexSearch")
Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch")
clsLogger.AddDetailLog("WD Objekte in GetSearchDocuments erzeugt")
clsLogger.AddDetailLog(suchTyp.ToString.ToUpper)
Logger.Info("WD Objekte in GetSearchDocuments erzeugt")
Logger.Info(suchTyp.ToString.ToUpper)
'' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments()
Select Case suchTyp.ToString.ToUpper
Case "WMOSRCH.WMQUICKSEARCH"
@@ -438,15 +444,15 @@ Public Class clsWindream_allgemein
Case "WMOSRCH.WMINDEXSEARCH"
srchIndex.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
clsLogger.AddDetailLog("Session created...")
Logger.Info("Session created...")
oConnect.LoginSession(srchIndex.WMSession)
clsLogger.AddDetailLog("LoginSession...")
Logger.Info("LoginSession...")
srchIndex.SearchProfilePath = SearchPath
clsLogger.AddDetailLog("SearchPath...")
Logger.Info("SearchPath...")
srchIndex.LoadSearchProfile(SearchName)
clsLogger.AddDetailLog("LoadSearchProfile...")
Logger.Info("LoadSearchProfile...")
oSearch = srchIndex.GetSearch()
clsLogger.AddDetailLog("GetSearch...")
Logger.Info("GetSearch...")
Case "WMOSRCH.WMOBJECTTYPESEARCH"
srchObjectType.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchObjectType.WMSession)
@@ -456,18 +462,17 @@ Public Class clsWindream_allgemein
oSearch = srchObjectType.GetSearch()
Case Else
clsLogger.Add("KEIN GÜLTIGER WINDREAM-SUCHTYP", True, "clswindream.GetSearchDocuments")
Logger.Warn("KEIN GÜLTIGER WINDREAM-SUCHTYP")
Return Nothing
End Select
Dim WMObjects As Object
WMObjects = oSearch.Execute
clsLogger.AddDetailLog("WD Objekte werden zurückgegeben")
Logger.Info("WD Objekte werden zurückgegeben")
Return oSearch.execute
Catch ex As Exception
' bei einem Fehler einen Eintrag in der Logdatei machen
clsLogger.AddError(ex.Message, "clswindream.GetSearchDocuments")
Logger.Error(ex)
Return Nothing
End Try

View File

@@ -2,7 +2,7 @@
Imports WMOSRCHLib
Public Class clsWindream_Index
Inherits clsWindream_allgemein
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
#Region "+++++ Konstanten +++++"
Protected Const WMObjectEditModeObject = &H1F
Protected Const WMObjectStreamOpenModeReadWrite = 2
@@ -119,39 +119,39 @@ Public Class clsWindream_Index
oDocument.lock()
If aValues.Length = 1 And aValues(0) = "" Then
clsLogger.Add(" >> RunIndexing_Vektor: Indexwert ist leer/Nothing - Keine Nachindexierung", False)
Logger.Warn("RunIndexing_Vektor: Indexwert ist leer/Nothing - Keine Nachindexierung")
Else
'Jetzt jeden Indexwert durchlaufen
Dim indexname As String
indexname = Indizes(0)
clsLogger.AddDetailLog("RunIndexing_Vektor: Indexname: " & indexname)
Logger.Info("RunIndexing_Vektor: Indexname: " & indexname)
'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST
clsLogger.AddDetailLog("RunIndexing_Vektor: VEKTORFELD-Indexierung: Vorbereiten des Arrays")
Logger.Info("RunIndexing_Vektor: VEKTORFELD-Indexierung: Vorbereiten des Arrays")
' das entsprechende Attribut aus windream auslesen
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
' den Variablentyp (String, Integer, ...) auslesen
Dim vType = oAttribute.getVariableValue("dwAttrType")
Select Case (vType)
Case 4097
clsLogger.AddDetailLog("Typ des windream-Indexes: 4097 Vektor alphanumerisch")
Logger.Info("Typ des windream-Indexes: 4097 Vektor alphanumerisch")
Case 4098
clsLogger.AddDetailLog("Typ des windream-Indexes: 4098 Vektor Numerisch")
Logger.Info("Typ des windream-Indexes: 4098 Vektor Numerisch")
Case 4099
clsLogger.AddDetailLog("Typ des windream-Indexes: 4099 Vektor Kommazahl")
Logger.Info("Typ des windream-Indexes: 4099 Vektor Kommazahl")
Case 4101
clsLogger.AddDetailLog("Typ des windream-Indexes: 4101 Vektor Date")
Logger.Info("Typ des windream-Indexes: 4101 Vektor Date")
Case 4103
clsLogger.AddDetailLog("Typ des windream-Indexes: 4103 Vektor DateTime")
Logger.Info("Typ des windream-Indexes: 4103 Vektor DateTime")
Case 4107
clsLogger.AddDetailLog("Typ des windream-Indexes: 4107 Vektor Integer(64bit)")
Logger.Info("Typ des windream-Indexes: 4107 Vektor Integer(64bit)")
Case 36865
clsLogger.AddDetailLog("Typ des windream-Indexes: 36865 Vektor alphanumerisch")
Logger.Info("Typ des windream-Indexes: 36865 Vektor alphanumerisch")
End Select
Dim myArray
Dim Anzahl As Integer = aValues.Length - 1
'Vektorfeld wird mit EINEM Wert gefüllt
If Anzahl = 0 Then
clsLogger.AddDetailLog("RunIndexing_Vektor: Vektorfeld wird mit EINEM Wert gefüllt ")
Logger.Info("RunIndexing_Vektor: Vektorfeld wird mit EINEM Wert gefüllt ")
ReDim myArray(0)
Select Case (vType)
Case 4097
@@ -172,9 +172,9 @@ Public Class clsWindream_Index
Case 36865
myArray(0) = CStr(aValues(0))
End Select
clsLogger.AddDetailLog("RunIndexing_Vektor: Konvertierter Wert: " & myArray(0).ToString)
Logger.Info("RunIndexing_Vektor: Konvertierter Wert: " & myArray(0).ToString)
Else
clsLogger.AddDetailLog("RunIndexing_Vektor: Vektorfeld wird mit MEHREREN Werten gefüllt ")
Logger.Info("RunIndexing_Vektor: Vektorfeld wird mit MEHREREN Werten gefüllt ")
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl)
Dim i1 As Integer = 0
@@ -193,7 +193,7 @@ Public Class clsWindream_Index
Try
convertValue = CInt(wert)
Catch ex As Exception
clsLogger.AddDetailLog("Wert muss in Int64 konvertiert werden")
Logger.Info("Wert muss in Int64 konvertiert werden")
convertValue = Convert.ToInt64(wert) 'ToInt64
End Try
Else
@@ -218,20 +218,21 @@ Public Class clsWindream_Index
End If
'Jetzt die Nachindexierung für Vektor-Felder
oDocument.SetVariableValue(indexname, myArray)
clsLogger.AddDetailLog("RunIndexing_Vektor: 'SetVariableValue' für VEKTOR erfolgreich")
Logger.Info("RunIndexing_Vektor: 'SetVariableValue' für VEKTOR erfolgreich")
oDocument.Save()
oDocument.unlock()
clsLogger.AddDetailLog("RunIndexing_Vektor: Indexierung erfolgreich beendet (Save und Unlock durchgeführt)")
Logger.Info("RunIndexing_Vektor: Indexierung erfolgreich beendet (Save und Unlock durchgeführt)")
Return True
End If
Else
clsLogger.Add(" >> RunIndexing_Vektor: Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!", True)
Logger.Warn("RunIndexing_Vektor: Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!")
Return False
End If
End If
Catch ex As Exception
clsLogger.AddError("## Fehler in RunIndexing_Vektor - Fehler: " & ex.Message, "RunIndexingVektor")
Logger.Error(ex)
'clsLogger.AddError("## Fehler in RunIndexing_Vektor - Fehler: " & ex.Message, "RunIndexingVektor")
oDocument.Save()
oDocument.unlock()
Return False
@@ -247,16 +248,16 @@ Public Class clsWindream_Index
Dim i As Integer = 0
Dim indexname As String
If aValues.Length = 1 And aValues(0) = "" Then
clsLogger.AddDetailLog("Indexwert ist leer/Nothing - Keine Indexierung")
Logger.Info("Indexwert ist leer/Nothing - Keine Indexierung")
End If
' wenn der Datei noch kein Dokumenttyp zugewiesen wurde
If oDocument.aObjectType.aName <> Objekttyp Then
' ihr den entsprechenden Dokumenttyp zuweisen
oDocument.aObjectType = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, Objekttyp)
' WMObject.aObjectType = selectedProfile.Dokumenttyp
clsLogger.AddDetailLog("Objekttyp war Standard und wurde in '" & Objekttyp & "' geändert.")
Logger.Info("Objekttyp war Standard und wurde in '" & Objekttyp & "' geändert.")
Else
clsLogger.AddDetailLog("Objekttyp war bereits gesetzt")
Logger.Info("Objekttyp war bereits gesetzt")
End If
Try
@@ -283,7 +284,7 @@ Public Class clsWindream_Index
'If indexname = "Tournr" Then
' MsgBox("Index: " & indexname & vbNewLine & "wert: " & aValues(i), MsgBoxStyle.Information, "Index: " & aName.ToString)
'End If
clsLogger.AddDetailLog("Indexierung von Index '" & indexname & "'")
Logger.Info("Indexierung von Index '" & indexname & "'")
'MsgBox(oDocument.aName & vbNewLine & aValues(i) & vbNewLine & vType, MsgBoxStyle.Exclamation, "Zeile 87")
Dim value = aValues(i)
Dim convertValue
@@ -293,46 +294,46 @@ Public Class clsWindream_Index
Select Case (vType)
'Case WMObjectVariableValueTypeUndefined
Case WMObjectVariableValueTypeString
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeString")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeString")
convertValue = CStr(value)
Case WMObjectVariableValueTypeInteger
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeInteger")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeInteger")
value = value.ToString.Replace(" ", "")
If IsNumeric(value) = False Then
clsLogger.AddDetailLog("Achtung: Value '" & value & "' kann nicht in Zahl konvertiert werden!")
Logger.Info("Achtung: Value '" & value & "' kann nicht in Zahl konvertiert werden!")
End If
value = value.ToString.Replace(" ", "")
convertValue = CInt(value)
_int = True
Case WMObjectVariableValueTypeFloat
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
value = value.ToString.Replace(" ", "")
convertValue = CDbl(value)
Case WMObjectVariableValueTypeFixedPoint
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint")
value = value.ToString.Replace(" ", "")
convertValue = CDbl(value)
_dbl = True
Case WMObjectVariableValueTypeBoolean
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeBoolean")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeBoolean")
convertValue = CBool(value)
_bool = True
Case WMObjectVariableValueTypeDate
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeDate")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeDate")
_date = True
'Dim _date As Date = value
convertValue = value
Case WMObjectVariableValueTypeTimeStamp
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp")
convertValue = CDbl(value)
Case WMObjectVariableValueTypeCurrency
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeCurrency")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeCurrency")
'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden
Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(value))
convertValue = aValueWrapper
Case WMObjectVariableValueTypeTime
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeTime")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeTime")
'If ((value)) Then
' convertValue = CDate(value)
'Else
@@ -341,50 +342,50 @@ Public Class clsWindream_Index
'Dim _date As Date = value
convertValue = convertValue '*_date.ToShortTimeString
Case WMObjectVariableValueTypeFloat
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
convertValue = CStr(value)
Case WMObjectVariableValueTypeVariant
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeVariant")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeVariant")
convertValue = CStr(value)
Case WMObjectVariableValueTypeFulltext
clsLogger.AddDetailLog("Typ des windream-Indexes: WMObjectVariableValueTypeFulltext")
Logger.Info("Typ des windream-Indexes: WMObjectVariableValueTypeFulltext")
convertValue = CStr(value)
Case 4097
clsLogger.AddDetailLog("Typ des windream-Indexes: 4097 Vektor alphanumerisch")
Logger.Info("Typ des windream-Indexes: 4097 Vektor alphanumerisch")
'Vektor alphanumerisch
vektor = True
Case 4098
clsLogger.AddDetailLog("Typ des windream-Indexes: 4098 Vektor Numerisch")
Logger.Info("Typ des windream-Indexes: 4098 Vektor Numerisch")
'Vektor Numerisch
vektor = True
Case 4099
clsLogger.AddDetailLog("Typ des windream-Indexes: 4099 Vektor Kommazahl")
Logger.Info("Typ des windream-Indexes: 4099 Vektor Kommazahl")
'Vektor Kommazahl
vektor = True
Case 4101
clsLogger.AddDetailLog("Typ des windream-Indexes: 4101 Vektor Date")
Logger.Info("Typ des windream-Indexes: 4101 Vektor Date")
'Vektor Kommazahl
vektor = True
Case 4103
clsLogger.AddDetailLog("Typ des windream-Indexes: 4103 Vektor DateTime")
Logger.Info("Typ des windream-Indexes: 4103 Vektor DateTime")
'Vektor DateTime
vektor = True
Case 4107
clsLogger.AddDetailLog("Typ des windream-Indexes: 4107 Integer 64bit")
Logger.Info("Typ des windream-Indexes: 4107 Integer 64bit")
vektor = True
Case 36865
clsLogger.AddDetailLog("Typ des windream-Indexes: 36865 Vektor alphanumerisch")
Logger.Info("Typ des windream-Indexes: 36865 Vektor alphanumerisch")
'Vektor Kommazahl
vektor = True
Case Else
clsLogger.AddDetailLog("Typ des windream-Indexes konnte nicht bestimmt werden!")
clsLogger.AddDetailLog("Versuch des Auslesens (vType): " & vType)
Logger.Info("Typ des windream-Indexes konnte nicht bestimmt werden!")
Logger.Info("Versuch des Auslesens (vType): " & vType)
'MsgBox(vType & vbNewLine & CStr(value), MsgBoxStyle.Exclamation, "Marlon-Case Else")
convertValue = ""
End Select
If vektor = False Then
If convertValue.ToString Is Nothing = False Then
clsLogger.AddDetailLog("Konvertierter Wert: '" & convertValue.ToString & "'")
Logger.Info("Konvertierter Wert: '" & convertValue.ToString & "'")
End If
End If
'############################################################################################
@@ -392,7 +393,7 @@ Public Class clsWindream_Index
'############################################################################################
If vektor = False Then
If convertValue.ToString Is Nothing = False Then
clsLogger.AddDetailLog("Versuch dem Dok einen Index zuzuweisen: oDocument.SetVariableValue(" & aName & ", " & convertValue & ")")
Logger.Info("Versuch dem Dok einen Index zuzuweisen: oDocument.SetVariableValue(" & aName & ", " & convertValue & ")")
If _int = True Then
convertValue = convertValue.ToString.Replace(" ", "")
oDocument.SetVariableValue(aName, CInt(convertValue))
@@ -406,15 +407,13 @@ Public Class clsWindream_Index
Else
oDocument.SetVariableValue(aName, convertValue)
End If
clsLogger.Add(" >> Index '" & aName & "' wurde geschrieben", False)
clsLogger.Add("", False)
Logger.Info("Index '" & aName & "' wurde geschrieben")
Else
clsLogger.Add(" >> Kein Indexwert vorhanden", False)
Logger.Warn("Kein Indexwert vorhanden")
End If
Else
'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST
clsLogger.AddDetailLog("VEKTORFELD: Vorbereiten des Arrays")
Logger.Info("VEKTORFELD: Vorbereiten des Arrays")
Dim myArray()
'Dim DS As DataSet
@@ -440,7 +439,7 @@ Public Class clsWindream_Index
Dim Anzahl As Integer = aValues.Length
'Vektorfeld wird mit EINEM Wert gefüllt
If Anzahl = 1 Then
clsLogger.AddDetailLog("Vektorfeld wird mit EINEM Wert gefüllt ")
Logger.Info("Vektorfeld wird mit EINEM Wert gefüllt ")
ReDim myArray(0)
Select Case vType
Case 36865
@@ -470,9 +469,9 @@ Public Class clsWindream_Index
'Umwandeln in String
myArray(0) = CStr(value)
End Select
clsLogger.AddDetailLog("Konvertierter Wert: " & myArray(0).ToString)
Logger.Info("Konvertierter Wert: " & myArray(0).ToString)
Else
clsLogger.AddDetailLog("Vektorfeld wird mit MEHREREN Werten gefüllt ")
Logger.Info("Vektorfeld wird mit MEHREREN Werten gefüllt ")
Select Case vType
Case 36865
'Vektortyp ALPHANUMERISCH
@@ -482,12 +481,12 @@ Public Class clsWindream_Index
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
clsLogger.AddDetailLog("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
Logger.Info("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
clsLogger.AddDetailLog("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
Logger.Info("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4097
@@ -498,7 +497,7 @@ Public Class clsWindream_Index
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
clsLogger.AddDetailLog("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
Logger.Info("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4107
@@ -518,7 +517,7 @@ Public Class clsWindream_Index
For Each NewValue As Object In aValues
Dim v As String = NewValue.ToString.Replace(" ", "")
myArray(i1) = CInt(v)
clsLogger.AddDetailLog("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
Logger.Info("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4099
@@ -531,7 +530,7 @@ Public Class clsWindream_Index
Dim Str As String = NewValue
Str = Str.ToString.Replace(" ", "")
myArray(i1) = CDbl(Str.Replace(".", ","))
clsLogger.AddDetailLog("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
Logger.Info("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4101
@@ -543,7 +542,7 @@ Public Class clsWindream_Index
For Each NewValue As Object In aValues
Dim Str As String = NewValue.ToString
myArray(i1) = CDate(Str.Replace(".", ","))
clsLogger.AddDetailLog("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
Logger.Info("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
@@ -555,17 +554,17 @@ Public Class clsWindream_Index
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
clsLogger.AddDetailLog("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
Logger.Info("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
End Select
End If
'Jetzt die Nachindexierung für Vektor-Felder
oDocument.SetVariableValue(aName, myArray)
clsLogger.AddDetailLog("'SetVariableValue' für VEKTOR erfolgreich")
Logger.Info("'SetVariableValue' für VEKTOR erfolgreich")
End If
Else
clsLogger.AddDetailLog("Array der Indexwerte ist leer/Nothing - Keine Nachindexierung")
Logger.Info("Array der Indexwerte ist leer/Nothing - Keine Nachindexierung")
End If
i += 1
@@ -577,19 +576,20 @@ Public Class clsWindream_Index
oDocument.Save()
oDocument.unlock()
clsLogger.AddDetailLog("Indexierung erfolgreich beendet (Save und Unlock durchgeführt)")
clsLogger.AddDetailLog("")
Logger.Info("Indexierung erfolgreich beendet (Save und Unlock durchgeführt)")
Logger.Info("")
Return False
Else
clsLogger.Add(" >> Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!", False)
Logger.Warn("Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!")
'oDocument.unlock()
Return True
End If
End If
Catch ex As Exception
clsLogger.AddError(ex.Message, "ClassSearchResult.RunIndexing")
Logger.Error(ex)
'clsLogger.AddError(ex.Message, "ClassSearchResult.RunIndexing")
oDocument.Save()
oDocument.unlock()
Return True

View File

@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
<package id="NLog" version="4.5.8" targetFramework="net461" />
</packages>