MS Changes Firebird due to wisag

This commit is contained in:
Digital Data - Marlon Schreiber
2018-12-18 23:48:31 +01:00
parent 4e7502e1b6
commit 1198b1004e
314 changed files with 1017502 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
Imports Independentsoft.Email.Mime
Imports WINDREAMLib
Public Class ClassCurrent
Public Shared LOG_ERRORS_ONLY As Boolean = True
Public Shared WM_CON_STRING As String
Public Shared WM_DRIVE As String
Public Shared TIMER_INTERVALL As Integer = 5
Public Shared LOG_INITIALIZED As Boolean = False
Public Shared CURRENT_FILEIN_WD As String
Public Shared CURRENT_IMPORT_ID As Integer
Public Shared CURRENT_EMAIL_GUID As Integer
Public Shared CURRENT_PROFILE_GUID As Integer
Public Shared DTCONFIG As DataTable
Public Shared DT_ECM_BASE_CONFIG As DataTable
Public Shared PATH_TEMP As String
Public Shared PATH_ERROR As String
Public Shared MAIL_BODY_FONT As String = ""
Public Shared MAIL_FROM As String = ""
Public Shared MAIL_SERVER As String = ""
Public Shared MAIL_USER As String = ""
Public Shared MAIL_USER_PW As String = ""
Public Shared MAIL_PORT As Integer = 995
Public Shared DT_POLL_PROCESS As DataTable
Public Shared DT_STEPS As DataTable
Public Shared DT_INDEXING_STEPS As DataTable
Public Shared MAIL_LIST As New ArrayList()
Public Shared CURRENT_MAIL_MESSAGE As Message
Public Shared CURRENT_TEMP_MAIL_PATH As String
Public Shared CURRENT_MAIL_BODY As String
Public Shared CURRENT_MAIL_BODY_Substr1 As String = ""
Public Shared CURRENT_MAIL_BODY_Substr2 As String = ""
Public Shared CURRENT_MAIL_SUBJECT As String = ""
Public Shared CURRENT_MAIL_PROCESS_NAME As String
Public Shared CURRENT_POLL_TYPE As String
Public Shared POLL_STEP_GUID As Integer
Public Shared POLL_STEP_PROCESS_ID As Integer
Public Shared POLL_KEYWORDS As String
Public Shared KEYWORDS_SPLIT As String()
Public Shared WM_REFERENCE_INDEX As String
Public Shared WM_VECTOR_LOG As String
Public Shared WM_OBJEKTTYPE As String
Public Shared WM_IDX_BODY_TEXT As String
Public Shared WM_IDX_BODY_SUBSTR_LENGTH As String
Public Shared CURRENT_WM_DOC As WMObject
Public Shared CURRENT_DOC_ID As Integer
Public Shared CURRENT_DOC_PATH As String
Public Shared MessageError As Boolean = False
Public Shared TEMP_FILES As List(Of String) = New List(Of String)
End Class

View File

@@ -0,0 +1,143 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9F748DCD-952E-40A0-9DAD-65BF8A39B231}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>DigitalData.EMLProfiler</RootNamespace>
<AssemblyName>DigitalData.EMLProfiler</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>DigitalData.EMLProfiler.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>DigitalData.EMLProfiler.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="DigitalData.Modules.Database">
<HintPath>..\..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Logging">
<HintPath>..\..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
</Reference>
<Reference Include="Independentsoft.Email">
<HintPath>P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Email .NET\Bin\Independentsoft.Email.dll</HintPath>
</Reference>
<Reference Include="Interop.WINDREAMLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
<Reference Include="Interop.WMOBRWSLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOBRWSLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Interop.WMOSRCHLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOSRCHLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.CSharp" />
<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="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" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="ClassCurrent.vb" />
<Compile Include="clsDatabase.vb" />
<Compile Include="clsEmail.IMAP.vb" />
<Compile Include="clsEmail.vb" />
<Compile Include="clsEncryption.vb" />
<Compile Include="clsWindream_allgemein.vb" />
<Compile Include="clsWindream_Index.vb" />
<Compile Include="clsWorkEmail.vb" />
<Compile Include="clsWorker.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -0,0 +1,13 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("DigitalData.EMLProfiler")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("DigitalData.EMLProfiler")>
<Assembly: AssemblyCopyright("Copyright © 2018")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("807d6759-5806-4ea9-8f8c-c7099cbd912c")>
' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
'
' Hauptversion
' Nebenversion
' Buildnummer
' Revision
'
' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.1.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
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.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</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()> _
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.
'''</summary>
<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("DigitalData.EMLProfiler.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.
'''</summary>
<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)
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Ä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
Namespace My
<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 "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<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
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.DigitalData.EMLProfiler.My.MySettings
Get
Return Global.DigitalData.EMLProfiler.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles />
<Settings />
</SettingsFile>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<system.diagnostics>
<sources>
<!-- Dieser Abschnitt definiert die Protokollierungskonfiguration für My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben und APPLICATION_NAME durch den Namen der Anwendung ersetzen, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
</configuration>

Binary file not shown.

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<system.diagnostics>
<sources>
<!-- Dieser Abschnitt definiert die Protokollierungskonfiguration für My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben und APPLICATION_NAME durch den Namen der Anwendung ersetzen, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
</configuration>

View File

@@ -0,0 +1,108 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
DigitalData.EMLProfiler
</name>
</assembly>
<members>
<member name="T:DigitalData.EMLProfiler.My.Resources.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:DigitalData.EMLProfiler.My.Resources.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:DigitalData.EMLProfiler.My.Resources.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.#ctor(DigitalData.Modules.Logging.LogConfig)">
<summary>
Konstruktor für die windream-Klasse
</summary>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.Init">
<summary>
Initialisiert die statische Klasse (Login, Session starten, usw.)
</summary>
<returns>Liefert True wenn das Anmelden erfolgreich war, sonst False</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetObjecttypesAsObjects">
<summary>
Liefert alle Objekttypen des aktuellen Servers als windream-Objekte.
</summary>
<returns>Alle Objekttypen als WMObjects-Objekt</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetObjecttypesAsStrings">
<summary>
Liefert alle Objekttypen des aktuellen Servers als Array aus Strings.
</summary>
<returns>Array mit allen Objekttypen als Strings</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetIndicesByObjecttype(System.String)">
<summary>
Liefert alle Indexe eines Objekttypen.
</summary>
<param name="name">Name des Objekttyps</param>
<returns>Array mit allen Objekttyp zugeordneten Indexen als String</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetObjecttypeByName(System.String)">
<summary>
Liefert einen Objekttyp als WMObject an Hand dessen Name.
</summary>
<param name="objekttypName">Name des Objekttyps</param>
<returns>Objekttyp als WMObject</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.ExistIndexInObjekttyp(System.String,System.String)">
<summary>
Überprüft ob der angegebene Index im Objekttyp existiert
</summary>
<param name="objekttyp">Name des zu durchsuchenden Objekttyps</param>
<param name="indexname">Name des zu suchenden Indexes</param>
<returns>Liefert True wenn der Index im Objekttyp existiert, sonst False</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.IsLoggedIn">
<summary>
Liefert True wenn die windream-Session angemeldet ist und False für den Fall, dass die Session nicht eingeloggt ist.
</summary>
<returns>Anmeldestatus als Boolean</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetCurrentServer">
<summary>
Liefert den Servernamen an dem windream aktuell angemeldet ist.
</summary>
<returns>Servername als String</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetTypeOfIndexAsIntByName(System.String)">
<summary>
Liefert den Typen eines Indexes als Integer.
</summary>
<param name="indexname">Name des zu überprüfenden Indexfeldes</param>
<returns>Liefert eine Zahl, die einen Typen beschreibt</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_Index.GetValueforIndex(System.String,System.String)">
Liefert den Wert eines Indexes als String
_indexname = Name des zu überprüfenden Indexfeldes
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_Index.GetValueforIndex_WMFile(WINDREAMLib.WMObject,System.String)">
Liefert den Wert eines Indexes als String
_indexname = Name des zu überprüfenden Indexfeldes
</member>
</members>
</doc>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="EntityFramework.Firebird.FbConnectionFactory, EntityFramework.Firebird" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="FirebirdSql.Data.FirebirdClient" type="EntityFramework.Firebird.FbProviderServices, EntityFramework.Firebird" />
</providers>
</entityFramework>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.3.0.0" newVersion="6.3.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="FirebirdSql.Data.FirebirdClient" />
<add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient" />
</DbProviderFactories>
</system.data></configuration>

View File

@@ -0,0 +1,206 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
DigitalData.Modules.Database
</name>
</assembly>
<members>
<member name="T:DigitalData.Modules.Database.My.Resources.Resources">
<summary>
Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
</summary>
</member>
<member name="P:DigitalData.Modules.Database.My.Resources.Resources.ResourceManager">
<summary>
Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
</summary>
</member>
<member name="P:DigitalData.Modules.Database.My.Resources.Resources.Culture">
<summary>
Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
</summary>
</member>
<member name="T:DigitalData.Modules.Database.Firebird">
<summary>
MODULE: Firebird
VERSION: 0.0.0.4
DATE: 18.12.2018
DESCRIPTION:
DEPENDENCIES: NLog, >= 4.5.10
EntityFramework.Firebird, >= 6.4.0
FirebirdSql.Data.FirebirdClient, >= 6.4.0
PARAMETERS: LogConfig, DigitalData.Modules.Logging.LogConfig
The LogFactory containing the current log config. Used to instanciate the class logger for this and any dependent class
DataSource, String
The server where the database lives, for example 127.0.0.1 or dd-vmx09-vm03
Database, String
The location of the Database in the format `127.0.0.1:E:\Path\To\Database.FDB`
User, String
The user name to connect as
Password, String
The user's password
PROPERTIES: ConnectionEstablished, Boolean
If the last opened connection was successful
ConnectionFailed, Boolean
If the last opened connection failed
ConnectionString, String
The used connectionstring
EXAMPLES:
REMARKS: If the connection fails due to "wrong username or password", the cause might be that the server harddrive is full..
</summary>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.#ctor(DigitalData.Modules.Logging.LogConfig,System.String,System.String,System.String,System.String)">
<summary>
</summary>
<param name="Datasource"></param>
<param name="Database"></param>
<param name="User"></param>
<param name="Password"></param>
<exception cref="T:DigitalData.Modules.Database.Exceptions.DatabaseException"></exception>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.GetConnectionString(System.String,System.String,System.String,System.String)">
<summary>
Builds a connectionstring from the provided arguments.
</summary>
<param name="DataSource">The database server where to connect to</param>
<param name="Database">The datasource, eg. the path of the FDB-file</param>
<param name="User">The user used to connect to the database</param>
<param name="Password">The password of the connecting user</param>
<returns>A connectionstring</returns>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.ExecuteNonQueryWithConnection(System.String,FirebirdSql.Data.FirebirdClient.FbConnection,DigitalData.Modules.Database.Firebird.TransactionMode,FirebirdSql.Data.FirebirdClient.FbTransaction)">
<summary>
Executes a non-query command.
</summary>
<param name="SqlCommand">The command to execute</param>
<param name="Connection">The Firebird connection to use</param>
<returns>True, if command was executed sucessfully. Otherwise false.</returns>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.ExecuteNonQuery(System.String)">
<summary>
Executes a non-query command.
</summary>
<param name="SqlCommand">The command to execute</param>
<returns>True, if command was executed sucessfully. Otherwise false.</returns>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.GetScalarValueWithConnection(System.String,FirebirdSql.Data.FirebirdClient.FbConnection,DigitalData.Modules.Database.Firebird.TransactionMode,FirebirdSql.Data.FirebirdClient.FbTransaction)">
<summary>
Executes a sql query resulting in a scalar value.
</summary>
<param name="SqlQuery">The query to execute</param>
<param name="Connection">The Firebird connection to use</param>
<returns>The scalar value if the command was executed successfully. Nothing otherwise.</returns>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.GetScalarValue(System.String)">
<summary>
Executes a sql query resulting in a scalar value.
</summary>
<param name="SqlQuery">The query to execute</param>
<returns>The scalar value if the command was executed successfully. Nothing otherwise.</returns>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.GetDatatableWithConnection(System.String,FirebirdSql.Data.FirebirdClient.FbConnection,DigitalData.Modules.Database.Firebird.TransactionMode,FirebirdSql.Data.FirebirdClient.FbTransaction)">
<summary>
Executes a sql query resulting in a table of values.
</summary>
<param name="SqlQuery">The query to execute</param>
<param name="Connection">The Firebird connection to use</param>
<returns>A datatable containing the results if the command was executed successfully. Nothing otherwise.</returns>
</member>
<member name="M:DigitalData.Modules.Database.Firebird.GetDatatable(System.String,DigitalData.Modules.Database.Firebird.TransactionMode)">
<summary>
Executes a sql query resulting in a table of values.
</summary>
<param name="SqlQuery">The query to execute</param>
<returns>A datatable containing the results if the command was executed successfully. Nothing otherwise.</returns>
</member>
<member name="M:DigitalData.Modules.Database.Oracle.GetDatatable(System.String,System.Int32)">
<summary>
Returns a datatable for a sql-statement
</summary>
<param name="sqlcommand">sqlcommand for datatable (select XYZ from TableORView)</param>
<param name="commandtimeout">Optional Timeout</param>
<returns>Returns a datatable</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.Modules.Database.Oracle.NewExecutenonQuery(System.String,System.Int32)">
<summary>
Executes the passed sql-statement
</summary>
<param name="executeStatement">the sql statement</param>
<param name="commandtimeout">Optional Timeout</param>
<returns>Returns true if properly executed, else false</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.Modules.Database.Oracle.NewExecuteNonQueryAsync(System.String,System.Int32)">
<summary>
Executes the passed sql-statement in asyncmode
</summary>
<param name="executeStatement">the sql statement</param>
<param name="commandtimeout">Optional Timeout</param>
<remarks></remarks>
</member>
<member name="M:DigitalData.Modules.Database.Oracle.NewExecuteScalar(System.String,System.Int32)">
<summary>
Executes the passed sql-statement as Scalar
</summary>
<param name="executeStatement">the sql statement</param>
<param name="commandtimeout">Optional Timeout</param>
<returns>Returns true if properly executed, else false</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.Modules.Database.MSSQLServer.GetDatatable(System.String,System.Int32)">
<summary>
Returns a datatable for a sql-statement
</summary>
<param name="sqlcommand">sqlcommand for datatable (select XYZ from TableORView)</param>
<param name="commandtimeout">Optional Timeout</param>
<returns>Returns a datatable</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.Modules.Database.MSSQLServer.NewExecutenonQuery(System.String,System.Int32)">
<summary>
Executes the passed sql-statement
</summary>
<param name="executeStatement">the sql statement</param>
<param name="commandtimeout">Optional Timeout</param>
<returns>Returns true if properly executed, else false</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.Modules.Database.MSSQLServer.NewExecuteNonQueryAsync(System.String,System.Int32)">
<summary>
Executes the passed sql-statement in asyncmode
</summary>
<param name="executeStatement">the sql statement</param>
<param name="commandtimeout">Optional Timeout</param>
<remarks></remarks>
</member>
<member name="M:DigitalData.Modules.Database.MSSQLServer.NewExecuteScalar(System.String,System.Int32)">
<summary>
Executes the passed sql-statement as Scalar
</summary>
<param name="executeStatement">the sql statement</param>
<param name="commandtimeout">Optional Timeout</param>
<returns>Returns true if properly executed, else false</returns>
<remarks></remarks>
</member>
</members>
</doc>

View File

@@ -0,0 +1,183 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
DigitalData.Modules.Logging
</name>
</assembly>
<members>
<member name="T:DigitalData.Modules.Logging.My.Resources.Resources">
<summary>
Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
</summary>
</member>
<member name="P:DigitalData.Modules.Logging.My.Resources.Resources.ResourceManager">
<summary>
Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
</summary>
</member>
<member name="P:DigitalData.Modules.Logging.My.Resources.Resources.Culture">
<summary>
Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
</summary>
</member>
<member name="T:DigitalData.Modules.Logging.LogConfig">
<module>LogConfig</module>
<version>0.0.0.5</version>
<date>02.10.2018</date>
<summary>
Module that writes file-logs to different locations:
local application data, the current directory or a custom path.
Files and directories will be automatically created.
</summary>
<dependencies>
NLog, >= 4.5.8
</dependencies>
<params>
logPath, PathType
The basepath to write logs to. Can be AppData, CurrentDirectory or CustomPath.
- AppData: writes to local application data directory
- CurrentDirectory: writes to `Log` directory relative to the current directory
- CustomPath: writes to custom path specified in `customLogPath`
customLogPath, String (optional)
If `logPath` is set to custom, this defines the custom logPath.
suffix, String (optional)
If set to anything other than Nothing, extends the logfile name with this suffix.
</params>
<props>
LogFile, String (readonly)
Returns the full path of the default log file.
LogPath, String (readonly)
Returns the path to the log directory.
LogFactory, NLog.LogFactory (readonly)
Returns the LogFactory that is used to create the Logger object
Debug, Boolean
Determines if the debug log should be written.
</props>
<example>
Imports DigitalData.Modules.Logging
Class FooProgram
Private Logger as Logger
Private LogConfig as LogConfig
Public Sub New()
LogConfig = new LogConfig(args)
Logger = LogConfig.GetLogger()
End Sub
Public Sub Bar()
Logger.Info("Baz")
End Sub
End Class
Class FooLib
Private Logger as NLog.Logger
Public Sub New(LogConfig as LogConfig)
Logger = LogConfig.GetLogger()
End Sub
Public Sub Bar()
Logger.Info("Baz")
End Sub
End Class
</example>
<remarks>
If logpath can not be written to, falls back to temp folder as defined in:
https://docs.microsoft.com/de-de/dotnet/api/system.io.path.gettemppath?view=netframework-4.7.2
If used in a service, LogPath must be set to CustomPath, otherwise the Log will be written to System32!
For NLog Troubleshooting, set the following Environment variables to write the NLog internal Log:
- NLOG_INTERNAL_LOG_LEVEL: Debug
- NLOG_INTERNAL_LOG_FILE: ex. C:\Temp\Nlog_Internal.log
</remarks>
</member>
<member name="P:DigitalData.Modules.Logging.LogConfig.LogFactory">
<summary>
Returns the NLog.LogFactory object that is used to create Loggers
</summary>
<returns>LogFactory object</returns>
</member>
<member name="P:DigitalData.Modules.Logging.LogConfig.LogFile">
<summary>
Returns the path to the current default logfile
</summary>
<returns>Filepath to the logfile</returns>
</member>
<member name="P:DigitalData.Modules.Logging.LogConfig.LogDirectory">
<summary>
Returns the path to the current log directory
</summary>
<returns>Directory path to the log directory</returns>
</member>
<member name="P:DigitalData.Modules.Logging.LogConfig.Debug">
<summary>
Determines if a debug log will be written
</summary>
<returns>True, if debug log will be written. False otherwise.</returns>
</member>
<member name="M:DigitalData.Modules.Logging.LogConfig.#ctor(DigitalData.Modules.Logging.LogConfig.PathType,System.String,System.String)">
<summary>
Initializes a new LogConfig object with a logpath and optinally a filename-suffix.
</summary>
<param name="logPath">The basepath to write logs to. Can be AppData, CurrentDirectory or CustomPath.</param>
<param name="customLogPath">If `logPath` is set to custom, this defines the custom logPath.</param>
<param name="suffix">If set to anything other than Nothing, extends the logfile name with this suffix.</param>
</member>
<member name="M:DigitalData.Modules.Logging.LogConfig.GetLogger">
<summary>
Returns the Logger for the calling class
</summary>
<returns>An object of Logging.Logger</returns>
</member>
<member name="M:DigitalData.Modules.Logging.LogConfig.GetClassFullName">
<summary>
Gets the fully qualified name of the class invoking the calling method,
including the namespace but Not the assembly.
</summary>
<returns>The fully qualified class name</returns>
<remarks>This method is very resource-intensive!</remarks>
</member>
<member name="M:DigitalData.Modules.Logging.LogConfig.GetConfig(System.String,System.String)">
<summary>
Returns the initial log configuration
</summary>
<param name="productName">The chosen productname</param>
<param name="logFileSuffix">The chosen suffix</param>
<returns>A NLog.LoggingConfiguration object</returns>
</member>
<member name="M:DigitalData.Modules.Logging.LogConfig.AddDefaultRules(NLog.Config.LoggingConfiguration@)">
<summary>
Adds the default rules
</summary>
<param name="config">A NLog.LoggingConfiguration object</param>
</member>
<member name="M:DigitalData.Modules.Logging.LogConfig.GetCurrentLogFilePath">
<summary>
Returns the full path of the current default log file.
</summary>
<returns>Full path of the current default log file</returns>
</member>
<member name="M:DigitalData.Modules.Logging.LogConfig.ReloadConfig(System.Boolean)">
<summary>
Reconfigures and re-adds all loggers, optionally adding the debug rule.
</summary>
<param name="Debug">Adds the Debug rule if true.</param>
</member>
<member name="M:DigitalData.Modules.Logging.Logger.NewBlock(System.String)">
<summary>
Prints a preformatted Block including a block identifier
</summary>
<param name="blockId">A unique Identifier for this block, eg. DocId, FullPath, ..</param>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,147 @@
Imports DigitalData.EMLProfiler.ClassCurrent
Imports DigitalData.Modules.Logging
Public Class clsDatabase
Public connectionString As String
Private Logger As Logger
Sub New(LogConf As LogConfig, ConStr As String)
Logger = LogConf.GetLogger
Init(ConStr)
End Sub
Public Function Init(ConString As String)
Try
Dim SQLconnect As New SqlClient.SqlConnection
SQLconnect.ConnectionString = ConString
SQLconnect.Open()
SQLconnect.Close()
connectionString = ConString
DTCONFIG = Return_Datatable("select * from TBEMLP_CONFIG")
If Not IsNothing(DTCONFIG) Then
If DTCONFIG.Rows.Count = 1 Then
LOG_ERRORS_ONLY = DTCONFIG.Rows(0).Item("LOG_ERRORS_ONLY")
PATH_TEMP = DTCONFIG.Rows(0).Item("PATH_EMAIL_TEMP")
PATH_ERROR = DTCONFIG.Rows(0).Item("PATH_EMAIL_ERRORS")
MAIL_BODY_FONT = DTCONFIG.Rows(0).Item("FONT_BODY")
WM_CON_STRING = DTCONFIG.Rows(0).Item("WM_CON_STRING")
TIMER_INTERVALL = DTCONFIG.Rows(0).Item("CHECK_INTERVALL_MINUTES")
End If
End If
DT_ECM_BASE_CONFIG = Return_Datatable("select * from TBDD_BASECONFIG")
Try
WM_DRIVE = DT_ECM_BASE_CONFIG.Rows(0).Item("WM_DRIVE")
Catch ex As Exception
Logger.Warn("WM_DRIVE not part of DT_ECM_BASE_CONFIG: " & ex.Message)
WM_DRIVE = "W"
End Try
Logger.Debug("Database initialized")
Return True
Catch ex As Exception
Logger.Warn("Unexpected Error in DatabaseInit: " & ex.Message)
Return False
End Try
End Function
Public Function Return_Datatable(Select_anweisung As String)
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = connectionString
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = Select_anweisung
SQLcommand.CommandTimeout = 240
Dim adapter1 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(SQLcommand)
Dim dt As DataTable = New DataTable()
adapter1.Fill(dt)
SQLconnect.Close()
Return dt
Catch ex As Exception
Logger.Warn("Unexpected Error in Return_Datatable: " & ex.Message)
Logger.Warn("SQL: " & Select_anweisung)
Return Nothing
End Try
End Function
Public Function Return_DatatableCS(Select_anweisung As String, CS As String)
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = CS
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = Select_anweisung
SQLcommand.CommandTimeout = 240
Dim adapter1 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(SQLcommand)
Dim dt As DataTable = New DataTable()
adapter1.Fill(dt)
SQLconnect.Close()
Return dt
Catch ex As Exception
Logger.Warn("Unexpected Error in Return_DatatableCS: " & ex.Message)
Logger.Warn("SQL: " & Select_anweisung)
Return Nothing
End Try
End Function
Public Function Execute_non_Query(ExecuteCMD As String, Optional Userinput As Boolean = False)
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = connectionString
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'Update Last Created Record in Foo
SQLcommand.CommandText = ExecuteCMD
SQLcommand.ExecuteNonQuery()
SQLcommand.Dispose()
SQLconnect.Close()
Return True
Catch ex As Exception
Logger.Warn("Unexpected Error in Execute_non_Query: " & ex.Message)
Logger.Warn("SQL: " & ExecuteCMD)
Return False
End Try
End Function
Public Function Execute_Scalar(cmdscalar As String)
Dim result
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = connectionString
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'Update Last Created Record in Foo
SQLcommand.CommandText = cmdscalar
result = SQLcommand.ExecuteScalar()
SQLcommand.Dispose()
SQLconnect.Close()
Return result
Catch ex As Exception
Logger.Warn("Unexpected Error Execute_Scalar: " & ex.Message)
Logger.Warn("SQL: " & cmdscalar)
Return Nothing
End Try
End Function
Public Function Execute_Scalar_CS(cmdscalar As String, constring As String)
Dim result
Try
Dim SQLconnect As New SqlClient.SqlConnection
Dim SQLcommand As SqlClient.SqlCommand
SQLconnect.ConnectionString = constring
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
'Update Last Created Record in Foo
SQLcommand.CommandText = cmdscalar
result = SQLcommand.ExecuteScalar()
SQLcommand.Dispose()
SQLconnect.Close()
Return result
Catch ex As Exception
Logger.Warn("Unexpected Error Execute_Scalar_CS: " & ex.Message)
Logger.Warn("SQL: " & cmdscalar)
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,67 @@
Imports Independentsoft.Email
Imports Independentsoft.Email.Imap
Imports Independentsoft.Email.Mime
Imports DigitalData.EMLProfiler.ClassCurrent
Imports DigitalData.Modules.Logging
Public Class clsEmailIMAP
Private Shared Logger As DigitalData.Modules.Logging.Logger
Sub New(LogConf As LogConfig)
Logger = LogConf.GetLogger
End Sub
'Private Shared Sub OnWriteLog(ByVal sender As Object, ByVal e As WriteLogEventArgs)
' Logger.Info(e.Log)
'End Sub
Public Function IMAP_COLLECT()
Try
Logger.Info(String.Format("Working on IMAP_COLLECT....."))
Logger.Debug(String.Format("Working on IMAP_COLLECT....."))
Dim client As New ImapClient(MAIL_SERVER, MAIL_PORT)
'If LOG_ERRORS_ONLY = False Then
' Dim emaillogger As New Independentsoft.Email.Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt")
' AddHandler emaillogger.WriteLog, AddressOf OnWriteLog
'client.Logger = emaillogger
'End If
client.ValidateRemoteCertificate = False
client.Connect()
client.Login(MAIL_USER, MAIL_USER_PW)
client.SelectFolder("Inbox")
Dim envelopes As Envelope() = client.ListMessages()
For i As Integer = 0 To envelopes.Length - 1
If Not IsNothing(envelopes(i).Subject) Then
'If envelopes(i).Subject.ToString.ToUpper.Contains("[PROCESSMANAGER]") Or envelopes(i).Subject.ToString.ToUpper.Contains("[ADDI]") Then
Logger.Info($"Working on email: UniqueID: {envelopes(i).UniqueID} - Subject:{envelopes(i).Subject} - Date {envelopes(i).Date.ToString}")
Dim message As Mime.Message = client.GetMessage(envelopes(i).UniqueID)
If Not IsNothing(message) Then
MAIL_LIST.Add(message)
End If
'End If
End If
Next
client.Disconnect()
Logger.Debug("IMAP_COLLECT finished!")
Return True
' MAIL_LIST
'client.ValidateRemoteCertificate = False
'client.Connect()
'client.Login(MAIL_USER, MAIL_USER_PW)
'Dim messages As Message() = client.GetMessages("Inbox")
'For i As Integer = 0 To messages.Length - 1
' MAIL_LIST.Add(messages(i))
'Next
'Logger.Debug(String.Format("MAIL_LIST.Count: {0}", MAIL_LIST.Count))
'client.Disconnect()
Catch ex As Exception
Logger.Error(ex, "Unexpected Error in IMAP COLLECT:")
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,245 @@
Imports Independentsoft.Email
Imports Independentsoft.Email.Pop3
Imports Independentsoft.Email.Mime
Imports Independentsoft.Email.Imap
Imports DigitalData.EMLProfiler.ClassCurrent
Imports DigitalData.Modules.Logging
Imports Independentsoft.Email.Smtp
Public Class clsEmail
Private Shared Logger As DigitalData.Modules.Logging.Logger
Sub New(LogConf As LogConfig)
Logger = LogConf.GetLogger
End Sub
Private Shared Sub OnWriteLog(ByVal sender As Object, ByVal e As WriteLogEventArgs)
Logger.Info(e.Log)
End Sub
Public Function POP3_COLLECT() As Boolean
Try
Logger.Debug(String.Format("Working on POP3_COLLECT....."))
Dim client As New Pop3Client(MAIL_SERVER, MAIL_PORT)
'If LOG_ERRORS_ONLY = False Then
' Dim logger As New Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt")
' AddHandler logger.WriteLog, AddressOf OnWriteLog
' client.Logger = logger
'End If
client.ValidateRemoteCertificate = False
client.Connect()
Logger.Debug(String.Format("..connected!"))
client.Login(MAIL_USER, MAIL_USER_PW)
Dim messageInfo As MessageInfo() = client.List()
For i As Integer = 0 To messageInfo.Length - 1
Dim message As Message = client.GetMessage(messageInfo(i).Index)
MAIL_LIST.Add(message)
Logger.Debug(String.Format("Message [{0}] added", message.Subject))
'client.Delete(messageInfo(i).Index)
Next
client.Disconnect()
Logger.Debug(String.Format(" POP3_COLLECT finished!"))
Return True
Catch ex As Exception
Logger.Error(ex)
' clsLogger.Add("Unexpected Error in POP3_COLLECT: " & ex.Message)
EventLog.WriteEntry("DD EmailProfiler", "Unexpected Error in POP3_COLLECT: " & ex.Message(), EventLogEntryType.Error)
Return False
End Try
End Function
Public Function DELETE_EMAIL(msgid As String)
Try
If CURRENT_POLL_TYPE = "POP" Then
Dim client As New Pop3Client(MAIL_SERVER, MAIL_PORT)
'If LOG_ERRORS_ONLY = False Then
' Dim logger As New Independentsoft.Email.Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt")
' AddHandler logger.WriteLog, AddressOf OnWriteLog
' client.Logger = logger
'End If
client.ValidateRemoteCertificate = False
client.Connect()
client.Login(MAIL_USER, MAIL_USER_PW)
Dim messageInfo As MessageInfo() = client.List()
For i As Integer = 0 To messageInfo.Length - 1
Dim message As Message = client.GetMessage(messageInfo(i).Index)
If message.MessageID = msgid Then
client.Delete(messageInfo(i).Index)
Logger.Info(String.Format("Message [{0}] was deleted!", message.Subject))
Exit For
End If
Next
client.Disconnect()
Return True
ElseIf CURRENT_POLL_TYPE = "IMAP" Then
Dim client As New ImapClient(MAIL_SERVER, MAIL_PORT)
'Dim logger As New Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt")
'AddHandler logger.WriteLog, AddressOf OnWriteLog
'client.Logger = logger
client.ValidateRemoteCertificate = False
client.Connect()
client.Login(MAIL_USER, MAIL_USER_PW)
client.SelectFolder("Inbox")
Dim envelopes As Envelope() = client.ListMessages()
For i As Integer = 0 To envelopes.Length - 1
If envelopes(i).MessageID = msgid Then
client.Delete(envelopes(i).UniqueID) 'mark as deleted
End If
Next
client.Expunge() 'delete messages marked as deleted
client.Disconnect()
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in DELETE_EMAIL: " & ex.Message)
Return False
End Try
End Function
Public Function Email_Send_Independentsoft(ByVal mailSubject As String, ByVal mailBody As String, mailto As String,
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, Optional attment As String = "")
Try
Logger.Debug($"in Email_Send_Independentsoft..")
Dim empfaenger As String()
If mailto.Contains(";") Then
empfaenger = mailto.Split(";")
Else
ReDim Preserve empfaenger(0)
empfaenger(0) = mailto
End If
Dim _error As Boolean = False
'Für jeden Empfänger eine Neue Mail erzeugen
For Each _mailempfaenger As String In empfaenger
Logger.Debug($"Working on email for {_mailempfaenger}..")
Try
Dim message As New Message()
message.From = New Mailbox(mailfrom, mailfrom)
message.[To].Add(New Mailbox(_mailempfaenger))
message.Subject = mailSubject
Logger.Debug($"Message created..")
Dim textBodyPart As New BodyPart()
textBodyPart.ContentType = New ContentType("text", "html", "utf-8")
textBodyPart.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
textBodyPart.Body = mailBody
message.BodyParts.Add(textBodyPart)
If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then
Dim attachment1 As New Attachment(attment)
If attment.ToLower.EndsWith("pdf") Then
attachment1.ContentType = New ContentType("application", "pdf")
ElseIf attment.ToLower.EndsWith("jpg") Then
attachment1.ContentType = New ContentType("application", "jpg")
ElseIf attment.ToLower.EndsWith("docx") Then
attachment1.ContentType = New ContentType("application", "MS-word")
End If
message.BodyParts.Add(attachment1)
Else
Logger.Warn($"Attachment {attment.ToString} is not existing!")
End If
End If
Dim client As SmtpClient
Try
client = New SmtpClient(mailsmtp, mailport)
Catch ex As Exception
Logger.Warn("clsEmail.Create Client: " & ex.Message)
_error = True
Continue For
End Try
Try
client.Connect()
Catch ex As Exception
Logger.Warn("clsEmail.Client.Connect: " & ex.Message)
_error = True
' Continue For
End Try
Logger.Info("Connected to Client!")
If AUTH_TYPE = "SSL" Then
client.EnableSsl = True
'client.ValidateRemoteCertificate = True
Logger.Info("Authentification via SSL.")
ElseIf AUTH_TYPE = "TLS" Then
' client.ValidateRemoteCertificate = False
client.StartTls()
client.EnableSsl = False
Logger.Info("Authentification via TLS. SSL disabled")
Else
client.EnableSsl = False
Logger.Info("Authentification NONE. SSL disabled")
End If
Try
client.Connect()
Catch ex As Exception
Logger.Warn("clsEmail.Client.Connect: " & ex.Message)
_error = True
' Continue For
End Try
Try
If mailsmtp.Contains("office365.com") Then
client.Login(mailUser, mailPW, AuthenticationType.None)
Else
client.Login(mailUser, mailPW)
End If
Logger.Info("Logged in!")
Catch ex As Exception
Try
If mailsmtp.Contains("office365.com") Then
client.Login(mailUser, mailPW, AuthenticationType.Login)
Else
client.Login(mailUser, mailPW, AuthenticationType.Anonymous)
End If
Catch ex1 As Exception
Try
client.Login(mailUser, mailPW, AuthenticationType.Login)
Catch ex2 As Exception
Logger.Warn("clsEmail.Client.Login: " & ex.Message)
_error = True
client.Disconnect()
Continue For
End Try
End Try
End Try
Try
client.Send(message)
Logger.Info("Message to " & _mailempfaenger & " has been send.")
_error = False
Catch ex As Exception
Logger.Warn("clsEmail.Client.Send: " & ex.Message)
_error = True
client.Disconnect()
Continue For
End Try
client.Disconnect()
Catch ex As Exception
Logger.Error(ex)
_error = True
End Try
Next
If _error = True Then
Return False
Else
Return True
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,76 @@
Imports System.Security.Cryptography
Imports NLog
Imports DigitalData.Modules.Logging
Public Class clsEncryption
Private TripleDes As New TripleDESCryptoServiceProvider
Private Logger As DigitalData.Modules.Logging.Logger
Sub New(ByVal key As String, LogConf As LogConfig)
Logger = LogConf.GetLogger
' Initialize the crypto provider.
TripleDes.Key = TruncateHash(key, TripleDes.KeySize \ 8)
TripleDes.IV = TruncateHash("", TripleDes.BlockSize \ 8)
End Sub
Private Function TruncateHash(
ByVal key As String,
ByVal length As Integer) As Byte()
Dim sha1 As New SHA1CryptoServiceProvider
' Hash the key.
Dim keyBytes() As Byte =
System.Text.Encoding.Unicode.GetBytes(key)
Dim hash() As Byte = sha1.ComputeHash(keyBytes)
' Truncate or pad the hash.
ReDim Preserve hash(length - 1)
Return hash
End Function
Public Function EncryptData(
ByVal plaintext As String) As String
' Convert the plaintext string to a byte array.
Dim plaintextBytes() As Byte =
System.Text.Encoding.Unicode.GetBytes("!Didalog35452Heuchelheim=" & plaintext)
' Create the stream.
Dim ms As New System.IO.MemoryStream
' Create the encoder to write to the stream.
Dim encStream As New CryptoStream(ms,
TripleDes.CreateEncryptor(),
System.Security.Cryptography.CryptoStreamMode.Write)
' Use the crypto stream to write the byte array to the stream.
encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
encStream.FlushFinalBlock()
' Convert the encrypted stream to a printable string.
Return Convert.ToBase64String(ms.ToArray)
End Function
'Entschlüsselt die Zeichenfolge
Public Function DecryptData(
ByVal encryptedtext As String) As String
Try
' Convert the encrypted text string to a byte array.
Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext)
' Create the stream.
Dim ms As New System.IO.MemoryStream
' Create the decoder to write to the stream.
Dim decStream As New CryptoStream(ms,
TripleDes.CreateDecryptor(),
System.Security.Cryptography.CryptoStreamMode.Write)
' Use the crypto stream to write the byte array to the stream.
decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
decStream.FlushFinalBlock()
Dim result = System.Text.Encoding.Unicode.GetString(ms.ToArray)
result = result.Replace("!Didalog35452Heuchelheim=", "")
' Convert the plaintext stream to a string.
Return result
Catch ex As Exception
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,816 @@
Imports WINDREAMLib
Imports WMOSRCHLib
Imports DigitalData.Modules.Logging
Public Class clsWindream_Index
Inherits clsWindream_allgemein
#Region "+++++ Konstanten +++++"
Protected Const WMObjectEditModeObject = &H1F
Protected Const WMObjectStreamOpenModeReadWrite = 2
Protected Const WMEntityObjectType = 10
Protected Const WMEntityDocument = 1
Const WMObjectVariableValueTypeUndefined = 0
Const WMObjectVariableValueTypeString = 1
Const WMObjectVariableValueTypeInteger = 2
Const WMObjectVariableValueTypeFloat = 3
Const WMObjectVariableValueTypeBoolean = 4
Const WMObjectVariableValueTypeDate = 5
Const WMObjectVariableValueTypeFixedPoint = 6
Const WMObjectVariableValueTypeTimeStamp = 7
Const WMObjectVariableValueTypeCurrency = 8
Const WMObjectVariableValueTypeTime = 9
Const WMObjectVariableValueTypeVariant = 10
Const WMObjectVariableValueTypeMask = &HFFF
Const WMObjectVariableValueFlagMask = &HFFFFF000
Const WMObjectVariableValueTypeVector = &H1000
Const WMObjectVariableValueTypeFulltext = &H2000
Const WMObjectVariableValueTypeDefaultValue = &H4000
#End Region
#Region "+++++ Variablen +++++"
'Private oController = CreateObject("WMOSrch.WMQuickSearch") 'As New WMOSearchController
'Private oController As New WMOSearchController
Private oController As New WMOSearchController
Private Shared Logger As Logger
'Dim srchQuick = CreateObject("WMOSrch.WMQuickSearch") 'As WMOSRCHLib.WMQuickSearch
#End Region
#Region "+++++ Allgemeine Methoden und Funktionen +++++"
Sub New(LogConf As LogConfig)
MyBase.New(LogConf)
Logger = LogConf.GetLogger
End Sub
Private Function IsNotEmpty(ByVal aValue As Object)
If aValue IsNot Nothing Then
Dim itsType As Type = aValue.GetType
If itsType Is GetType(String) Then
If Not aValue = "" Then
Return True
End If
Return False
Else
Return True
End If
Else
Return False
End If
End Function
Private Function return_type(ByVal _wert As Object)
Return _wert.GetType
End Function
Public Function GetIndex_Type(idxName) As String
Try
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, idxName)
'den Variablentyp (String, Integer, ...) auslesen
Dim vType = oAttribute.getVariableValue("dwAttrType")
Dim Type As String
Select Case (vType)
'Case WMObjectVariableValueTypeUndefined
Case WMObjectVariableValueTypeString
Type = "String"
Case WMObjectVariableValueTypeInteger
Type = "Integer"
Case WMObjectVariableValueTypeFloat
Type = "Float"
Case WMObjectVariableValueTypeFixedPoint
Type = "Point"
Case WMObjectVariableValueTypeBoolean
Type = "Boolean"
Case WMObjectVariableValueTypeDate
Type = "Date"
Case WMObjectVariableValueTypeTimeStamp
Type = "Timestamp"
Case WMObjectVariableValueTypeCurrency
Type = "Currency"
Case WMObjectVariableValueTypeTime
Type = "Time"
Case WMObjectVariableValueTypeFloat
Type = "Float"
Case WMObjectVariableValueTypeVariant
Type = "Varia´nt"
Case WMObjectVariableValueTypeFulltext
Type = "Fulltext"
Case 4097
Type = "Vektor String"
Case 4098
Type = "Vektor Numerisch"
Case 4099
Type = "Vektor Float"
Case 4101
Type = "Vektor Date"
Case 4103
Type = "Vektor DateTime"
Case 36865
Type = "Vektor Alpha"
Case Else
Type = "String Else"
End Select
Return Type
Catch ex As Exception
End Try
End Function
Public Function RunIndexing_Vektor(ByVal oDocument As WMObject, ByVal Indizes As String(), ByVal aValues As String())
Try
If Indizes IsNot Nothing And aValues IsNot Nothing Then
If Not oDocument.aLocked Then
oDocument.lock()
If aValues.Length = 1 And aValues(0) = "" Then
Logger.Warn("RunIndexing_Vektor: Indexwert ist leer/Nothing - Keine Nachindexierung")
Else
'Jetzt jeden Indexwert durchlaufen
Dim indexname As String
indexname = Indizes(0)
Logger.Debug("RunIndexing_Vektor: Indexname: " & indexname)
'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST
Logger.Debug("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
Logger.Debug("Typ des windream-Indexes: 4097 Vektor alphanumerisch")
Case 4098
Logger.Debug("Typ des windream-Indexes: 4098 Vektor Numerisch")
Case 4099
Logger.Debug("Typ des windream-Indexes: 4099 Vektor Kommazahl")
Case 4101
Logger.Debug("Typ des windream-Indexes: 4101 Vektor Date")
Case 4103
Logger.Debug("Typ des windream-Indexes: 4103 Vektor DateTime")
Case 4107
Logger.Debug("Typ des windream-Indexes: 4107 Vektor Integer(64bit)")
Case 36865
Logger.Debug("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
Logger.Debug("RunIndexing_Vektor: Vektorfeld wird mit EINEM Wert gefüllt ")
ReDim myArray(0)
Select Case (vType)
Case 4097
myArray(0) = CStr(aValues(0))
Case 4098
myArray(0) = CInt(aValues(0).Replace(" ", ""))
Case 4099
Dim str As String = aValues(0)
str = str.ToString.Replace(" ", "")
myArray(0) = CDbl(str.Replace(".", ","))
Case 4101
myArray(0) = CDate(aValues(0))
Case 4103
myArray(0) = aValues(0)
Case 4107
myArray(0) = Convert.ToInt64(aValues(0))
Case 36865
myArray(0) = CStr(aValues(0))
End Select
Logger.Debug("RunIndexing_Vektor: Konvertierter Wert: " & myArray(0).ToString)
Else
Logger.Debug("RunIndexing_Vektor: Vektorfeld wird mit MEHREREN Werten gefüllt ")
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl)
Dim i1 As Integer = 0
For Each aValue As String In aValues
Select Case (vType)
Case 4107
Dim wert = aValue.Replace(" ", "")
wert = Convert.ToInt64(wert) 'ToInt64
myArray(i1) = wert
Case 4097
myArray(i1) = CStr(aValue)
Case 4098
Dim wert = aValue.Replace(" ", "")
Dim OConvertValue
If IsNumeric(wert) Then
Try
OConvertValue = CInt(wert)
Catch ex As Exception
Logger.Debug("Wert muss in Int64 konvertiert werden")
OConvertValue = Convert.ToInt64(wert) 'ToInt64
End Try
Else
' clsLoggerNI.Add("Indexierungswert '" & wert.ToString & "' kann nicht in Integer konvertiert werden")
Return False
End If
myArray(i1) = OConvertValue
Case 4099
myArray(i1) = CDbl(aValue.Replace(".", ",").Replace(" ", ""))
Case 4101
myArray(i1) = CDate(aValue)
Case 4103
myArray(i1) = aValue
Case 36865
myArray(i1) = CStr(aValue)
Case Else
myArray(i1) = CStr(aValue)
End Select
i1 += 1
Next
End If
'Jetzt die Nachindexierung für Vektor-Felder
oDocument.SetVariableValue(indexname, myArray)
Logger.Debug("RunIndexing_Vektor: 'SetVariableValue' für VEKTOR erfolgreich")
oDocument.Save()
oDocument.unlock()
Logger.Debug("RunIndexing_Vektor: Indexierung erfolgreich beendet (Save und Unlock durchgeführt)")
Return True
End If
Else
Logger.Warn("RunIndexing_Vektor: Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!")
Return False
End If
End If
Catch ex As Exception
Logger.Error(ex)
'clsLogger.AddError("## Fehler in RunIndexing_Vektor - Fehler: " & ex.Message, "RunIndexingVektor")
oDocument.Save()
oDocument.unlock()
Return False
End Try
End Function
Public Function RunIndexing(ByVal oDocument As WMObject, ByVal Indizes() As String, ByVal aValues() As Object, Objekttyp As String)
Try
If Indizes IsNot Nothing And aValues IsNot Nothing Then
If Not oDocument.aLocked Then
oDocument.lock()
Dim i As Integer = 0
Dim indexname As String
If aValues.Length = 1 And aValues(0) = "" Then
Logger.Debug("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
Logger.Debug("Objekttyp war Standard und wurde in '" & Objekttyp & "' geändert.")
Else
Logger.Debug("Objekttyp war bereits gesetzt")
End If
Try
oDocument.Save()
Catch ex As Exception
' wenn es einen Fehler beim speichern gab, dann konnte auch kein Dokumenttyp gesetzt werden -> es kann also auch keine
' Indexierung stattfinden und die Indexierung muss nicht fortgesetzt werden
Return False
End Try
'Jetzt jeden Indexwert durchlaufen
For Each aName As String In Indizes
indexname = aName
' das entsprechende Attribut aus windream auslesen
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, Indizes(i))
' den Variablentyp (String, Integer, ...) auslesen
Dim vType = oAttribute.getVariableValue("dwAttrType")
' wenn in aValues an Position i ein Wert steht
If IsNotEmpty(aValues(i)) Then
Dim _int As Boolean = False
Dim _date As Boolean = False
Dim _dbl As Boolean = False
Dim _bool As Boolean = False
'If indexname = "Tournr" Then
' MsgBox("Index: " & indexname & vbNewLine & "wert: " & aValues(i), MsgBoxStyle.Information, "Index: " & aName.ToString)
'End If
Logger.Debug("Indexierung von Index '" & indexname & "'")
'MsgBox(oDocument.aName & vbNewLine & aValues(i) & vbNewLine & vType, MsgBoxStyle.Exclamation, "Zeile 87")
Dim value = aValues(i)
Dim OConvertValue
Dim oIsVector As Boolean = False
'Den Typ des Index-Feldes auslesen
'MsgBox(value.GetType.ToString)
Select Case (vType)
'Case WMObjectVariableValueTypeUndefined
Case WMObjectVariableValueTypeString
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeString")
OConvertValue = CStr(value)
Case WMObjectVariableValueTypeInteger
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeInteger")
value = value.ToString.Replace(" ", "")
If IsNumeric(value) = False Then
Logger.Debug("Achtung: Value '" & value & "' kann nicht in Zahl konvertiert werden!")
End If
value = value.ToString.Replace(" ", "")
OConvertValue = CInt(value)
_int = True
Case WMObjectVariableValueTypeFloat
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
value = value.ToString.Replace(" ", "")
OConvertValue = CDbl(value)
Case WMObjectVariableValueTypeFixedPoint
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint")
value = value.ToString.Replace(" ", "")
OConvertValue = CDbl(value)
_dbl = True
Case WMObjectVariableValueTypeBoolean
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeBoolean")
OConvertValue = CBool(value)
_bool = True
Case WMObjectVariableValueTypeDate
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeDate")
_date = True
'Dim _date As Date = value
OConvertValue = value
Case WMObjectVariableValueTypeTimeStamp
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp")
OConvertValue = CDbl(value)
Case WMObjectVariableValueTypeCurrency
Logger.Debug("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))
OConvertValue = aValueWrapper
Case WMObjectVariableValueTypeTime
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeTime")
'If ((value)) Then
' OConvertValue = CDate(value)
'Else
' OConvertValue = ""
'End If
'Dim _date As Date = value
OConvertValue = OConvertValue '*_date.ToShortTimeString
Case WMObjectVariableValueTypeFloat
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
OConvertValue = CStr(value)
Case WMObjectVariableValueTypeVariant
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeVariant")
OConvertValue = CStr(value)
Case WMObjectVariableValueTypeFulltext
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFulltext")
OConvertValue = CStr(value)
Case 4097
Logger.Debug("Typ des windream-Indexes: 4097 Vektor alphanumerisch")
'Vektor alphanumerisch
oIsVector = True
Case 4098
Logger.Debug("Typ des windream-Indexes: 4098 oIsVector Numerisch")
'Vektor Numerisch
oIsVector = True
Case 4099
Logger.Debug("Typ des windream-Indexes: 4099 Vektor Kommazahl")
'Vektor Kommazahl
oIsVector = True
Case 4101
Logger.Debug("Typ des windream-Indexes: 4101 Vektor Date")
'Vektor Kommazahl
oIsVector = True
Case 4103
Logger.Debug("Typ des windream-Indexes: 4103 Vektor DateTime")
'Vektor DateTime
oIsVector = True
Case 4107
Logger.Debug("Typ des windream-Indexes: 4107 Integer 64bit")
oIsVector = True
Case 36865
Logger.Debug("Typ des windream-Indexes: 36865 Vektor alphanumerisch")
'Vektor Kommazahl
oIsVector = True
Case Else
Logger.Debug("Typ des windream-Indexes konnte nicht bestimmt werden!")
Logger.Debug("Versuch des Auslesens (vType): " & vType)
'MsgBox(vType & vbNewLine & CStr(value), MsgBoxStyle.Exclamation, "Marlon-Case Else")
OConvertValue = ""
End Select
If oIsVector = False Then
If OConvertValue.ToString Is Nothing = False Then
Logger.Debug("Konvertierter Wert: '" & OConvertValue.ToString & "'")
End If
End If
'############################################################################################
'####################### Der eigentliche Indexierungsvorgang ################################
'############################################################################################
If oIsVector = False Then
If OConvertValue.ToString Is Nothing = False Then
Logger.Debug("Versuch dem Dok einen Index zuzuweisen: oDocument.SetVariableValue(" & aName & ", " & OConvertValue & ")")
If _int = True Then
OConvertValue = OConvertValue.ToString.Replace(" ", "")
oDocument.SetVariableValue(aName, CInt(OConvertValue))
ElseIf _date = True Then
oDocument.SetVariableValue(aName, CDate(OConvertValue))
ElseIf _bool Then
oDocument.SetVariableValue(aName, CBool(OConvertValue))
ElseIf _dbl Then
OConvertValue = OConvertValue.ToString.Replace(" ", "")
oDocument.SetVariableValue(aName, CDbl(OConvertValue))
Else
oDocument.SetVariableValue(aName, OConvertValue)
End If
Logger.Info(String.Format("Index '{0}' was written with value '{1}'", aName, OConvertValue))
Logger.Info("")
Else
Logger.Warn("Kein Indexwert vorhanden")
End If
Else
'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST
Logger.Debug("VEKTORFELD: Vorbereiten des Arrays")
Dim myArray()
'Dim DS As DataSet
'Dim DT As DataTable
'Dim DR As DataRow
'' --- DataSet zuweisen
'DS = New MyDataset
'' --- Zugriff auf Tabelle
'DT = DS.Tables("TBVEKTOR_INDEX")
'DT.Clear()
'For Each NewValue As Object In aValues
'Next
'' --- den Filter auf den Indexnamen setzen
'Dim expression As String
'expression = "Indexname = '" & aName.ToString & "'"
'Dim foundRows() As DataRow
' Use the Select method to find all rows matching the filter.
'foundRows = DT.Select(expression)
'For Each row As DataRow In DT.Rows
'MsgBox(aName & vbNewLine & row.Item("Indexname") & vbNewLine & CStr(row.Item("Wert")))
'Next
Dim Anzahl As Integer = aValues.Length
'Vektorfeld wird mit EINEM Wert gefüllt
If Anzahl = 1 Then
Logger.Debug("Vektorfeld wird mit EINEM Wert gefüllt ")
ReDim myArray(0)
Select Case vType
Case 36865
'Umwandeln in String
myArray(0) = CStr(value)
Case 4097
'Umwandeln in String
myArray(0) = CStr(value)
Case 4098
'Umwandeln in Integer
value = value.ToString.Replace(" ", "")
myArray(0) = CInt(value)
Case 4099
Dim Str As String = value
Str = Str.ToString.Replace(" ", "")
'Umwandeln in Double
myArray(0) = CDbl(Str.Replace(".", ","))
Case 4101
'Umwandeln in Date
myArray(0) = CDate(value)
Case 4107
myArray(0) = Convert.ToInt64(value)
Case 4103
'Umwandeln in Datum Uhrzeit
myArray(0) = value
Case Else
'Umwandeln in String
myArray(0) = CStr(value)
End Select
Logger.Debug("Konvertierter Wert: " & myArray(0).ToString)
Else
Logger.Debug("Vektorfeld wird mit MEHREREN Werten gefüllt ")
Select Case vType
Case 36865
'Vektortyp ALPHANUMERISCH
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl - 1)
Dim i1 As Integer = 0
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
Logger.Debug("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
Logger.Debug("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4097
'Vektortyp ALPHANUMERISCH
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl - 1)
Dim i1 As Integer = 0
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
Logger.Debug("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4107
ReDim myArray(Anzahl - 1)
Dim i1 As Integer = 0
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
myArray(i1) = Convert.ToInt64((NewValue))
i1 = i1 + 1
Next
Case 4098
'Vektortyp NUMERISCH
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl - 1)
Dim i1 As Integer = 0
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
Dim v As String = NewValue.ToString.Replace(" ", "")
myArray(i1) = CInt(v)
Logger.Debug("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4099
'Vektortyp FLOAT
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl - 1)
Dim i1 As Integer = 0
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
Dim Str As String = NewValue
Str = Str.ToString.Replace(" ", "")
myArray(i1) = CDbl(Str.Replace(".", ","))
Logger.Debug("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case 4101
'Vektortyp DATE
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl - 1)
Dim i1 As Integer = 0
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
Dim Str As String = NewValue.ToString
myArray(i1) = CDate(Str.Replace(".", ","))
Logger.Debug("Konvertierter Wert: (" & i1 & ")" & myArray(i1).ToString)
i1 = i1 + 1
Next
Case Else
'Vektortyp ALPHANUMERISCH
'Die Größe des Arrays festlegen
ReDim myArray(Anzahl - 1)
Dim i1 As Integer = 0
'Die Datatable durchlaufen und Werte für den Index in Array schreiben
For Each NewValue As Object In aValues
myArray(i1) = CStr(NewValue)
Logger.Debug("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)
Logger.Info(String.Format("Vektor-Index '{0}' was written!", aName))
Logger.Info("")
Dim sm = oDocument.aName
End If
Else
Logger.Debug("Array der Indexwerte ist leer/Nothing - Keine Nachindexierung")
End If
i += 1
Next
' oDocument.LockRights()
'SetRights(WMObject, User)
oDocument.Save()
oDocument.unlock()
Logger.Debug("Indexierung erfolgreich beendet (Save und Unlock durchgeführt)")
Logger.Debug("")
Return True
Else
Logger.Warn("Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!")
'oDocument.unlock()
Return False
End If
End If
Catch ex As Exception
Logger.Error(ex)
'clsLogger.AddError(ex.Message, "ClassSearchResult.RunIndexing")
oDocument.Save()
oDocument.unlock()
Return False
End Try
End Function
#End Region
Public Function GetVektorArray(ByVal oDocument As WMObject, oIndexName As String, NIIndexe As Object, CheckDuplikat As Boolean)
Try
If GetCheckIsVector(oIndexName) = False Then
Return Nothing
End If
Dim missing As Boolean = False
Dim Anzahl As Integer = 0
Dim ValueArray()
'Jeden Wert des Vektorfeldes durchlaufen
Dim wertWD = oDocument.GetVariableValue(oIndexName)
If wertWD Is Nothing = False Then
'Nochmals prüfen ob wirklich Array
If wertWD.GetType.ToString.Contains("System.Object") Then
'Keine Duplikatprüfung also einfach neues Array füllen
If CheckDuplikat = False Then
For Each value As Object In wertWD
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = value.ToString
Anzahl += 1
Next
'Und jetzt den/die Neuen Wert(e) anfügen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
Anzahl += 1
End If
Next
Else
Logger.Debug("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
'Erst einmal die ALten Werte schreiben
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = WDValue.ToString
Logger.Debug("Value (" & Anzahl & ") " & WDValue.ToString)
Anzahl += 1
End If
Next
'Jetzt die Neuen Werte auf Duplikate überprüfen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
If ValueArray.Contains(NewValue) = False Then
Logger.Debug("New Value (" & Anzahl & ") " & NewValue.ToString)
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
Anzahl += 1
Else
Logger.Debug("Value '" & NewValue.ToString & "' bereits in Vektorfeld enthalten")
End If
End If
Next
End If
End If
Else
Logger.Debug("Vektorfeld ist noch leer....")
'Den/die Neuen Wert(e) anfügen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
If CheckDuplikat = True Then
If ValueArray Is Nothing = False Then
If ValueArray.Contains(NewValue) = False Then
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
Anzahl += 1
Else
Logger.Debug("Value '" & NewValue.ToString & "' bereits in Array enthalten")
End If
Else 'Dererste Wert, also hinzufügen
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
Anzahl += 1
End If
Else
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = NewValue.ToString
Anzahl += 1
End If
End If
Next
End If
Logger.Debug("Return ValueArray: length " & ValueArray.Length)
Return ValueArray
Catch ex As Exception
Logger.Error(ex)
ClassCurrent.MessageError = True
'clsLogger.AddError(ex.Message, "Return_VektorArray")
Return Nothing
End Try
End Function
#Region "+++++ Allgemeine Funktionen die Informationen zurückliefern +++++"
Public Function GetCheckIsVector(oIndexname As String)
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, oIndexname)
' den Variablentyp (String, Integer, ...) auslesen
Dim vType = oAttribute.getVariableValue("dwAttrType")
Select Case (vType)
'Case WMObjectVariableValueTypeUndefined
Case WMObjectVariableValueTypeString
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeString")
Case WMObjectVariableValueTypeInteger
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeInteger")
Case WMObjectVariableValueTypeFloat
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
Case WMObjectVariableValueTypeFixedPoint
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint")
Case WMObjectVariableValueTypeBoolean
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeBoolean")
Case WMObjectVariableValueTypeDate
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeDate")
Case WMObjectVariableValueTypeTimeStamp
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp")
Case WMObjectVariableValueTypeCurrency
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeCurrency")
Case WMObjectVariableValueTypeTime
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeTime")
Case WMObjectVariableValueTypeFloat
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFloat")
Case WMObjectVariableValueTypeVariant
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeVariant")
Case WMObjectVariableValueTypeFulltext
Logger.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFulltext")
Case 4097
Logger.Debug("Typ des windream-Indexes: 4097 Vektor alphanumerisch")
'Vektor alphanumerisch
Return True
Case 4098
Logger.Debug("Typ des windream-Indexes: 4098 oIsVector Numerisch")
Return True
Case 4099
Logger.Debug("Typ des windream-Indexes: 4099 Vektor Kommazahl")
Return True
Case 4101
Logger.Debug("Typ des windream-Indexes: 4101 Vektor Date")
Return True
Case 4103
Logger.Debug("Typ des windream-Indexes: 4103 Vektor DateTime")
Return True
Case 4107
Logger.Debug("Typ des windream-Indexes: 4107 Integer 64bit")
Return True
Case 36865
Logger.Debug("Typ des windream-Indexes: 36865 Vektor alphanumerisch")
Return True
Case Else
Logger.Debug("Typ des windream-Indexes konnte nicht bestimmt werden!")
End Select
Return False
End Function
''' Liefert den Wert eines Indexes als String
''' _indexname = Name des zu überprüfenden Indexfeldes
Public Function GetValueforIndex(ByVal _fullfilepath As String, _indexname As String)
Try
Const WMEntityDocument = 1
Dim IndexwertAusWindream As Object = Nothing
Dim _dok As WINDREAMLib.WMObject
_dok = Nothing
_dok = oSession.GetWMObjectByPath(WMEntityDocument, _fullfilepath) 'WINDREAMLib.WMEntity.WMEntityDocument
IndexwertAusWindream = _dok.GetVariableValue(_indexname)
Return IndexwertAusWindream.ToString
Catch ex As Exception
'MsgBox(ex.Message)
Return Nothing
End Try
End Function
''' Liefert den Wert eines Indexes als String
''' _indexname = Name des zu überprüfenden Indexfeldes
Public Function GetValueforIndex_WMFile(ByVal _dok As WMObject, _indexname As String)
Try
Const WMEntityDocument = 1
Dim IndexwertAusWindream As Object = Nothing
IndexwertAusWindream = _dok.GetVariableValue(_indexname)
Return IndexwertAusWindream.ToString
Catch ex As Exception
'MsgBox(ex.Message)
Return Nothing
End Try
End Function
#End Region
End Class

View File

@@ -0,0 +1,486 @@
Imports WINDREAMLib
Imports WINDREAMLib.WMCOMEvent
Imports WINDREAMLib.WMEntity
Imports WINDREAMLib.WMObjectEditMode
Imports WINDREAMLib.WMSearchOperator
Imports WINDREAMLib.WMSearchRelation
Imports WMOBRWSLib
Imports WMOSRCHLib
Imports System.IO
Imports DigitalData.Modules.Logging
Public Class clsWindream_allgemein
#Region "+++++ Konstanten +++++"
Const DEBUG = AUS
Const AUS = 0
Const WINDREAM = 1
Const VARIABLEN = 2
#End Region
#Region "+++++ Variablen +++++"
Public Shared oConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public Shared oSession 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht)
Public Shared oBrowser As New WMOBRWSLib.ServerBrowser
Public Shared oDokumentTypen As WINDREAMLib.WMObjects
Private Shared oController As New WMOSearchController
Private Shared Logger As Logger
#End Region
#Region "+++++ Allgemeine Methoden und Funktionen +++++"
''' <summary>
''' Konstruktor für die windream-Klasse
''' </summary>
''' <remarks></remarks>
Sub New(LogConf As LogConfig)
Logger = LogConf.GetLogger
' wenn ein Fehler bei der Initialisierung auftrat
If Not Init() Then
' Nachricht ausgeben
Logger.Warn("Es trat ein Fehler bei der Initialisierung der Klasse windream auf. Bitte prüfen Sie ob der windream-Server aktiv ist und alle Dienste gestartet sind")
' das Programm "abschießen"
Process.GetCurrentProcess.Kill()
End If
End Sub
''' <summary>
''' Initialisiert die statische Klasse (Login, Session starten, usw.)
''' </summary>
''' <returns>Liefert True wenn das Anmelden erfolgreich war, sonst False</returns>
''' <remarks></remarks>
Public Function Init() As Boolean
Try
Try
' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen
oSession = CreateObject("Windream.WMSession", GetCurrentServer)
' Connection-Objekt instanziieren
oConnect = CreateObject("Windream.WMConnect")
'MsgBox("windrem init 'ed")
Catch ex As Exception
Return False
End Try
' wenn windream nicht angemeldet ist
If Not IsLoggedIn() Then
' Art der Anmeldung an windream festlegen
' 0x0L (also 0) = Standard windream Benutzer
' WM_MODULE_ID_DOCTYPEEDITOR_LIC = ermöglicht Zugriff auf die windream Management Funktionen (Z.B. zur Verwaltung der windream Dokumententypen, Auswahllisten, etc.)
' WM_MODULE_ID_INDEXSERVICE = ermöglicht der Session die Indexierungs-Events vom windream DMS-Service zu empfangen
oConnect.ModuleID = 0
' setzt die minimal erwartete windream-Version
oConnect.MinReqVersion = "3"
' Logger.Debug("Personifizierung'")
' -- Impersonifizierung nur möglich mit registry-eintrag --
'oConnect.UserName = "\digitaldata\SchreiberM"
'oConnect.Password = "pw"
' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen
oConnect.LoginSession(oSession)
Logger.Debug("windream-Server: '" & GetCurrentServer() & "'")
Logger.Debug("windream-UserName: '" & oConnect.UserName & "'")
If oSession.aLoggedin = False Then
Logger.Warn("Es konnte keine Verbindung mit dem windream-Server hergestellt werden")
Return False
End If
' AUSGABE VON SYSTEMINFORMATIONEN
' Gibt die Versionsart (Lizenztyp) also Small-Business-Edition (SBE), Small-Business-Extension (SBX)
' oder Business-Edition (BE) aus
'MsgBox("WindreamVersion: " & oSession.GetSystemInfo("WindreamVersion") & vbNewLine & "LicenceKey: " & oSession.GetSystemInfo("LicenceKey") & vbNewLine & _
' vbNewLine & "LicenceName: " & oSession.GetSystemInfo("LicenceName"))
'Dim WMCtrl As AISCONTROLDATACOMLib.AISControlData
'WMCtrl = New AISCONTROLDATACOMLib.AISControlData
'' liefert die Versionsnummer des Clients
'MsgBox(WMCtrl.WMWorkstationBuildNo)
'MsgBox(WMCtrl.W
'' liefert den Servernamen des angemeldeten windreams
'MsgBox(WMCtrl.WMServerName)
Try
oSession.SwitchEvents(WMCOMEventWMSessionNeedIndex, False)
' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine
' Ordnertypen ausgelesen werden
oDokumentTypen = oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End If
Logger.Debug("Alles OK - Erfolgreich angemeldet und Session aufgebaut")
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
#End Region
#Region "+++++ Funktionen die für den Objekttyp relevate Informationen zurückliefern +++++"
''' <summary>
''' Liefert alle Objekttypen des aktuellen Servers als windream-Objekte.
''' </summary>
''' <returns>Alle Objekttypen als WMObjects-Objekt</returns>
''' <remarks></remarks>
Public Function GetObjecttypesAsObjects() As WMObjects
Try
Return oDokumentTypen
Catch ex As Exception
Logger.Error(ex)
'clsLogger.AddError("Fehler beim Auslesen der Objekttypen: " & ex.Message, "clswindream.GetObjecttypesAsObjects")
Return Nothing
End Try
End Function
''' <summary>
''' Liefert alle Objekttypen des aktuellen Servers als Array aus Strings.
''' </summary>
''' <returns>Array mit allen Objekttypen als Strings</returns>
''' <remarks></remarks>
Public Function GetObjecttypesAsStrings() As String()
Dim objektTypenStr() As String
Try
Dim ocount As Integer = 0
For i As Integer = 0 To oDokumentTypen.Count
Dim obj = oDokumentTypen.Item(i).aName
If obj.ToString <> "Annotation" Then
ReDim Preserve objektTypenStr(ocount)
objektTypenStr(ocount) = obj.ToString
ocount += 1
End If
Next
Return objektTypenStr
Catch ex As Exception
Logger.Error(ex)
Return objektTypenStr
End Try
End Function
''' <summary>
''' Liefert alle Indexe eines Objekttypen.
''' </summary>
''' <param name="name">Name des Objekttyps</param>
''' <returns>Array mit allen Objekttyp zugeordneten Indexen als String</returns>
''' <remarks></remarks>
Public Function GetIndicesByObjecttype(ByVal name As String) As String()
Try
Dim oObjectType As WMObject
Dim oIndexAttributes As WMObjectRelation
Dim oIndexAttribute As WMObject
Dim oIndex As WMObject
Dim oRelProperties As WMObjectRelationClass
' den Objekttyp laden
oObjectType = oSession.GetWMObjectByName(WMEntityObjectType, name)
' Beziehung zu Indizes des Objekttyp auslesen
oIndexAttributes = oObjectType.GetWMObjectRelationByName("TypeAttributes")
' Array für Indizes vorbereiten
Dim aIndexNames(oIndexAttributes.Count - 1) As String
' alle Indizes durchlaufen
For j As Integer = 0 To oIndexAttributes.Count - 1
' aktuellen Index auslesen
oIndexAttribute = oIndexAttributes.Item(j)
' Eigenschaften des Index auslesen
oRelProperties = oIndexAttribute.GetWMObjectRelationByName("Attribute")
' Index aus den Eigenschaften auslesen
oIndex = oRelProperties.Item(0)
' Indexname speichern
aIndexNames(j) = oIndex.aName
Next
' Indexarray zurückgeben
Return aIndexNames
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
''' <summary>
''' Liefert einen Objekttyp als WMObject an Hand dessen Name.
''' </summary>
''' <param name="objekttypName">Name des Objekttyps</param>
''' <returns>Objekttyp als WMObject</returns>
''' <remarks></remarks>
Public Function GetObjecttypeByName(ByVal objekttypName As String) As WMObject
Try
' alle Objekttypen auslesen
Dim oObjectTypes As WMObjects = oSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument)
' alle Objekttypen durchlaufen und nach dem mit dem angegebenen Namen suchen
For Each oObjectType As WMObject In oObjectTypes
If oObjectType.aName = objekttypName Then
Return oObjectType
End If
Next
Return Nothing
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
''' <summary>
''' Überprüft ob der angegebene Index im Objekttyp existiert
''' </summary>
''' <param name="objekttyp">Name des zu durchsuchenden Objekttyps</param>
''' <param name="indexname">Name des zu suchenden Indexes</param>
''' <returns>Liefert True wenn der Index im Objekttyp existiert, sonst False</returns>
''' <remarks></remarks>
Public Function ExistIndexInObjekttyp(ByVal objekttyp As String, ByVal indexname As String) As Boolean
Try
Dim indexnamen() As String = GetIndicesByObjecttype(objekttyp)
If indexnamen Is Nothing Then Return False
For Each index As String In indexnamen
If index = indexname Then Return True
Next
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
#End Region
#Region "+++++ Allgemeine Funktionen die Informationen zurückliefern +++++"
''' <summary>
''' Liefert True wenn die windream-Session angemeldet ist und False für den Fall, dass die Session nicht eingeloggt ist.
''' </summary>
''' <returns>Anmeldestatus als Boolean</returns>
''' <remarks></remarks>
Public Function IsLoggedIn() As Boolean
Try
Return oSession.aLoggedin
Catch ex As Exception
Logger.Error(ex)
End Try
Return False
End Function
''' <summary>
''' Liefert den Servernamen an dem windream aktuell angemeldet ist.
''' </summary>
''' <returns>Servername als String</returns>
''' <remarks></remarks>
Public Function GetCurrentServer() As String
Try
Logger.Debug(oBrowser.GetCurrentServer.ToString)
Return oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer
Catch ex As Exception
Logger.Error(ex)
End Try
Return ""
End Function
'Public Function GetSharedCurrentServer() As String
' Try
' Return ClassWindream.oBrowser.GetCurrentServer
' Catch ex As Exception
' MsgBox("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen des windream-Servers")
' End Try
' Return ""
'End Function
'Liefert das Windream-Laufwerk des windream-Servers, in Form '[Laufwerksbuchstabe]:'. (z.B. 'W:')
'Laufwerksbuchstabe mit Doppelpunkt als String</returns>
'
'Public Function GetWindreamDriveLetter() As String
' Try
' Dim oControl As AISCONTROLDATACOMLib.AISControlData
' Dim sDrive As String = ""
' ' oControl = New AISCONTROLDATACOMLib.AISControlData
' ' sDrive = oControl.GetStringValue(&H10040003)
' ' Return sDrive & ":"
' Catch ex As Exception
' MsgBox("Fehlernachricht: " & ex.Message, MsgBoxStyle.Critical, "Fehler beim Auslesen des windream-Laufwerks")
' End Try
' Return ""
'End Function
''' <summary>
''' Liefert den Typen eines Indexes als Integer.
''' </summary>
''' <param name="indexname">Name des zu überprüfenden Indexfeldes</param>
''' <returns>Liefert eine Zahl, die einen Typen beschreibt</returns>
''' <remarks></remarks>
Public Function GetTypeOfIndexAsIntByName(ByVal indexname As String) As Integer
Try
Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
Dim vType = oAttribute.getVariableValue("dwAttrType")
Return vType
Catch ex As Exception
Return Nothing
End Try
End Function
Public Function GetValuesfromAuswahlliste(ByVal indexname As String) As Object
Try
'Dim oAttribute = oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
'Dim vType = oAttribute.getVariableValue("vItems")
'Return vType
Dim oChoiceList = oSession.GetWMObjectByName(WMEntityChoiceList, indexname)
If Err.Number = 0 And TypeName(oChoiceList) <> "Nothing" Then
Dim Values = oChoiceList
Values = oChoiceList.GetVariableValue("vItems")
Dim anz As Integer = 0
For Each CLItem In Values
If oChoiceList.aName IsNot Nothing Then
anz += 1
End If
Next
Dim strListe(anz - 1)
Dim zahl As Integer = 0
For Each CLItem In Values
If oChoiceList.aName IsNot Nothing Then
strListe(zahl) = CLItem
zahl += 1
End If
Next
Return strListe
Else
Logger.Warn("Auswahlliste: " & indexname & " nicht gefunden.")
Return Nothing
End If
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function WDObject_exists(wdobj_location As String)
Dim WDObject As WMObject
Try
WDObject = oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, wdobj_location.Substring(2))
If WDObject Is Nothing Then
Return False
Else
Logger.Debug("WDObject exists")
Return True
End If
Catch ex As Exception
' bei einem Fehler einen Eintrag in der Logdatei machen
Logger.Error(ex)
Return False
End Try
End Function
Public Function GetSearchDocuments(ByVal wdfLocation As String)
Try
Dim SearchName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1)
Dim SearchPath = wdfLocation.Substring(0, wdfLocation.Length - SearchName.Length)
Logger.Info("WMSearch: " & wdfLocation.ToLower)
If System.IO.File.Exists(wdfLocation.ToLower) Then
Logger.Debug("Search exists")
End If
oController.CheckSearchProfile(wdfLocation.ToLower) 'wdfLocation.ToLower)
Logger.Debug("oController erzeugt")
Dim suchTyp = oController.SearchProfileTargetProgID
Dim ExSettings As Object
Dim oSearch As Object
ExSettings = oController.SearchProfileExSettings
If ExSettings = 0 Then ExSettings = 7
Dim srchQuick As WMOSRCHLib.WMQuickSearch = CreateObject("WMOSrch.WMQuickSearch")
Dim srchIndex As WMOSRCHLib.WMIndexSearch = CreateObject("WMOSrch.WMIndexSearch")
Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch")
Logger.Debug("WD Objekte in GetSearchDocuments erzeugt")
Logger.Debug(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"
srchQuick.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchQuick.WMSession)
srchQuick.ClearSearch()
srchQuick.SearchProfilePath = SearchPath
srchQuick.LoadSearchProfile(SearchName)
oSearch = srchQuick.GetSearch()
Case "WMOSRCH.WMINDEXSEARCH"
srchIndex.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
Logger.Debug("Session created...")
oConnect.LoginSession(srchIndex.WMSession)
Logger.Debug("LoginSession...")
srchIndex.SearchProfilePath = SearchPath
Logger.Debug("SearchPath...")
srchIndex.LoadSearchProfile(SearchName)
Logger.Debug("LoadSearchProfile...")
oSearch = srchIndex.GetSearch()
Logger.Debug("GetSearch...")
Case "WMOSRCH.WMOBJECTTYPESEARCH"
srchObjectType.WMSession = CreateObject("Windream.WMSession", GetCurrentServer)
oConnect.LoginSession(srchObjectType.WMSession)
srchObjectType.ClearSearch()
srchObjectType.SearchProfilePath = SearchPath
srchObjectType.LoadSearchProfile(SearchName)
oSearch = srchObjectType.GetSearch()
Case Else
Logger.Warn("KEIN GÜLTIGER WINDREAM-SUCHTYP")
Return Nothing
End Select
Dim WMObjects As Object
WMObjects = oSearch.Execute
Logger.Debug("WD Objekte werden zurückgegeben")
Return oSearch.execute
Catch ex As Exception
' bei einem Fehler einen Eintrag in der Logdatei machen
Logger.Error(ex)
Return Nothing
End Try
End Function
#End Region
End Class

View File

@@ -0,0 +1,591 @@
Imports Independentsoft.Email.Mime
Imports System.Text.RegularExpressions
Imports WINDREAMLib
Imports DigitalData.EMLProfiler.ClassCurrent
Imports System.IO
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Public Class clsWorkEmail
Private Shared Logger As Logger
Private _email As clsEmail
Private _Database As clsDatabase
Private _windream As clsWindream_allgemein
Private _windream_index As clsWindream_Index
Private _firebird As Firebird
Private _worked_email As Boolean = False
Sub New(LogConf As LogConfig, ConStr As String, FB_DATASOURCE As String, FB_DATABASE As String, FB_USER As String, FB_PW As String)
Logger = LogConf.GetLogger
_email = New clsEmail(LogConf)
_Database = New clsDatabase(LogConf, ConStr)
_windream = New clsWindream_allgemein(LogConf)
_windream_index = New clsWindream_Index(LogConf)
_firebird = New Firebird(LogConf, FB_DATASOURCE, FB_DATABASE, FB_USER, FB_PW)
End Sub
Public Function WORK_MAIL(msg As Message)
Try
CURRENT_MAIL_BODY = ""
CURRENT_MAIL_BODY_Substr1 = ""
CURRENT_MAIL_BODY_Substr2 = ""
CURRENT_MAIL_MESSAGE = msg
CURRENT_MAIL_SUBJECT = msg.Subject.ToUpper
If IsNothing(CURRENT_MAIL_SUBJECT) Then
CURRENT_MAIL_SUBJECT = ""
End If
SAVE2TEMP()
If CURRENT_MAIL_SUBJECT.Contains("[PROCESSMANAGER]") Then
PROCESS_MANAGER_IN()
ElseIf msg.Subject.Contains("[ADDI]") Then
Else
Logger.Debug(String.Format("No relation configured for this email - Subject[{0}]", msg.Subject))
COMMON_EMAIL_IN
End If
INSERT_HISTORY
Catch ex As Exception
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in WORK_MAIL: " & ex.Message & "MESSAGE_ID: " & msg.MessageID)
Return False
End Try
End Function
Private Function PROCESS_MANAGER_IN() As Boolean
Try
Dim oDel_email As Boolean = False
Logger.Info(String.Format("PM-related message found....[{0}]", CURRENT_MAIL_MESSAGE.Subject))
Logger.Debug(String.Format("PM-related message found....[{0}]", CURRENT_MAIL_MESSAGE.Subject))
Dim oExpression = "PROCESS_NAME = 'ProcessManager'"
'Filter the rows using Select() method of DataTable
Dim TEMP_PROCESS_PROFILE_DT As DataTable = DT_POLL_PROCESS
Dim PM_ROW As DataRow() = TEMP_PROCESS_PROFILE_DT.Select(oExpression)
For Each row As DataRow In PM_ROW
WM_REFERENCE_INDEX = row("WM_REFERENCE_INDEX")
WM_VECTOR_LOG = row("WM_VECTOR_LOG")
WM_OBJEKTTYPE = row("WM_OBJEKTTYPE")
WM_IDX_BODY_TEXT = row("WM_IDX_BODY_TEXT")
WM_IDX_BODY_SUBSTR_LENGTH = row("WM_IDX_BODY_SUBSTR_LENGTH")
COPY2HDD(row("COPY_2_HDD"), row("PATH_EMAIL_TEMP"), row("PATH_EMAIL_ERRORS"), False)
EXTRACT_BODY()
oDel_email = row("DELETE_MAIL")
Next
If CURRENT_MAIL_SUBJECT.Contains("[PROCESSMANAGER][EA]") Then
Logger.Info(String.Format("Message referencing to EASY-APPROVAL...."))
Logger.Debug(String.Format("Message referencing to EASY-APPROVAL...."))
CURRENT_MAIL_PROCESS_NAME = "DD EasyApproval via Mail"
If CURRENT_MAIL_BODY_Substr1 <> "" Then
MessageError = False
If GET_DOC_INFO() = True Then
If DT_STEPS.Rows.Count > 0 Then
WORK_POLL_STEPS()
Else
Logger.Info("No steps configured for this Profile ....")
End If
End If
End If
EMAIL_DELETE(oDel_email)
End If
Return True
Catch ex As Exception
Logger.Error(ex)
'Logger.Debug("Unexpected Error in PROCESS_MANAGER_IN: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID)
Return False
End Try
End Function
Function COMMON_EMAIL_IN()
Try
Dim oDel_email As Boolean = False
Logger.Info(String.Format("COMMON_EMAIL_IN...Subject [{0}]", CURRENT_MAIL_MESSAGE.Subject))
Logger.Debug(String.Format("COMMON_EMAIL_IN...Subject [{0}]", CURRENT_MAIL_MESSAGE.Subject))
Dim oExpression = "PROCESS_NAME = 'Attachment Sniffer'"
CURRENT_MAIL_PROCESS_NAME = "Attachment Sniffer"
'Filter the rows using Select() method of DataTable
Dim TEMP_PROCESS_PROFILE_DT As DataTable = DT_POLL_PROCESS
Dim PM_ROW As DataRow() = TEMP_PROCESS_PROFILE_DT.Select(oExpression)
For Each row As DataRow In PM_ROW
Try
WM_REFERENCE_INDEX = row("WM_REFERENCE_INDEX")
Catch ex As Exception
WM_REFERENCE_INDEX = Nothing
End Try
Try
WM_VECTOR_LOG = row("WM_VECTOR_LOG")
Catch ex As Exception
WM_VECTOR_LOG = Nothing
End Try
WM_OBJEKTTYPE = row("WM_OBJEKTTYPE")
WM_IDX_BODY_TEXT = row("WM_IDX_BODY_TEXT")
WM_IDX_BODY_SUBSTR_LENGTH = row("WM_IDX_BODY_SUBSTR_LENGTH")
COPY2HDD(row("COPY_2_HDD"), row("PATH_EMAIL_TEMP"), row("PATH_EMAIL_ERRORS"), True)
EXTRACT_BODY()
EXTRACT_ATTACHMENTS(row("PATH_EMAIL_TEMP"), row("PATH_EMAIL_ERRORS"))
oDel_email = row("DELETE_MAIL")
Next
EMAIL_DELETE(oDel_email)
Return True
Catch ex As Exception
Logger.Error(ex)
'Logger.Debug("Unexpected Error in PROCESS_MANAGER_IN: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID)
Return False
End Try
End Function
Private Function SAVE2TEMP()
Try
Dim oTempFilename As String = Path.Combine(Path.GetTempPath, CURRENT_MAIL_MESSAGE.GetFileName)
If File.Exists(oTempFilename) = True Then
File.Delete(oTempFilename)
End If
CURRENT_MAIL_MESSAGE.Save(oTempFilename, True)
CURRENT_TEMP_MAIL_PATH = oTempFilename
'Datei in Array zum Templöschen speichern
TEMP_FILES.Add(oTempFilename)
Catch ex As Exception
Logger.Error(ex)
CURRENT_TEMP_MAIL_PATH = Nothing
'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
Return False
End Try
End Function
Private Function COPY2HDD(copy_2_hdd As Boolean, pathemailtemp As String, pathemail_errors As String, messageid As Boolean)
Try
If copy_2_hdd = True Then
Logger.Debug("COPY_2_HDD is ACTIVE!")
PATH_TEMP = pathemailtemp
PATH_ERROR = pathemail_errors
If Directory.Exists(PATH_TEMP) Then
Dim oTempFilename = PATH_TEMP
If messageid = True Then
oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.MessageID & ".eml"
Else
oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.GetFileName
End If
Dim cleanPath As String = String.Join("", oTempFilename.Split(Path.GetInvalidPathChars()))
If System.IO.File.Exists(cleanPath) = False Then
CURRENT_MAIL_MESSAGE.Save(cleanPath, True)
Else
Logger.Info("EMail (" & CURRENT_MAIL_MESSAGE.Subject & ") already existing!", False, "RUN_THREAD.COPY_2_HDD")
End If
End If
End If
Catch ex As Exception
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
Return False
End Try
End Function
Private Function EXTRACT_BODY()
Dim oDTFunctionRegex As DataTable = _Database.Return_Datatable("SELECT * FROM TBDD_FUNCTION_REGEX WHERE FUNCTION_NAME = 'EMAIL_PROFILER - BODY REMOVE NewLine'")
If CURRENT_TEMP_MAIL_PATH <> Nothing Then
If File.Exists(CURRENT_TEMP_MAIL_PATH) Then
Dim msg_email As New Independentsoft.Email.Mime.Message(CURRENT_TEMP_MAIL_PATH)
If IsNothing(msg_email.Body) Then
Dim oAllBodyParts As New BodyPartCollection()
oAllBodyParts.Add(msg_email.BodyParts)
oAllBodyParts.Add(GetChildren(msg_email.BodyParts))
For Each bodyPart As BodyPart In oAllBodyParts
If bodyPart.ContentType IsNot Nothing AndAlso bodyPart.ContentType.Type = "text" AndAlso bodyPart.ContentType.SubType = "plain" Then
Logger.Debug(String.Format("BODY1-Text is....#{0}", bodyPart.Body))
If CURRENT_MAIL_BODY <> bodyPart.Body Then
CURRENT_MAIL_BODY = bodyPart.Body
End If
ElseIf bodyPart.ContentType IsNot Nothing AndAlso bodyPart.ContentType.Type = "text" AndAlso bodyPart.ContentType.SubType = "html" Then
Logger.Debug(String.Format("bodyhtml....#{0}", bodyPart.Body))
If CURRENT_MAIL_BODY = "" Then
CURRENT_MAIL_BODY = bodyPart.Body
Logger.Debug(String.Format("bodyhtml....#{0}", bodyPart.Body))
End If
End If
Next
Else
CURRENT_MAIL_BODY = msg_email.Body
End If
Else
Logger.Warn($"If cause 2: {CURRENT_TEMP_MAIL_PATH} not existing")
End If
Else
Logger.Warn($"EXTRACT_BODY If cause 1: CURRENT_TEMP_MAIL_PATH is NOTHING")
End If
Try
'Dim oAllBodyParts As New BodyPartCollection()
'oAllBodyParts.Add(CURRENT_MAIL_MESSAGE.BodyParts)
'oAllBodyParts.Add(GetChildren(CURRENT_MAIL_MESSAGE.BodyParts))
'For Each bodyPart As BodyPart In oAllBodyParts
' If bodyPart.ContentType IsNot Nothing AndAlso bodyPart.ContentType.Type = "text" AndAlso bodyPart.ContentType.SubType = "plain" Then
' Logger.Debug(String.Format("BODY1-Text is....#{0}", bodyPart.Body))
' CURRENT_MAIL_BODY = bodyPart.Body
' ElseIf bodyPart.ContentType IsNot Nothing AndAlso bodyPart.ContentType.Type = "text" AndAlso bodyPart.ContentType.SubType = "html" Then
' Logger.Debug(String.Format("bodyhtml....#{0}", bodyPart.Body))
' If CURRENT_MAIL_BODY = "" Then
' CURRENT_MAIL_BODY = bodyPart.Body
' Logger.Debug(String.Format("bodyhtml....#{0}", bodyPart.Body))
' End If
' End If
'Next
CURRENT_MAIL_BODY = Trim(CURRENT_MAIL_BODY)
If CURRENT_MAIL_BODY = String.Empty Then
Logger.Warn("Mailbody is empty. Email can not be processed! - Please check the html-structure")
Logger.Info("EXCEPTION - Mailbody is empty.Email can not be processed! - Please check the html-structure")
MessageError = True
Return False
End If
Dim oFirstindex = CURRENT_MAIL_BODY.IndexOf(Chr(13))
If IsNothing(oFirstindex) Then
oFirstindex = CURRENT_MAIL_BODY.IndexOf(Chr(10))
End If
Logger.Debug(String.Format("firstindex....[{0}]", oFirstindex))
Try
CURRENT_MAIL_BODY_Substr1 = CURRENT_MAIL_BODY.Substring(0, oFirstindex)
CURRENT_MAIL_BODY_Substr1 = RTrim(LTrim(CURRENT_MAIL_BODY_Substr1))
Catch ex As Exception
Logger.Warn("Error in Substring 144: " & ex.Message)
Logger.Warn("CURRENT_MAIL_BODY: " & CURRENT_MAIL_BODY)
Logger.Warn("oFirstindex: " & oFirstindex)
CURRENT_MAIL_BODY_Substr1 = ""
End Try
Logger.Debug(String.Format("MailBody-Substring:...[{0}]", CURRENT_MAIL_BODY_Substr1))
'now trying to get the text before Masterline
If WM_IDX_BODY_TEXT <> String.Empty And WM_IDX_BODY_SUBSTR_LENGTH <> 0 And oDTFunctionRegex.Rows.Count = 1 Then
Dim pattern As String = oDTFunctionRegex.Rows(0).Item("REGEX")
' Instantiate the regular expression object.
Dim r As Regex = New Regex(pattern, RegexOptions.Multiline)
' Match the regular expression pattern against a text string.
Dim m As Match = r.Match(CURRENT_MAIL_BODY)
If m.Success Then
If Not IsNothing(m.Value) Then
If m.Value.Length > WM_IDX_BODY_SUBSTR_LENGTH Then
Try
Logger.Info($"Getting the Substring of body - Length: {WM_IDX_BODY_SUBSTR_LENGTH}...")
CURRENT_MAIL_BODY_Substr2 = m.Value.Substring(0, WM_IDX_BODY_SUBSTR_LENGTH)
Catch ex As Exception
Logger.Warn("Error in Substring 168: " & ex.Message)
Logger.Warn("m.Value: " & m.Value)
Logger.Warn("WM_IDX_BODY_SUBSTR_LENGTH: " & WM_IDX_BODY_SUBSTR_LENGTH.ToString)
CURRENT_MAIL_BODY_Substr2 = ""
End Try
Else
Logger.Info($"m.Value.Length < WM_IDX_BODY_SUBSTR_LENGTH, so simply m.Value will be taken...")
CURRENT_MAIL_BODY_Substr2 = m.Value
End If
End If
End If
'Dim matchcount As Integer = 0
'Do While m.Success
' matchcount += 1
' Console.WriteLine("Match" & (matchcount))
' Dim i As Integer
' For i = 1 To 2
' Dim g As Group = m.Groups(i)
' Console.WriteLine("Group" & i & "='" & g.ToString() & "'")
' Dim cc As CaptureCollection = g.Captures
' Dim j As Integer
' For j = 0 To cc.Count - 1
' Dim c As Capture = cc(j)
' Console.WriteLine("Capture" & j & "='" & c.ToString() _
' & "', Position=" & c.Index)
' Next
' Next
' m = m.NextMatch()
'Loop
Logger.Info(String.Format("MailBody-Substring After RecognizeString:...[{0}]", CURRENT_MAIL_BODY_Substr2))
End If
Catch ex As Exception
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
MessageError = True
Return False
End Try
End Function
Private Function EXTRACT_ATTACHMENTS(pathemailtemp As String, pathemail_errors As String)
PATH_TEMP = pathemailtemp
PATH_ERROR = pathemail_errors
Try
If CURRENT_TEMP_MAIL_PATH <> Nothing Then
If File.Exists(CURRENT_TEMP_MAIL_PATH) Then
Dim msg_email As New Independentsoft.Email.Mime.Message(CURRENT_TEMP_MAIL_PATH)
For Each attachment As Attachment In msg_email.GetAttachments
If Path.GetExtension(attachment.GetFileName).ToUpper.Contains("PDF") Then
Dim sGUID = System.Guid.NewGuid.ToString()
Dim oAttachmentFilename
Try
oAttachmentFilename = Path.Combine(PATH_TEMP, $"{sGUID}{Path.GetExtension(attachment.GetFileName)}")
If System.IO.File.Exists(oAttachmentFilename) = False Then
attachment.Save(oAttachmentFilename)
INSERT_HISTORY_FB(sGUID, attachment.GetFileName)
Else
Logger.Info("Attachment (" & oAttachmentFilename & ") already existing!", False, "EXTRACT_ATTACHMENTS")
End If
Catch ex As Exception
Logger.Warn($"Error while creating and saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFilename}")
MessageError = True
Return False
End Try
End If
Next
Else
Logger.Warn($"If cause 2 EXTRACT_ATTACHMENTS: {CURRENT_TEMP_MAIL_PATH} not existing")
End If
Else
Logger.Warn($"EXTRACT_ATTACHMENTSIf cause 1: CURRENT_TEMP_MAIL_PATH is NOTHING")
End If
Catch ex As Exception
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
MessageError = True
Return False
End Try
End Function
Private Function INSERT_HISTORY()
If MessageError = False Then
Dim ins = $"INSERT INTO TBEMLP_HISTORY (WORK_PROCESS,EMAIL_MSGID,EMAIL_SUBJECT,EMAIL_DATE,EMAIL_BODY,EMAIL_SUBSTRING1,EMAIL_SUBSTRING2) VALUES " &
$"('{CURRENT_MAIL_PROCESS_NAME}'," &
$"'{CURRENT_MAIL_MESSAGE.MessageID.Replace("<", "").Replace(">", "")}'," &
$"'{CURRENT_MAIL_MESSAGE.Subject}'," &
$"'{CURRENT_MAIL_MESSAGE.Date}'," &
$"'{CURRENT_MAIL_BODY}'," &
$"'{CURRENT_MAIL_BODY_Substr1}'," &
$"'{CURRENT_MAIL_BODY_Substr2}')"
_Database.Execute_non_Query(ins)
End If
End Function
Private Function INSERT_HISTORY_FB(oGUID As String, ATTMT1 As String)
If MessageError = False Then
Dim ins = $"INSERT INTO TBEDM_EMAIL_PROFILER_HISTORY (WORK_PROCESS,EMAIL_MSGID,EMAIL_FROM,EMAIL_SUBJECT,EMAIL_DATETIME,EMAIL_BODY,EMAIL_SUBSTRING1,EMAIL_SUBSTRING2,EMAIL_ATTMT1) VALUES " &
$"('{CURRENT_MAIL_PROCESS_NAME}'," &
$"'{oGUID}'," &
$"'{CURRENT_MAIL_MESSAGE.From.EmailAddress}'," &
$"'{CURRENT_MAIL_MESSAGE.Subject}'," &
$"'{CURRENT_MAIL_MESSAGE.Date}'," &
$"'{CURRENT_MAIL_BODY}'," &
$"'{CURRENT_MAIL_BODY_Substr1}'," &
$"'{CURRENT_MAIL_BODY_Substr2}'," &
$"'{ATTMT1}')"
_firebird.ExecuteNonQuery(ins)
End If
End Function
Private Function GetChildren(ByVal bodyParts As BodyPartCollection) As BodyPartCollection
Dim children As New BodyPartCollection()
For i As Integer = 0 To bodyParts.Count - 1
children.Add(GetChildren(bodyParts(i).BodyParts))
children.Add(bodyParts(i))
Next
Return children
End Function
Private Function EMAIL_DELETE(del As Boolean)
If del = True And MessageError = False And _worked_email = True Then
_email.DELETE_EMAIL(CURRENT_MAIL_MESSAGE.MessageID)
End If
End Function
Private Function WORK_POLL_STEPS() As Boolean
Try
_worked_email = False
For Each row As DataRow In DT_STEPS.Rows
POLL_STEP_GUID = row.Item("GUID")
POLL_STEP_PROCESS_ID = row.Item("PROCESS_ID")
POLL_KEYWORDS = row.Item("KEYWORDS_BODY")
KEYWORDS_SPLIT = POLL_KEYWORDS.Split(";")
For Each str As String In KEYWORDS_SPLIT
If CURRENT_MAIL_BODY_Substr1.ToUpper = str.ToUpper Then
_worked_email = True
Logger.Info(String.Format("Found Keyword '{0}' in MessageBody", str))
Dim sql As String = String.Format("SELECT * FROM TBEMLP_POLL_INDEXING_STEPS WHERE STEP_ID = {0} AND ACTIVE = 1", POLL_STEP_GUID)
DT_INDEXING_STEPS = _Database.Return_Datatable(sql)
If DT_INDEXING_STEPS.Rows.Count > 0 Then
WORK_INDEXING_STEPS()
Else
Logger.Info("No Indexing Steps found?! - SQL: " & sql)
End If
End If
Next
Next
If _worked_email = False Then
Dim sql As String = String.Format("SELECT * FROM TBEMLP_POLL_INDEXING_STEPS WHERE STEP_ID = {0} AND ACTIVE = 1 AND USE_FOR_DIRECT_ANSWER = 1", POLL_STEP_GUID)
DT_INDEXING_STEPS = _Database.Return_Datatable(sql)
WORK_INDEXING_STEPS()
_worked_email = True
End If
'Now indexing the LogIndex
If Not IsNothing(WM_VECTOR_LOG) And (Not IsDBNull(WM_VECTOR_LOG)) And (WM_VECTOR_LOG <> "") Then
Dim msg = Now.ToString & " - " & CURRENT_MAIL_PROCESS_NAME
IndexFile(WM_VECTOR_LOG, msg, False)
End If
'Now indexing the Body-Message Index
If CURRENT_MAIL_BODY_Substr2 <> String.Empty And WM_IDX_BODY_TEXT <> String.Empty Then
IndexFile(WM_IDX_BODY_TEXT, CURRENT_MAIL_BODY_Substr2, True)
End If
Return True
Catch ex As Exception
MessageError = True
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in WORK_POLL_STEPS: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
Return False
End Try
End Function
Private Function WORK_INDEXING_STEPS()
Try
For Each row As DataRow In DT_INDEXING_STEPS.Rows
Dim INDEXNAME As String = row.Item("INDEXNAME")
Dim INDEXVALUE As String = row.Item("INDEXVALUE")
IndexFile(INDEXNAME, INDEXVALUE, False)
Next
Catch ex As Exception
MessageError = True
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in WORK_INDEXING_STEPS: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
Return False
End Try
End Function
Private Function IndexFile(oidxname As String, oidxvalue As String, oConcat_act_Value As Boolean)
Dim OArrIndex() As String
ReDim Preserve OArrIndex(0)
OArrIndex(0) = oidxname
If oConcat_act_Value = True Then
Dim oActValue = _windream_index.GetValueforIndex_WMFile(CURRENT_WM_DOC, oidxname)
If Not IsNothing(oActValue) Then
If oActValue.ToString.Length > 0 Then
If oActValue <> oidxvalue Then
oidxvalue = oActValue & vbNewLine & oidxvalue
End If
End If
End If
End If
Dim oArrValue() As String
Dim oMyArray()
ReDim oMyArray(0)
oMyArray(0) = oidxvalue
Dim oVektorArray()
oVektorArray = _windream_index.GetVektorArray(CURRENT_WM_DOC, oidxname, oMyArray, True)
If oVektorArray Is Nothing = False Then
'Zielindex ist ein Vektorindex
ReDim oArrValue(oVektorArray.Length - 1)
Array.Copy(oVektorArray, oArrValue, oVektorArray.Length)
If oArrValue Is Nothing Then
Logger.Warn($"arrValue from vektor for index {oidxname} is nothing! Value: {oidxvalue} - no indexing!")
Logger.Info($"arrValue from vektor for index {oidxname} is nothing! Value: {oidxvalue} - no indexing!")
Return False
End If
Else
'Es handelt sich um einen Einfachindex
ReDim oArrValue(0)
oArrValue(0) = oidxvalue
End If
If oArrValue Is Nothing = False Then
Return _windream_index.RunIndexing(CURRENT_WM_DOC, OArrIndex, oArrValue, WM_OBJEKTTYPE)
Else
Logger.Warn($"arrValue for index {oidxname} is nothing! Value: {oidxvalue} - no indexing!")
Logger.Info($"arrValue for index {oidxname} is nothing! Value: {oidxvalue} - no indexing!")
Return False
End If
End Function
Private Function GET_DOC_INFO()
Try
Dim DOC_ID = REGEX_CHECK_DOC_ID(CURRENT_MAIL_SUBJECT)
If Not IsNothing(DOC_ID) Then
Dim DT_BASE_ATTR As DataTable = _Database.Return_DatatableCS("SELECT * FROM BaseAttributes WHERE dwDocID = " & DOC_ID, WM_CON_STRING)
If Not IsNothing(DT_BASE_ATTR) Then
If DT_BASE_ATTR.Rows.Count = 1 Then
CURRENT_DOC_ID = DOC_ID
Dim sql = String.Format("Select[dbo].[FNDD_GET_WINDREAM_FILE_PATH]({0},'{1}')", CURRENT_DOC_ID, WM_DRIVE)
CURRENT_DOC_PATH = _Database.Execute_Scalar(sql)
Logger.Debug("CURRENT_DOC_PATH: " & CURRENT_DOC_PATH)
CURRENT_WM_DOC = Nothing
Dim WMDOC As WMObject
Try
WMDOC = _windream.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, CURRENT_DOC_PATH.Substring(2))
CURRENT_WM_DOC = WMDOC
Return True
Catch ex As Exception
Logger.Warn("error while creating WMObject in (GET_DOC_INFO): " & ex.Message)
Return False
End Try
Else
Logger.Warn("No record found for dwDocID " & DOC_ID)
Return False
End If
Else
Logger.Warn("DT_BASE_ATTR is nothing")
Return False
End If
Else
Logger.Warn("Could not get a DOC-ID via regex!")
Return False
End If
Catch ex As Exception
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in GET_DOC_INFO: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID)
MessageError = True
Return False
End Try
End Function
Public Function REGEX_CHECK_DOC_ID(SearchString As String)
Try
Dim regex As Regex = New Regex("\[DID#{1}([0-9]+)]{1}")
Logger.Debug("REGEX_String before replacing: '" & SearchString & "'")
' Regulären Ausdruck zum Auslesen der windream-Indexe definieren
Dim elements As MatchCollection = regex.Matches(SearchString)
Dim result = ""
For Each element As Match In elements
result = element.Groups(1).Value
Logger.Debug(String.Format("Found Regex(0) {0} in SearchString", element.Groups(0).Value))
Logger.Debug(String.Format("Found Regex(1) {0} in SearchString", element.Groups(1).Value))
Next
Return result
Catch ex As Exception
MessageError = True
Logger.Error(ex)
'clsLogger.AddError("Unexpected error: " & ex.Message, "REGEX_CHECK_DOC_ID")
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,158 @@
Imports DigitalData.EMLProfiler.ClassCurrent
Imports Independentsoft.Email.Mime
Imports DigitalData.Modules.Logging
Public Class clsWorker
Private Shared Logger As Logger
Private MyLogger As LogConfig
Private _email As clsEmail
Private _emailIMAP As clsEmailIMAP
Private _Database As clsDatabase
Private _windream As clsWindream_allgemein
Private _windream_index As clsWindream_Index
Private _workmail As clsWorkEmail
Private _wrapper As clsEncryption
Private _POLL_PROFILEID As Integer = 0
Dim cs As String
Sub New(LogConf As LogConfig, ConStr As String, POLL_PROFILEID As Integer, FB_DATASOURCE As String, FB_DATABASE As String, FB_USER As String, FB_PW As String)
Logger = LogConf.GetLogger
_email = New clsEmail(LogConf)
_emailIMAP = New clsEmailIMAP(LogConf)
_Database = New clsDatabase(LogConf, ConStr)
cs = ConStr
_windream = New clsWindream_allgemein(LogConf)
_windream_index = New clsWindream_Index(LogConf)
_workmail = New clsWorkEmail(LogConf, ConStr, FB_DATASOURCE, FB_DATABASE, FB_USER, FB_PW)
_wrapper = New clsEncryption("!35452didalog=", LogConf)
_POLL_PROFILEID = POLL_PROFILEID
End Sub
Public Sub Start_WorkingProfiles()
Try
If _Database.Init(cs) = True Then
Logger.Debug("now windream_init...... ")
If _windream.Init = True Then
Logger.Debug("windream_initialized!")
Dim osql As String = "SELECT * FROM TBEMLP_POLL_PROFILES"
If _POLL_PROFILEID = 0 Then
osql &= " WHERE ACTIVE = 1 order by SEQUENCE"
Else
osql &= " WHERE GUID = " & _POLL_PROFILEID
End If
Dim DT_TBDD_EMAIL = _Database.Return_Datatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
Dim DT_PROFILES = _Database.Return_Datatable(osql)
If Not IsNothing(DT_PROFILES) Then
If DT_PROFILES.Rows.Count > 0 Then
Logger.Debug("count of active profiles: " & DT_PROFILES.Rows.Count.ToString)
For Each DR As DataRow In DT_PROFILES.Rows
CURRENT_PROFILE_GUID = DR.Item("GUID")
DT_POLL_PROCESS = Nothing
Dim sql = String.Format("SELECT * FROM TBEMLP_POLL_PROCESS WHERE PROFILE_ID = {0} AND ACTIVE = 1", CURRENT_PROFILE_GUID)
DT_POLL_PROCESS = _Database.Return_Datatable(sql)
If Not IsNothing(DT_POLL_PROCESS) Then
If DT_POLL_PROCESS.Rows.Count = 0 Then
Logger.Info("No processes configured for this Email-Profile - " & sql)
Continue For
Else
DT_STEPS = Nothing
DT_STEPS = _Database.Return_Datatable(String.Format("SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {0} AND T1.ACTIVE = 1", CURRENT_PROFILE_GUID))
End If
Else
Logger.Warn("DT_POLL_PROCESS is nothing")
Continue For
End If
CURRENT_EMAIL_GUID = 0
MAIL_FROM = ""
MAIL_SERVER = ""
MAIL_USER = ""
MAIL_USER_PW = ""
CURRENT_POLL_TYPE = DR.Item("POLL_TYPE")
Logger.Info(String.Format("Working on profile: ({0}-{1}-{2}) ", DR.Item("GUID"), DR.Item("PROFILE_NAME"), CURRENT_POLL_TYPE))
CURRENT_EMAIL_GUID = DR.Item("EMAIL_CONF_ID")
Dim EMAIL_PROF_TABLE As DataTable = DT_TBDD_EMAIL
'Presuming the DataTable has a column named Date.
Dim expression As String
expression = "GUID = " & CURRENT_EMAIL_GUID
'Filter the rows using Select() method of DataTable
Dim FilteredRows As DataRow() = EMAIL_PROF_TABLE.Select(expression)
If FilteredRows.Length = 1 Then
For Each row As DataRow In FilteredRows
MAIL_FROM = row("EMAIL_FROM")
MAIL_SERVER = row("EMAIL_SMTP")
MAIL_USER = row("EMAIL_USER")
MAIL_USER_PW = row("EMAIL_PW")
MAIL_PORT = row("PORT")
Logger.Debug(String.Format("{0}-{1}", MAIL_FROM, MAIL_SERVER))
Dim PWPlain = _wrapper.DecryptData(MAIL_USER_PW)
If Not IsNothing(PWPlain) Then
If PWPlain <> "" Then
MAIL_USER_PW = PWPlain
Else
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort")
End If
Else
Logger.Warn("PWPlain is nothing - Could not decrypt passwort")
End If
Next
MAIL_LIST.Clear()
If MAIL_SERVER <> "" Then
Dim pollresult As Boolean = False
Select Case CURRENT_POLL_TYPE
Case "POP"
pollresult = _email.POP3_COLLECT()
Case "IMAP"
pollresult = _emailIMAP.IMAP_COLLECT()
End Select
If pollresult = False Then
Logger.Warn(String.Format("Error while polling emails...."))
Continue For
End If
If MAIL_LIST.Count() > 0 Then
Logger.Info(String.Format("Worked/Pulled: {0} E-Mails", MAIL_LIST.Count()))
For Each pulled_msg As Message In MAIL_LIST
If _workmail.WORK_MAIL(pulled_msg) = True Then
End If
Next
Else
Logger.Info(String.Format("No emails for profile!"))
End If
Else
Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!")
End If
_Database.Execute_non_Query("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & DR.Item("GUID").ToString)
Else
Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found! Check wether Email-Profile is active!")
End If
Next
Try
'Delete all Tempfiles
For Each _file In TEMP_FILES
System.IO.File.Delete(_file)
Next
Catch ex As Exception
End Try
Else
Logger.Info("No active profiles")
End If
End If
Else
Logger.Info("windream could not be initialized!!")
End If
_Database.Execute_non_Query("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1")
End If
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub
End Class

View File

@@ -0,0 +1 @@
75ca9606c59e96beda488f8b876cf3665b773d22

View File

@@ -0,0 +1,27 @@
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.dll.config
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.pdb
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.xml
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.Modules.Database.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.Modules.Logging.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\Independentsoft.Email.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\Interop.WINDREAMLib.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\NLog.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\FirebirdSql.Data.FirebirdClient.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\Oracle.ManagedDataAccess.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.Modules.Database.pdb
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.Modules.Database.xml
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.Modules.Database.dll.config
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.Modules.Logging.pdb
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.Modules.Logging.xml
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\Independentsoft.Email.xml
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\NLog.xml
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\FirebirdSql.Data.FirebirdClient.pdb
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.vbprojAssemblyReference.cache
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.Resources.resources
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.vbproj.GenerateResource.cache
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.vbproj.CoreCompileInputs.cache
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.vbproj.CopyComplete
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.dll
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.xml
E:\SchreiberM\Visual Studio\GIT\DD_EmailProfiler\App\DigitalData.EMLProfiler\obj\Debug\DigitalData.EMLProfiler.pdb

View File

@@ -0,0 +1,108 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
DigitalData.EMLProfiler
</name>
</assembly>
<members>
<member name="T:DigitalData.EMLProfiler.My.Resources.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:DigitalData.EMLProfiler.My.Resources.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:DigitalData.EMLProfiler.My.Resources.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.#ctor(DigitalData.Modules.Logging.LogConfig)">
<summary>
Konstruktor für die windream-Klasse
</summary>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.Init">
<summary>
Initialisiert die statische Klasse (Login, Session starten, usw.)
</summary>
<returns>Liefert True wenn das Anmelden erfolgreich war, sonst False</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetObjecttypesAsObjects">
<summary>
Liefert alle Objekttypen des aktuellen Servers als windream-Objekte.
</summary>
<returns>Alle Objekttypen als WMObjects-Objekt</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetObjecttypesAsStrings">
<summary>
Liefert alle Objekttypen des aktuellen Servers als Array aus Strings.
</summary>
<returns>Array mit allen Objekttypen als Strings</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetIndicesByObjecttype(System.String)">
<summary>
Liefert alle Indexe eines Objekttypen.
</summary>
<param name="name">Name des Objekttyps</param>
<returns>Array mit allen Objekttyp zugeordneten Indexen als String</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetObjecttypeByName(System.String)">
<summary>
Liefert einen Objekttyp als WMObject an Hand dessen Name.
</summary>
<param name="objekttypName">Name des Objekttyps</param>
<returns>Objekttyp als WMObject</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.ExistIndexInObjekttyp(System.String,System.String)">
<summary>
Überprüft ob der angegebene Index im Objekttyp existiert
</summary>
<param name="objekttyp">Name des zu durchsuchenden Objekttyps</param>
<param name="indexname">Name des zu suchenden Indexes</param>
<returns>Liefert True wenn der Index im Objekttyp existiert, sonst False</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.IsLoggedIn">
<summary>
Liefert True wenn die windream-Session angemeldet ist und False für den Fall, dass die Session nicht eingeloggt ist.
</summary>
<returns>Anmeldestatus als Boolean</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetCurrentServer">
<summary>
Liefert den Servernamen an dem windream aktuell angemeldet ist.
</summary>
<returns>Servername als String</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_allgemein.GetTypeOfIndexAsIntByName(System.String)">
<summary>
Liefert den Typen eines Indexes als Integer.
</summary>
<param name="indexname">Name des zu überprüfenden Indexfeldes</param>
<returns>Liefert eine Zahl, die einen Typen beschreibt</returns>
<remarks></remarks>
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_Index.GetValueforIndex(System.String,System.String)">
Liefert den Wert eines Indexes als String
_indexname = Name des zu überprüfenden Indexfeldes
</member>
<member name="M:DigitalData.EMLProfiler.clsWindream_Index.GetValueforIndex_WMFile(WINDREAMLib.WMObject,System.String)">
Liefert den Wert eines Indexes als String
_indexname = Name des zu überprüfenden Indexfeldes
</member>
</members>
</doc>

View File

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