MS Changes Firebird due to wisag
This commit is contained in:
60
App/DigitalData.EMLProfiler/ClassCurrent.vb
Normal file
60
App/DigitalData.EMLProfiler/ClassCurrent.vb
Normal 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
|
||||
143
App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj
Normal file
143
App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj
Normal 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>
|
||||
13
App/DigitalData.EMLProfiler/My Project/Application.Designer.vb
generated
Normal file
13
App/DigitalData.EMLProfiler/My Project/Application.Designer.vb
generated
Normal 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
|
||||
|
||||
10
App/DigitalData.EMLProfiler/My Project/Application.myapp
Normal file
10
App/DigitalData.EMLProfiler/My Project/Application.myapp
Normal 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>
|
||||
35
App/DigitalData.EMLProfiler/My Project/AssemblyInfo.vb
Normal file
35
App/DigitalData.EMLProfiler/My Project/AssemblyInfo.vb
Normal 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")>
|
||||
62
App/DigitalData.EMLProfiler/My Project/Resources.Designer.vb
generated
Normal file
62
App/DigitalData.EMLProfiler/My Project/Resources.Designer.vb
generated
Normal 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
|
||||
117
App/DigitalData.EMLProfiler/My Project/Resources.resx
Normal file
117
App/DigitalData.EMLProfiler/My Project/Resources.resx
Normal 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>
|
||||
73
App/DigitalData.EMLProfiler/My Project/Settings.Designer.vb
generated
Normal file
73
App/DigitalData.EMLProfiler/My Project/Settings.Designer.vb
generated
Normal 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
|
||||
5
App/DigitalData.EMLProfiler/My Project/Settings.settings
Normal file
5
App/DigitalData.EMLProfiler/My Project/Settings.settings
Normal 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>
|
||||
27
App/DigitalData.EMLProfiler/app.config
Normal file
27
App/DigitalData.EMLProfiler/app.config
Normal 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>
|
||||
BIN
App/DigitalData.EMLProfiler/bin/Debug/Debug.7z
Normal file
BIN
App/DigitalData.EMLProfiler/bin/Debug/Debug.7z
Normal file
Binary file not shown.
Binary file not shown.
@@ -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.
@@ -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>
|
||||
Binary file not shown.
@@ -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>
|
||||
Binary file not shown.
@@ -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>
|
||||
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
Binary file not shown.
Binary file not shown.
BIN
App/DigitalData.EMLProfiler/bin/Debug/Independentsoft.Email.dll
Normal file
BIN
App/DigitalData.EMLProfiler/bin/Debug/Independentsoft.Email.dll
Normal file
Binary file not shown.
2975
App/DigitalData.EMLProfiler/bin/Debug/Independentsoft.Email.xml
Normal file
2975
App/DigitalData.EMLProfiler/bin/Debug/Independentsoft.Email.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
App/DigitalData.EMLProfiler/bin/Debug/Interop.WINDREAMLib.dll
Normal file
BIN
App/DigitalData.EMLProfiler/bin/Debug/Interop.WINDREAMLib.dll
Normal file
Binary file not shown.
BIN
App/DigitalData.EMLProfiler/bin/Debug/NLog.dll
Normal file
BIN
App/DigitalData.EMLProfiler/bin/Debug/NLog.dll
Normal file
Binary file not shown.
26890
App/DigitalData.EMLProfiler/bin/Debug/NLog.xml
Normal file
26890
App/DigitalData.EMLProfiler/bin/Debug/NLog.xml
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
147
App/DigitalData.EMLProfiler/clsDatabase.vb
Normal file
147
App/DigitalData.EMLProfiler/clsDatabase.vb
Normal 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
|
||||
67
App/DigitalData.EMLProfiler/clsEmail.IMAP.vb
Normal file
67
App/DigitalData.EMLProfiler/clsEmail.IMAP.vb
Normal 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
|
||||
245
App/DigitalData.EMLProfiler/clsEmail.vb
Normal file
245
App/DigitalData.EMLProfiler/clsEmail.vb
Normal 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
|
||||
76
App/DigitalData.EMLProfiler/clsEncryption.vb
Normal file
76
App/DigitalData.EMLProfiler/clsEncryption.vb
Normal 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
|
||||
816
App/DigitalData.EMLProfiler/clsWindream_Index.vb
Normal file
816
App/DigitalData.EMLProfiler/clsWindream_Index.vb
Normal 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
|
||||
486
App/DigitalData.EMLProfiler/clsWindream_allgemein.vb
Normal file
486
App/DigitalData.EMLProfiler/clsWindream_allgemein.vb
Normal 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
|
||||
|
||||
591
App/DigitalData.EMLProfiler/clsWorkEmail.vb
Normal file
591
App/DigitalData.EMLProfiler/clsWorkEmail.vb
Normal 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
|
||||
158
App/DigitalData.EMLProfiler/clsWorker.vb
Normal file
158
App/DigitalData.EMLProfiler/clsWorker.vb
Normal 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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
75ca9606c59e96beda488f8b876cf3665b773d22
|
||||
@@ -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
|
||||
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
Binary file not shown.
4
App/DigitalData.EMLProfiler/packages.config
Normal file
4
App/DigitalData.EMLProfiler/packages.config
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="4.5.8" targetFramework="net461" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user