123 Commits

Author SHA1 Message Date
Jonathan Jenne
4be0ac5e49 SQLEditor: Init 2020-06-09 15:50:02 +02:00
Jonathan Jenne
934bbfb063 ClipboardWatcher: more accurate result text 2020-06-09 15:49:48 +02:00
Jonathan Jenne
eae9abb3be ClipboardWatcher: Version 1.0.0.2 2020-06-08 16:54:00 +02:00
Jonathan Jenne
9ee627e2ef CLipboardWatcher: replace clipboard placeholder for datasearches 2020-06-08 16:53:29 +02:00
Jonathan Jenne
905a660e2b Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-06-08 15:46:08 +02:00
Jonathan Jenne
de1fc4a5cc ClipboardWatcher: Version 1.0.0.1 2020-06-08 15:45:51 +02:00
Jonathan Jenne
664ff68b32 ZUGFeRDTest: add license 2020-06-08 15:45:18 +02:00
Jonathan Jenne
b288544a32 ClipboardWatcher: fix treeview button anchor 2020-06-08 15:44:59 +02:00
3d6eb0af14 Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-06-04 16:32:57 +02:00
fdd7ed40c0 MS DocView Done 2020-06-04 16:32:48 +02:00
Jonathan Jenne
095b79be96 ClipboardWatcher: Actually use configured connection strings 2020-06-02 16:19:24 +02:00
Jonathan Jenne
66ad52ba26 Chat: WIP 2020-06-02 16:12:10 +02:00
Jonathan Jenne
3a61685882 Database: Version 1.0.0.6 2020-06-02 16:11:55 +02:00
Jonathan Jenne
21802dcfa2 Database/MSSQL: Support connection string per query, for now only for datatable 2020-06-02 16:11:42 +02:00
Jonathan Jenne
e61f85c4cc Windream: Version 1.0.0.7 2020-05-29 13:56:37 +02:00
Jonathan Jenne
f04c5ec4b0 Windream: fix NormalizePath 2020-05-29 13:56:27 +02:00
Jonathan Jenne
068f660451 ChatControl + Test 2020-05-29 10:54:18 +02:00
Jonathan Jenne
79736df064 Windream: Version 1.0.0.6 2020-05-29 10:54:06 +02:00
Jonathan Jenne
30827fb841 fix breaking unc path 2020-05-29 10:53:38 +02:00
Jonathan Jenne
8bd6cd63d4 merge 2020-05-28 14:57:01 +02:00
Jonathan Jenne
69c7772417 update NLog to 4.7.2 2020-05-28 14:55:43 +02:00
Jonathan Jenne
09e2787704 add chattest 2020-05-28 14:55:30 +02:00
4cd801003b Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-05-20 14:54:03 +02:00
07aa03a47e MS Remove Chat 2020-05-20 14:53:55 +02:00
Jonathan Jenne
5d4133659e LookupGrid: Prevent crash when selectedvalues contains dbnull 2020-05-20 13:57:12 +02:00
Jonathan Jenne
968ea6c914 Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-05-20 13:37:21 +02:00
Jonathan Jenne
1189ca5fac Interfaces: Use Root Store for Certificates 2020-05-20 13:37:12 +02:00
Jonathan Jenne
cf7adaac27 LookupControlGui: Update 2020-05-20 13:36:53 +02:00
Jonathan Jenne
cd6e741cd2 LookupGrid: 1.0.2.3 2020-05-20 13:36:28 +02:00
Jonathan Jenne
8e864d5b07 LookupGrid: handle empty datasource better 2020-05-20 13:36:11 +02:00
Jonathan Jenne
7d8300a1db fix make getcleanedpath public 2020-05-15 16:02:20 +02:00
a950c09802 MS 2020-05-15 12:33:43 +02:00
Jonathan Jenne
9b290cce72 EDMI: Fix byte array creation 2020-05-15 12:26:59 +02:00
Jonathan Jenne
9a70252ff3 GraphQL: remove message box when cert is not found lol 2020-05-15 11:34:59 +02:00
Jonathan Jenne
cfa2800c5b Filesystem: Dont copy file.vb to debug dir lol 2020-05-15 10:54:08 +02:00
Jonathan Jenne
8c7a79addd JobRunner: Version 1.0.2.0 2020-05-15 10:24:15 +02:00
Jonathan Jenne
1b38141e3e JobRunner: fix debug not working because of duplicate job definitions 2020-05-15 10:22:44 +02:00
92a1364edb MS 2020-05-14 15:21:53 +02:00
Jonathan Jenne
6d243bff89 JobRunner: Version 1.0.1.0 2020-05-14 14:45:53 +02:00
Jonathan Jenne
a2578f1c86 JobRunner: Fix GraphQL Args 2020-05-14 14:45:25 +02:00
Jonathan Jenne
421f6f6827 Jobs: Version 1.3.0.0 2020-05-14 14:39:19 +02:00
Jonathan Jenne
7327a9b2fa Jobs: Add option to start jobs immediately 2020-05-14 14:38:30 +02:00
Jonathan Jenne
ffcfd017ce EDMI: JobTest 2020-05-14 13:17:52 +02:00
Jonathan Jenne
b8040cff2b Database: Clean up GetSQLConnection() 2020-05-14 13:17:40 +02:00
Jonathan Jenne
f3986bb8fa EDMI: WIP GraphQLJob 2020-05-14 13:17:11 +02:00
Jonathan Jenne
de2bb5e88d Config: Version 0.0.7.2 2020-05-14 13:16:43 +02:00
Jonathan Jenne
3d5315d032 Config: Fix creating ComputerConfig folder when no path is given 2020-05-14 13:16:22 +02:00
Jonathan Jenne
ab83044664 Logging: Version 2.0.2.0 2020-05-14 13:13:03 +02:00
Jonathan Jenne
267c90e287 Logging: Keep debug file open to prevent massive slowdown when writing many log messages 2020-05-14 13:12:46 +02:00
Jonathan Jenne
32ac19cbd0 GraphQL: WIP JobRunner Job GraphQL 2020-05-13 16:36:51 +02:00
Jonathan Jenne
5b829e8ef1 GraphQL: show total lines inserted and mask special chars for insert 2020-05-13 16:28:26 +02:00
eff07ac410 MS Icon etc 2020-05-13 14:36:13 +02:00
Jonathan Jenne
3ece4e6222 GraphQL: Use cert from store 2020-05-13 11:42:28 +02:00
Jonathan Jenne
874cf74796 Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-05-13 10:45:28 +02:00
Jonathan Jenne
967ad15052 GraphQL: fix cert store access 2020-05-13 10:45:11 +02:00
2ff902fc1e Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-05-06 15:23:22 +02:00
66bab9b7c1 ms 2020-05-06 15:23:08 +02:00
Jonathan Jenne
6e577627d3 GraphQLTest: Add Proxy config 2020-05-05 13:21:35 +02:00
Jonathan Jenne
729b4d8195 GraphQLTest: Prepare for test 2020-05-04 14:48:01 +02:00
Jonathan Jenne
857f1b1f9f Filesystem: Version 1.0.1.1 2020-04-30 11:45:04 +02:00
Jonathan Jenne
dfb53d60e6 Filesystem: Version 1.0.1.0 2020-04-30 11:40:54 +02:00
Jonathan Jenne
3ad3519201 Filesystem: Add GetCleanFilename and GetCleanPath 2020-04-30 11:40:18 +02:00
Jonathan Jenne
150a95643c ZUGFeRD: Improve logging for ZUGFeRD Service 2020-04-29 15:01:41 +02:00
Jonathan Jenne
31ae07b3eb EDMI: fix API.Client constructor 2020-04-28 14:51:24 +02:00
Jonathan Jenne
7f59e1d1ca Version 2.0.1.0 2020-04-28 14:50:55 +02:00
Jonathan Jenne
874e8c893c Logging: Show Method/Line Numbers for Debug Messages 2020-04-28 14:50:41 +02:00
Jonathan Jenne
7bf03b303b EDMI: clean up service 2020-04-28 11:11:54 +02:00
Jonathan Jenne
ebc482b7b2 Windream: Log if object does not exist 2020-04-27 16:22:34 +02:00
631929ec46 MS 2020-04-27 15:09:44 +02:00
Jonathan Jenne
29600e0a5e Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-04-27 14:17:12 +02:00
Jonathan Jenne
4cde711955 EDMI 2020-04-27 14:16:42 +02:00
f2273ceed7 Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-04-27 14:16:41 +02:00
cbc603cbb7 MS WINDREAM MOdule 2020-04-27 14:16:32 +02:00
Jonathan Jenne
ed29e1b6a9 EDMI: Update Service and Client to Use Messages for EDMI Methods 2020-04-24 11:53:08 +02:00
Jonathan Jenne
d2717b9216 Language: Add ToBoolean, EMIBenchmark: try blocks 2020-04-22 14:34:22 +02:00
Jonathan Jenne
162485e3f0 EDMIBenchmark: add logging 2020-04-22 11:07:21 +02:00
Jonathan Jenne
99e7a36d84 Interfaces: Dont log ZUGFeRD Exceptions while validating, leads to misleading error messages 2020-04-22 10:47:09 +02:00
Jonathan Jenne
afe42e52c0 Version 0.0.7.1: dont try to create app startup path 2020-04-20 17:19:58 +02:00
Jonathan Jenne
4cb20bfb59 skip path test 2020-04-20 10:58:56 +02:00
Jonathan Jenne
409e4e375d ZUGFeRD Service: Version 1.2.1.0 2020-04-20 10:58:40 +02:00
Jonathan Jenne
ed02436dd6 Jobs.EDMI.ZUGFeRD: Use GDPicture for Validation, Fix Group counter being nothing, remove xml from allowed extensions 2020-04-20 10:58:13 +02:00
45359d3cab Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-04-20 10:01:56 +02:00
79e1d0a7de MS WISAG ZUGFERD 2020-04-20 10:01:46 +02:00
Jonathan Jenne
dc43397d55 Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-04-17 11:57:32 +02:00
Jonathan Jenne
14194248ad EDMI: Load Object Store Paths 2020-04-17 11:57:18 +02:00
fde2ca6198 Merge branch 'master' of http://dd-vmp07-com04:3000/AppStd/Monorepo 2020-04-17 11:55:42 +02:00
1d88a8467c MS EmailFunctions
- ZuGferd Service
- Windream
2020-04-17 11:55:33 +02:00
Jonathan Jenne
88dfb3fab1 EDMI: Prepare using moving files to archive and setting retention date on import 2020-04-16 16:31:34 +02:00
Jonathan Jenne
9095c0cd07 EDMI: Add Testing to EDMIBenchmark, Add ListFiles to EDMIService 2020-04-16 13:38:01 +02:00
Jonathan Jenne
6ee7bd07a3 EDMIBenchmark: Prepare further tests 2020-04-15 16:13:26 +02:00
Jonathan Jenne
b7a5f4d4a3 WIP: EDMI: Improve Error Handling 2020-04-15 14:44:42 +02:00
Jonathan Jenne
62e4e409a6 WIP: EDMI Service 2020-04-15 12:09:01 +02:00
Jonathan Jenne
a20c0eb4b0 WIP: Streaming files from service to client 2020-04-14 16:25:16 +02:00
Jonathan Jenne
52a6d103e6 EDMIService: fix paths on import 2020-04-14 10:34:30 +02:00
Jonathan Jenne
bb9dd66d1f EDMI Service: WIP 2020-04-09 16:23:39 +02:00
Jonathan Jenne
7abf47c2fc Modules.Interfaces: Version 1.0.2.0 2020-04-09 12:36:52 +02:00
Jonathan Jenne
b1f7883757 remove users from group on sync 2020-04-09 12:36:19 +02:00
Jonathan Jenne
84ebac00a9 test sync delete user 2020-04-09 12:23:45 +02:00
Jonathan Jenne
308fdef2f8 EDMIBenchmark: small changes 2020-04-08 15:02:03 +02:00
Jonathan Jenne
a7125add1e DocumentViewer: Version 1.0.3.0 2020-04-08 15:01:45 +02:00
Jonathan Jenne
10e2579df4 DocumentViewer: Support Streams 2020-04-08 15:01:28 +02:00
Jonathan Jenne
594d71bc75 add FileId to DocumentObject 2020-04-08 14:14:50 +02:00
Jonathan Jenne
86c99f0fc6 set logEntireMessage to false to prevent outofmemory exception when importing multiple large files 2020-04-08 13:42:17 +02:00
Jonathan Jenne
b78949ae46 stupid wcf config 2020-04-08 11:41:47 +02:00
Jonathan Jenne
425d51c65c create directory on import, version filename 2020-04-08 11:38:34 +02:00
Jonathan Jenne
a7e48a939c add edmi benchmark 2020-04-08 11:37:51 +02:00
Jonathan Jenne
d1817fedb5 bring EDMIService up to date 2020-04-07 10:55:09 +02:00
Jonathan Jenne
37a3675d84 update Service Reference in EDMI.API 2020-04-07 10:54:35 +02:00
Jonathan Jenne
fa476e3101 Logging: Version 2.0.0.1 2020-04-07 10:44:43 +02:00
Jonathan Jenne
a394c5e557 set default product name if not supplied 2020-04-07 10:44:33 +02:00
Jonathan Jenne
b38e3acb6d remove last IDB fragments 2020-04-06 16:27:33 +02:00
Jonathan Jenne
bd01dfe6d2 fix EDMI.File Test 2020-04-06 16:27:10 +02:00
Jonathan Jenne
eb527a7abb EDMIService: Use EDMI.File functions, add DatastorePath 2020-04-06 16:04:01 +02:00
Jonathan Jenne
0e13de63fb fix old references to IDBService 2020-04-06 15:21:02 +02:00
Jonathan Jenne
ec779f7697 Add new Temp option to Logging 2020-04-06 15:18:04 +02:00
Jonathan Jenne
1d62d18ced fix Logging.Test 2020-04-06 15:17:54 +02:00
Jonathan Jenne
729f4c73ee fix Filesystem.Test 2020-04-06 15:17:38 +02:00
Jonathan Jenne
77b6658988 add EDMI.File Module 2020-04-06 15:17:18 +02:00
Jonathan Jenne
7de03b4889 rename service directories 2020-04-06 15:17:03 +02:00
Jonathan Jenne
9a0235e941 fix remaining EDMI.API reference errors 2020-04-06 14:11:16 +02:00
Jonathan Jenne
018469dc21 clean up changes in EDMI.API 2020-04-06 14:02:46 +02:00
Jonathan Jenne
4809337c86 Merge remote-tracking branch 'origin/master' into ZugferdService-Redesign 2020-04-06 13:24:48 +02:00
dc82b42e7a MS windream 2020-04-06 13:20:15 +02:00
323 changed files with 9414 additions and 2683 deletions

6
ChatTest/App.config Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@@ -4,15 +4,16 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A8C3F298-76AB-4359-AB3C-986E313B4336}</ProjectGuid>
<OutputType>Exe</OutputType>
<StartupObject>DigitalData.Services.IDBService.WindowsService</StartupObject>
<RootNamespace>DigitalData.Services.IDBService</RootNamespace>
<AssemblyName>IDBService</AssemblyName>
<ProjectGuid>{4A726345-FD6B-4E1C-9E5D-18C9043D7714}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>ChatTest.My.MyApplication</StartupObject>
<RootNamespace>ChatTest</RootNamespace>
<AssemblyName>ChatTest</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Console</MyType>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@@ -21,7 +22,7 @@
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>IDBService.xml</DocumentationFile>
<DocumentationFile>ChatTest.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -31,7 +32,7 @@
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>IDBService.xml</DocumentationFile>
<DocumentationFile>ChatTest.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
@@ -47,22 +48,18 @@
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="FirebirdSql.Data.FirebirdClient, Version=6.4.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL">
<HintPath>..\..\packages\FirebirdSql.Data.FirebirdClient.6.4.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\..\packages\NLog.4.6.8\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.7.2\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Transactions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
@@ -77,25 +74,21 @@
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="AppConfig.vb" />
<Compile Include="Results\BaseResult.vb" />
<Compile Include="Results\ContainerResult.vb" />
<Compile Include="Results\DocumentResult.vb" />
<Compile Include="Exceptions.vb" />
<Compile Include="Results\DatabaseResult.vb" />
<Compile Include="IDBService.vb" />
<Compile Include="Results\DocumentResult2.vb" />
<Compile Include="Results\IndexResult.vb" />
<Compile Include="WindowsService.vb">
<SubType>Component</SubType>
<Compile Include="Form1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.vb">
<DependentUpon>Form1.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="IIDBService.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
@@ -111,22 +104,17 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="ProjectInstaller.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="Request.vb" />
<Compile Include="SettingsModule.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ProjectInstaller.resx">
<DependentUpon>ProjectInstaller.vb</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
@@ -138,27 +126,16 @@
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Modules.Database\Database.vbproj">
<Project>{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}</Project>
<Name>Database</Name>
<ProjectReference Include="..\Controls.ChatControl\ChatControl.vbproj">
<Project>{1f278760-4f6b-42e8-b82d-01d4c8618340}</Project>
<Name>ChatControl</Name>
</ProjectReference>
<ProjectReference Include="..\..\Modules.EDMIAPI\EDMIAPI.vbproj">
<Project>{5B1171DC-FFFE-4813-A20D-786AAE47B320}</Project>
<Name>EDMIAPI</Name>
</ProjectReference>
<ProjectReference Include="..\..\Modules.Filesystem\Filesystem.vbproj">
<Project>{991D0231-4623-496D-8BD0-9CA906029CBC}</Project>
<Name>Filesystem</Name>
</ProjectReference>
<ProjectReference Include="..\..\Modules.Logging\Logging.vbproj">
<Project>{903B2D7D-3B80-4BE9-8713-7447B704E1B0}</Project>
<ProjectReference Include="..\Modules.Logging\Logging.vbproj">
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
<Name>Logging</Name>
</ProjectReference>
</ItemGroup>

49
ChatTest/Form1.Designer.vb generated Normal file
View File

@@ -0,0 +1,49 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.ChatControl1 = New DigitalData.Controls.ChatControl.ChatControl()
Me.SuspendLayout()
'
'ChatControl1
'
Me.ChatControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.ChatControl1.Location = New System.Drawing.Point(0, 0)
Me.ChatControl1.Name = "ChatControl1"
Me.ChatControl1.Size = New System.Drawing.Size(397, 384)
Me.ChatControl1.TabIndex = 0
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(397, 384)
Me.Controls.Add(Me.ChatControl1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
Friend WithEvents ChatControl1 As DigitalData.Controls.ChatControl.ChatControl
End Class

View File

@@ -117,22 +117,4 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="txtQuery.Text" xml:space="preserve">
<value>query Nls{
niederlassungen {
niederlassungen {
mdnr
mdkurzbezeichnung
bezeichnung
sparte {
id
name
__typename
}
__typename
}
__typename
}
}</value>
</data>
</root>

11
ChatTest/Form1.vb Normal file
View File

@@ -0,0 +1,11 @@
Imports DigitalData.Modules.Logging
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim oLogConfig As New LogConfig(LogConfig.PathType.CustomPath, Application.StartupPath)
Dim oConnectionString = "Server=sDD-VMP04-SQL17\DD_DEVELOP01;Database=IDB_TEST;User Id=sa;Password=dd;"
ChatControl1.Init(oLogConfig, oConnectionString, "JenneJ")
ChatControl1.LoadConversations(10070)
End Sub
End Class

View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <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
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.ChatTest.Form1
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,11 @@
<?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>true</MySubMain>
<MainForm>Form1</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>0</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("ChatTest")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ChatTest")>
<Assembly: AssemblyCopyright("Copyright © 2020")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("f348c274-1ccf-49cc-9729-9495f1d94958")>
' 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,
' indem Sie "*" wie unten gezeigt eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ChatTest.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

73
ChatTest/My Project/Settings.Designer.vb generated Normal file
View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <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
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#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(ByVal sender As Global.System.Object, ByVal 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.ChatTest.My.MySettings
Get
Return Global.ChatTest.My.MySettings.Default
End Get
End Property
End Module
End Namespace

4
ChatTest/packages.config Normal file
View File

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

View File

@@ -0,0 +1,305 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class ChatControl
Inherits System.Windows.Forms.UserControl
'UserControl1 überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim ItemTemplate3 As DevExpress.XtraGrid.Views.Tile.ItemTemplate = New DevExpress.XtraGrid.Views.Tile.ItemTemplate()
Dim TableColumnDefinition7 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
Dim TableColumnDefinition8 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
Dim TileViewItemElement7 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement()
Dim TileViewItemElement8 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement()
Dim TileViewItemElement9 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement()
Dim TableRowDefinition7 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
Dim TableRowDefinition8 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
Dim ItemTemplate4 As DevExpress.XtraGrid.Views.Tile.ItemTemplate = New DevExpress.XtraGrid.Views.Tile.ItemTemplate()
Dim TableColumnDefinition9 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
Dim TableColumnDefinition10 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
Dim TileViewItemElement10 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement()
Dim TileViewItemElement11 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement()
Dim TileViewItemElement12 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement()
Dim TableRowDefinition9 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
Dim TableRowDefinition10 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
Dim TableColumnDefinition11 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
Dim TableColumnDefinition12 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
Dim TableRowDefinition11 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
Dim TableRowDefinition12 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
Dim EditorButtonImageOptions2 As DevExpress.XtraEditors.Controls.EditorButtonImageOptions = New DevExpress.XtraEditors.Controls.EditorButtonImageOptions()
Dim SerializableAppearanceObject5 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
Dim SerializableAppearanceObject6 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
Dim SerializableAppearanceObject7 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
Dim SerializableAppearanceObject8 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ChatControl))
Me.columnUsername = New DevExpress.XtraGrid.Columns.TileViewColumn()
Me.columnMessage = New DevExpress.XtraGrid.Columns.TileViewColumn()
Me.columnDate = New DevExpress.XtraGrid.Columns.TileViewColumn()
Me.RepositoryItemHypertextLabel1 = New DevExpress.XtraEditors.Repository.RepositoryItemHypertextLabel()
Me.RepositoryItemHyperLinkEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit()
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridChat = New DevExpress.XtraGrid.GridControl()
Me.ChatView = New DevExpress.XtraGrid.Views.Tile.TileView()
Me.lookupConversations = New DigitalData.Controls.LookupGrid.LookupControl2()
Me.LookupControl21View = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.txtMessage = New DevExpress.XtraEditors.MemoEdit()
Me.btnSendMessage = New DevExpress.XtraEditors.SimpleButton()
Me.ChatSource = New System.Windows.Forms.BindingSource(Me.components)
CType(Me.RepositoryItemHypertextLabel1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemHyperLinkEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.SuspendLayout()
CType(Me.GridChat, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ChatView, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.lookupConversations.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LookupControl21View, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtMessage.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ChatSource, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'columnUsername
'
Me.columnUsername.FieldName = "USER_FROM"
Me.columnUsername.Name = "columnUsername"
Me.columnUsername.Visible = True
Me.columnUsername.VisibleIndex = 1
'
'columnMessage
'
Me.columnMessage.FieldName = "MESSAGE_TEXT"
Me.columnMessage.Name = "columnMessage"
Me.columnMessage.Visible = True
Me.columnMessage.VisibleIndex = 0
'
'columnDate
'
Me.columnDate.FieldName = "ADDED_WHEN"
Me.columnDate.Name = "columnDate"
Me.columnDate.Visible = True
Me.columnDate.VisibleIndex = 2
'
'RepositoryItemHypertextLabel1
'
Me.RepositoryItemHypertextLabel1.Name = "RepositoryItemHypertextLabel1"
'
'RepositoryItemHyperLinkEdit1
'
Me.RepositoryItemHyperLinkEdit1.AutoHeight = False
Me.RepositoryItemHyperLinkEdit1.Name = "RepositoryItemHyperLinkEdit1"
'
'SplitContainerControl1
'
Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl1.FixedPanel = DevExpress.XtraEditors.SplitFixedPanel.Panel2
Me.SplitContainerControl1.Horizontal = False
Me.SplitContainerControl1.IsSplitterFixed = True
Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl1.Name = "SplitContainerControl1"
Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridChat)
Me.SplitContainerControl1.Panel1.Controls.Add(Me.lookupConversations)
Me.SplitContainerControl1.Panel1.Text = "Panel1"
Me.SplitContainerControl1.Panel2.Controls.Add(Me.txtMessage)
Me.SplitContainerControl1.Panel2.Controls.Add(Me.btnSendMessage)
Me.SplitContainerControl1.Panel2.Text = "Panel2"
Me.SplitContainerControl1.Size = New System.Drawing.Size(317, 314)
Me.SplitContainerControl1.SplitterPosition = 50
Me.SplitContainerControl1.TabIndex = 0
'
'GridChat
'
Me.GridChat.Dock = System.Windows.Forms.DockStyle.Fill
Me.GridChat.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.GridChat.Location = New System.Drawing.Point(0, 20)
Me.GridChat.MainView = Me.ChatView
Me.GridChat.Name = "GridChat"
Me.GridChat.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemHyperLinkEdit1, Me.RepositoryItemHypertextLabel1})
Me.GridChat.Size = New System.Drawing.Size(317, 234)
Me.GridChat.TabIndex = 0
Me.GridChat.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ChatView})
'
'ChatView
'
Me.ChatView.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.columnMessage, Me.columnUsername, Me.columnDate})
Me.ChatView.ContextButtonOptions.HoverStateOpacity = 0.75!
Me.ChatView.ContextButtonOptions.TopPanelColor = System.Drawing.Color.White
Me.ChatView.GridControl = Me.GridChat
Me.ChatView.Name = "ChatView"
Me.ChatView.OptionsTiles.ColumnCount = 1
Me.ChatView.OptionsTiles.GroupTextPadding = New System.Windows.Forms.Padding(0, 8, 12, 8)
Me.ChatView.OptionsTiles.IndentBetweenGroups = 0
Me.ChatView.OptionsTiles.IndentBetweenItems = 10
Me.ChatView.OptionsTiles.ItemPadding = New System.Windows.Forms.Padding(0)
Me.ChatView.OptionsTiles.ItemSize = New System.Drawing.Size(374, 64)
Me.ChatView.OptionsTiles.LayoutMode = DevExpress.XtraGrid.Views.Tile.TileViewLayoutMode.Kanban
Me.ChatView.OptionsTiles.Orientation = System.Windows.Forms.Orientation.Vertical
Me.ChatView.OptionsTiles.Padding = New System.Windows.Forms.Padding(5)
Me.ChatView.OptionsTiles.RowCount = 0
Me.ChatView.OptionsTiles.ScrollMode = DevExpress.XtraEditors.TileControlScrollMode.ScrollBar
TableColumnDefinition7.Length.Value = 250.0R
TableColumnDefinition8.Length.Value = 100.0R
ItemTemplate3.Columns.Add(TableColumnDefinition7)
ItemTemplate3.Columns.Add(TableColumnDefinition8)
TileViewItemElement7.Column = Me.columnUsername
TileViewItemElement7.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
TileViewItemElement7.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside
TileViewItemElement7.Text = "columnUsername"
TileViewItemElement7.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft
TileViewItemElement7.TextLocation = New System.Drawing.Point(10, 0)
TileViewItemElement8.Column = Me.columnMessage
TileViewItemElement8.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
TileViewItemElement8.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside
TileViewItemElement8.RowIndex = 1
TileViewItemElement8.Text = "columnMessage"
TileViewItemElement8.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft
TileViewItemElement8.TextLocation = New System.Drawing.Point(10, 0)
TileViewItemElement9.Column = Me.columnDate
TileViewItemElement9.ColumnIndex = 1
TileViewItemElement9.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
TileViewItemElement9.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside
TileViewItemElement9.Text = "columnDate"
TileViewItemElement9.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight
TileViewItemElement9.TextLocation = New System.Drawing.Point(-10, 0)
ItemTemplate3.Elements.Add(TileViewItemElement7)
ItemTemplate3.Elements.Add(TileViewItemElement8)
ItemTemplate3.Elements.Add(TileViewItemElement9)
ItemTemplate3.Name = "ChatLeft"
TableRowDefinition7.Length.Value = 24.0R
TableRowDefinition8.Length.Value = 24.0R
ItemTemplate3.Rows.Add(TableRowDefinition7)
ItemTemplate3.Rows.Add(TableRowDefinition8)
TableColumnDefinition9.Length.Value = 100.0R
TableColumnDefinition10.Length.Value = 250.0R
ItemTemplate4.Columns.Add(TableColumnDefinition9)
ItemTemplate4.Columns.Add(TableColumnDefinition10)
TileViewItemElement10.Column = Me.columnUsername
TileViewItemElement10.ColumnIndex = 1
TileViewItemElement10.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
TileViewItemElement10.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside
TileViewItemElement10.Text = "columnUsername"
TileViewItemElement10.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight
TileViewItemElement10.TextLocation = New System.Drawing.Point(-10, 0)
TileViewItemElement11.Column = Me.columnMessage
TileViewItemElement11.ColumnIndex = 1
TileViewItemElement11.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
TileViewItemElement11.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside
TileViewItemElement11.RowIndex = 1
TileViewItemElement11.Text = "columnMessage"
TileViewItemElement11.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight
TileViewItemElement11.TextLocation = New System.Drawing.Point(-10, 0)
TileViewItemElement12.Column = Me.columnDate
TileViewItemElement12.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
TileViewItemElement12.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside
TileViewItemElement12.Text = "columnDate"
TileViewItemElement12.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft
TileViewItemElement12.TextLocation = New System.Drawing.Point(10, 0)
ItemTemplate4.Elements.Add(TileViewItemElement10)
ItemTemplate4.Elements.Add(TileViewItemElement11)
ItemTemplate4.Elements.Add(TileViewItemElement12)
ItemTemplate4.Name = "ChatRight"
TableRowDefinition9.Length.Value = 24.0R
TableRowDefinition10.Length.Value = 24.0R
ItemTemplate4.Rows.Add(TableRowDefinition9)
ItemTemplate4.Rows.Add(TableRowDefinition10)
Me.ChatView.Templates.Add(ItemTemplate3)
Me.ChatView.Templates.Add(ItemTemplate4)
Me.ChatView.TileColumns.Add(TableColumnDefinition11)
Me.ChatView.TileColumns.Add(TableColumnDefinition12)
Me.ChatView.TileRows.Add(TableRowDefinition11)
Me.ChatView.TileRows.Add(TableRowDefinition12)
'
'lookupConversations
'
Me.lookupConversations.AllowAddNewValues = False
Me.lookupConversations.DataSource = Nothing
Me.lookupConversations.Dock = System.Windows.Forms.DockStyle.Top
Me.lookupConversations.Location = New System.Drawing.Point(0, 0)
Me.lookupConversations.MultiSelect = False
Me.lookupConversations.Name = "lookupConversations"
Me.lookupConversations.PreventDuplicates = False
Me.lookupConversations.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis, "", -1, True, True, False, EditorButtonImageOptions2, New DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), SerializableAppearanceObject5, SerializableAppearanceObject6, SerializableAppearanceObject7, SerializableAppearanceObject8, "", "openLookupForm", Nothing, DevExpress.Utils.ToolTipAnchor.[Default])})
Me.lookupConversations.Properties.NullText = ""
Me.lookupConversations.Properties.PopupView = Me.LookupControl21View
Me.lookupConversations.SelectedValues = CType(resources.GetObject("lookupConversations.SelectedValues"), System.Collections.Generic.List(Of String))
Me.lookupConversations.Size = New System.Drawing.Size(317, 20)
Me.lookupConversations.TabIndex = 1
'
'LookupControl21View
'
Me.LookupControl21View.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
Me.LookupControl21View.Name = "LookupControl21View"
Me.LookupControl21View.OptionsSelection.EnableAppearanceFocusedCell = False
Me.LookupControl21View.OptionsView.ShowGroupPanel = False
'
'txtMessage
'
Me.txtMessage.Dock = System.Windows.Forms.DockStyle.Fill
Me.txtMessage.Location = New System.Drawing.Point(0, 0)
Me.txtMessage.Name = "txtMessage"
Me.txtMessage.Properties.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtMessage.Properties.Appearance.Options.UseFont = True
Me.txtMessage.Size = New System.Drawing.Size(275, 50)
Me.txtMessage.TabIndex = 1
'
'btnSendMessage
'
Me.btnSendMessage.Dock = System.Windows.Forms.DockStyle.Right
Me.btnSendMessage.ImageOptions.Location = DevExpress.XtraEditors.ImageLocation.MiddleCenter
Me.btnSendMessage.ImageOptions.SvgImage = CType(resources.GetObject("btnSendMessage.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnSendMessage.Location = New System.Drawing.Point(275, 0)
Me.btnSendMessage.Name = "btnSendMessage"
Me.btnSendMessage.PaintStyle = DevExpress.XtraEditors.Controls.PaintStyles.Light
Me.btnSendMessage.Size = New System.Drawing.Size(42, 50)
Me.btnSendMessage.TabIndex = 2
'
'ChatControl
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Controls.Add(Me.SplitContainerControl1)
Me.Name = "ChatControl"
Me.Size = New System.Drawing.Size(317, 314)
CType(Me.RepositoryItemHypertextLabel1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemHyperLinkEdit1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
CType(Me.GridChat, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ChatView, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.lookupConversations.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.LookupControl21View, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.txtMessage.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ChatSource, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridChat As DevExpress.XtraGrid.GridControl
Friend WithEvents ChatView As DevExpress.XtraGrid.Views.Tile.TileView
Friend WithEvents txtMessage As DevExpress.XtraEditors.MemoEdit
Friend WithEvents columnMessage As DevExpress.XtraGrid.Columns.TileViewColumn
Friend WithEvents columnUsername As DevExpress.XtraGrid.Columns.TileViewColumn
Friend WithEvents columnDate As DevExpress.XtraGrid.Columns.TileViewColumn
Friend WithEvents ChatSource As BindingSource
Friend WithEvents lookupConversations As LookupGrid.LookupControl2
Friend WithEvents LookupControl21View As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents btnSendMessage As DevExpress.XtraEditors.SimpleButton
Friend WithEvents RepositoryItemHyperLinkEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit
Friend WithEvents RepositoryItemHypertextLabel1 As DevExpress.XtraEditors.Repository.RepositoryItemHypertextLabel
End Class

View File

@@ -0,0 +1,148 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lookupConversations.SelectedValues" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAJoBbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1u
ZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIG1zY29ybGliLCBWZXJzaW9u
PTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUB
AAAAMFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZwMAAAAGX2l0
ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgCAAAACQMAAAAAAAAAAAAAABEDAAAAAAAAAAs=
</value>
</data>
<assembly alias="DevExpress.Data.v19.2" name="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="btnSendMessage.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALcBAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTmV4dCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIg
MzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KPC9zdHls
ZT4NCiAgPHBhdGggZD0iTTguOSw0LjFDOC40LDMuOCw4LDQuMSw4LDQuNnYyMC43YzAsMC42LDAuNCww
LjgsMC45LDAuNWwxNi44LTEwLjNjMC41LTAuMywwLjUtMC44LDAtMS4xTDguOSw0LjF6IiBjbGFzcz0i
Qmx1ZSIgLz4NCjwvc3ZnPgs=
</value>
</data>
<metadata name="ChatSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,125 @@
Imports DevExpress.XtraGrid.Views.Tile
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Public Class ChatControl
Private ReadOnly IdColumn As String = "GUID"
Private ReadOnly UsernameColumn As String = "USER_FROM"
Private ReadOnly MessageColumn As String = "MESSAGE_TEXT"
Private ReadOnly DateColumn As String = "ADDED_WHEN"
Private Db As MSSQLServer
Private LogConfig As LogConfig
Private Logger As Logger
Private ReadOnly UsernameColorsDict As New Dictionary(Of String, Color)
Private ReadOnly UsernameColors As New List(Of Color) From {
Color.Purple,
Color.Red,
Color.LightBlue,
Color.DarkSeaGreen
}
Public IDBObjectId As Long
Public ConnectionString As String
Public CurrentUser As String
Public CurrentConversation As Long
Public Sub New()
InitializeComponent()
End Sub
Public Sub Init(LogConfig As LogConfig, ConnectionString As String, CurrentUser As String)
Me.LogConfig = LogConfig
Me.Logger = LogConfig.GetLogger()
Me.ConnectionString = ConnectionString
Me.CurrentUser = CurrentUser
Me.Db = New MSSQLServer(LogConfig, ConnectionString)
End Sub
Public Sub LoadConversations(IDBObjectId As Long)
Dim oSQL As String = $"SELECT * FROM VWIDB_CONVERSATION WHERE IDB_OBJ_ID = {IDBObjectId}"
Dim oDatatable As DataTable = Db.GetDatatable(oSQL)
lookupConversations.DataSource = oDatatable
End Sub
Public Sub LoadConversation(ConversationId As Long)
Dim oSQL As String = $"SELECT * FROM VWIDB_CONV_MESSAGES WHERE CONV_ID = {ConversationId} ORDER BY GUID"
Dim oDatatable As DataTable = Db.GetDatatable(oSQL)
BuildUsernameColorDict(oDatatable)
GridChat.DataSource = ChatSource
ChatSource.DataSource = oDatatable
End Sub
Public Sub SendMessage(MessageText As String)
Try
Dim oSQL As String = $"EXEC [PRIDB_NEW_CONVERSATION_MESSAGE] {CurrentConversation},'{MessageText}', '{CurrentUser}'"
Dim oResult = Db.GetScalarValue(oSQL)
LoadConversation(CurrentConversation)
txtMessage.Text = String.Empty
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub
Private Sub BuildUsernameColorDict(Datatable As DataTable)
Dim oIndex = 0
UsernameColorsDict.Clear()
Datatable.AsEnumerable().
Select(Function(Row) Row.Item(UsernameColumn)).
Distinct().ToList().
ForEach(Sub(Name)
UsernameColorsDict.Add(Name, UsernameColors.Item(oIndex))
oIndex += 1
End Sub)
End Sub
Private Sub ChatView_CustomItemTemplate(sender As Object, e As TileViewCustomItemTemplateEventArgs) Handles ChatView.CustomItemTemplate
Dim oRow As DataRow = ChatView.GetDataRow(e.RowHandle)
Dim oUsername As String = oRow.Item(UsernameColumn)
If oUsername = CurrentUser Then
e.Template = e.Templates.Item("ChatRight")
Else
e.Template = e.Templates.Item("ChatLeft")
End If
End Sub
Private Sub ChatView_ItemCustomize(sender As Object, e As TileViewItemCustomizeEventArgs) Handles ChatView.ItemCustomize
Dim oRow As DataRow = ChatView.GetDataRow(e.RowHandle)
Dim oUsername As String = oRow.Item(UsernameColumn)
Dim oMessage As String = oRow.Item(MessageColumn)
Dim oColor As Color = UsernameColorsDict.Item(oUsername)
If oUsername = CurrentUser Then
e.Item.AppearanceItem.Normal.BackColor = Color.PaleTurquoise
End If
e.Item.AppearanceItem.Focused.BackColor = Color.Turquoise
e.Item.Item(UsernameColumn).Appearance.Normal.ForeColor = oColor
End Sub
Private Sub lookupConversations_SelectedValuesChanged(sender As Object, SelectedValues As List(Of String)) Handles lookupConversations.SelectedValuesChanged
If SelectedValues.Count > 0 Then
CurrentConversation = SelectedValues.First()
LoadConversation(CurrentConversation)
End If
End Sub
Private Sub txtMessage_KeyUp(sender As Object, e As KeyEventArgs) Handles txtMessage.KeyUp
If e.Control And e.KeyCode = Keys.Enter And txtMessage.Text.Count > 0 Then
SendMessage(txtMessage.Text)
End If
End Sub
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles btnSendMessage.Click
If txtMessage.Text.Count > 0 Then
SendMessage(txtMessage.Text)
End If
End Sub
End Class

View File

@@ -0,0 +1,157 @@
<?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>{1F278760-4F6B-42E8-B82D-01D4C8618340}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>DigitalData.Controls.ChatControl</RootNamespace>
<AssemblyName>DigitalData.Controls.ChatControl</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic>
</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.Controls.ChatControl.xml</DocumentationFile>
<DefineConstants>_MYFORMS=True</DefineConstants>
<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.Controls.ChatControl.xml</DocumentationFile>
<DefineConstants>_MYFORMS=True</DefineConstants>
<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="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Printing.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraPrinting.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DigitalData.Controls.LookupGrid">
<HintPath>..\Controls.LookupGrid\obj\Debug\DigitalData.Controls.LookupGrid.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.2\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Remoting" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="UIAutomationClient" />
<Reference Include="WindowsBase" />
</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.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="ChatControl.vb">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="ChatControl.Designer.vb">
<DependentUpon>ChatControl.vb</DependentUpon>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<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="ChatControl.resx">
<DependentUpon>ChatControl.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<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="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>
<ItemGroup>
<Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Modules.Database\Database.vbproj">
<Project>{eaf0ea75-5fa7-485d-89c7-b2d843b03a96}</Project>
<Name>Database</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Logging\Logging.vbproj">
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
<Name>Logging</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -0,0 +1,34 @@
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("ChatControl")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ChatControl")>
<Assembly: AssemblyCopyright("Copyright © 2020")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("3019c541-3ad3-4afb-86b5-e3d9c705783a")>
' 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,
' indem Sie "*" wie unten gezeigt eingeben:
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,63 @@
'------------------------------------------------------------------------------
' <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
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</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.Controls.ChatControl.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.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.Controls.ChatControl.My.MySettings
Get
Return Global.DigitalData.Controls.ChatControl.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,3 @@
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

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

View File

@@ -7,6 +7,7 @@ Imports DevExpress.Spreadsheet
Imports GdPicture14
Imports DevExpress
Imports DevExpress.Office.Utils
Imports System.IO
Public Class DocumentViewer
Private Enum ZoomMode
@@ -28,6 +29,7 @@ Public Class DocumentViewer
Private _logger As Logger
Private _hide_file_info_from_user As Boolean = False
Private _FilePath As String
' List of all created temp files when converting msg files
Private _TempFiles As New List(Of String)
@@ -71,6 +73,7 @@ Public Class DocumentViewer
''' </summary>
Public Sub Done()
DeleteTempFiles()
FreeFile()
End Sub
''' <summary>
@@ -83,12 +86,24 @@ Public Class DocumentViewer
Exit Sub
End If
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
_logger.Info("Loading File {0}", FilePath)
DoLoadFile(FilePath)
_FilePath = FilePath
UpdateMainUi()
End Sub
Public Sub LoadFile(FileName As String, Stream As Stream)
If _licenseKey = String.Empty Then
_logger.Warn("License key was not provided. File [{0}] not loaded.", FileName)
Exit Sub
End If
Dim oExtension As String = FileName.Substring(FileName.LastIndexOf("."))
_logger.Info("Loading File [{0}]", FileName)
DoLoadFile(Stream, oExtension)
UpdateMainUi()
End Sub
@@ -108,7 +123,27 @@ Public Class DocumentViewer
Next
_TempFiles.Clear()
End Sub
Private Sub FreeFile()
Try
Dim oFileInfo = New IO.FileInfo(_FilePath)
Dim oExtension As String = oFileInfo.Extension.ToUpper
Select Case oExtension.ToUpper
Case ".MSG"
RichEditControl1.CreateNewDocument()
Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT"
RichEditControl1.CreateNewDocument()
Case ".XLSX", ".XLS", "CSV"
SpreadsheetControl1.CreateNewDocument()
Case Else
GdViewer.CloseDocument()
End Select
Catch ex As Exception
_logger.Warn($"Unexpected error in FreeFile: {ex.Message}")
End Try
End Sub
Private Sub DoLoadFile(FilePath As String)
Try
Dim oFileInfo = New IO.FileInfo(FilePath)
@@ -139,32 +174,13 @@ Public Class DocumentViewer
RichEditControl1.Dock = DockStyle.Fill
Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT"
Dim oFormat As XtraRichEdit.DocumentFormat = XtraRichEdit.DocumentFormat.Undefined
Select Case oExtension.ToUpper
Case ".EML" : oFormat = XtraRichEdit.DocumentFormat.Mht
Case ".DOC" : oFormat = XtraRichEdit.DocumentFormat.Doc
Case ".DOCX" : oFormat = XtraRichEdit.DocumentFormat.OpenXml
Case ".ODT" : oFormat = XtraRichEdit.DocumentFormat.OpenDocument
Case ".RTF" : oFormat = XtraRichEdit.DocumentFormat.Rtf
Case ".TXT" : oFormat = XtraRichEdit.DocumentFormat.PlainText
End Select
RichEditControl1.LoadDocument(FilePath, oFormat)
RichEditControl1.LoadDocument(FilePath, GetDocumentFormat(oExtension))
RichEditControl1.Visible = True
RichEditControl1.Dock = DockStyle.Fill
Case ".XLSX", ".XLS", "CSV"
Dim oFormat As Spreadsheet.DocumentFormat = Spreadsheet.DocumentFormat.Undefined
Select Case oExtension.ToUpper
Case "XLSX" : oFormat = Spreadsheet.DocumentFormat.Xlsx
Case "XLS" : oFormat = Spreadsheet.DocumentFormat.Xls
Case "CSV" : oFormat = Spreadsheet.DocumentFormat.Csv
End Select
SpreadsheetControl1.LoadDocument(FilePath, oFormat)
SpreadsheetControl1.LoadDocument(FilePath, GetSpreadsheetFormat(oExtension))
Dim oRange = SpreadsheetControl1.ActiveWorksheet.GetUsedRange()
oRange.AutoFitColumns()
@@ -175,13 +191,103 @@ Public Class DocumentViewer
Case Else
mainToolStrip.Visible = True
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
GdViewer.DisplayFromFile(FilePath)
End Select
UpdateMainUi()
Catch ex As Exception
_logger.Error(ex)
End Try
End Sub
Private Sub DoLoadFile(Stream As Stream, Extension As String)
Try
RichEditControl1.Visible = False
RichEditControl1.Dock = DockStyle.None
SpreadsheetControl1.Visible = False
SpreadsheetControl1.Dock = DockStyle.None
mainToolStrip.Visible = False
Select Case Extension.ToUpper
Case ".MSG"
Dim oMsg As New Message(Stream)
' TODO: Improve Encoding, maybe convert based on encoding
oMsg.Encoding = System.Text.Encoding.UTF32
Dim oMime = oMsg.ConvertToMimeMessage()
Dim oTempFileName = IO.Path.GetTempFileName()
oMime.Save(oTempFileName, True)
RichEditControl1.LoadDocument(oTempFileName, XtraRichEdit.DocumentFormat.Mht)
_TempFiles.Add(oTempFileName)
RichEditControl1.Visible = True
RichEditControl1.Dock = DockStyle.Fill
Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT"
RichEditControl1.LoadDocument(Stream, GetDocumentFormat(Extension))
RichEditControl1.Visible = True
RichEditControl1.Dock = DockStyle.Fill
Case ".XLSX", ".XLS", "CSV"
SpreadsheetControl1.LoadDocument(Stream, GetSpreadsheetFormat(Extension))
Dim oRange = SpreadsheetControl1.ActiveWorksheet.GetUsedRange()
oRange.AutoFitColumns()
SpreadsheetControl1.Visible = True
SpreadsheetControl1.Dock = DockStyle.Fill
Case Else
mainToolStrip.Visible = True
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
GdViewer.DisplayFromStream(Stream)
End Select
UpdateMainUi()
Catch ex As Exception
_logger.Error(ex)
End Try
End Sub
Private Function GetSpreadsheetFormat(Extension) As Spreadsheet.DocumentFormat
Dim oFormat As Spreadsheet.DocumentFormat = Spreadsheet.DocumentFormat.Undefined
Select Case Extension.ToUpper
Case "XLSX" : oFormat = Spreadsheet.DocumentFormat.Xlsx
Case "XLS" : oFormat = Spreadsheet.DocumentFormat.Xls
Case "CSV" : oFormat = Spreadsheet.DocumentFormat.Csv
End Select
Return oFormat
End Function
Private Function GetDocumentFormat(Extension)
Dim oFormat As XtraRichEdit.DocumentFormat = XtraRichEdit.DocumentFormat.Undefined
Select Case Extension.ToUpper
Case ".EML" : oFormat = XtraRichEdit.DocumentFormat.Mht
Case ".DOC" : oFormat = XtraRichEdit.DocumentFormat.Doc
Case ".DOCX" : oFormat = XtraRichEdit.DocumentFormat.OpenXml
Case ".ODT" : oFormat = XtraRichEdit.DocumentFormat.OpenDocument
Case ".RTF" : oFormat = XtraRichEdit.DocumentFormat.Rtf
Case ".TXT" : oFormat = XtraRichEdit.DocumentFormat.PlainText
End Select
Return oFormat
End Function
Private Sub btnOpen_Click(sender As Object, e As EventArgs)
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter

View File

@@ -78,7 +78,7 @@
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.0\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.7.2\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />

View File

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

View File

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

View File

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

View File

@@ -10,86 +10,89 @@ Public Class frmLookupGrid
Public Property DataSource As DataTable
Public Property SelectedValues As List(Of String)
Private dataColumn As Integer
Private dataSourceTemp As DataTable
Private view As GridView
Private grid As GridControl
Private _DataColumn As Integer
Private _DataSourceTemp As DataTable
Private _View As GridView
Private _Grid As GridControl
Private Sub frmLookupGrid_Load(sender As Object, e As EventArgs) Handles Me.Load
view = viewLookup
grid = gridLookup
If DataSource Is Nothing Then
Exit Sub
End If
_View = viewLookup
_Grid = gridLookup
' Original Datasource soll nicht verändert werden
dataSourceTemp = DataSource.Copy()
If DataSource Is Nothing Then
_DataSourceTemp = New DataTable("TEMP")
_DataSourceTemp.Columns.Add(New DataColumn("VALUE"))
Else
_DataSourceTemp = DataSource.Copy()
End If
If MultiSelect Then
If Not dataSourceTemp.Columns.Contains("SELECTED") Then
If Not _DataSourceTemp.Columns.Contains("SELECTED") Then
Dim selectedColumn = New DataColumn() With {
.ColumnName = "SELECTED",
.DataType = GetType(Boolean),
.DefaultValue = False
}
dataSourceTemp.Columns.Add(selectedColumn)
_DataSourceTemp.Columns.Add(selectedColumn)
selectedColumn.SetOrdinal(0)
End If
End If
' Datasource setzen
grid.DataSource = dataSourceTemp
_Grid.DataSource = _DataSourceTemp
' Anzeige Eigeschaften setzen
view.OptionsFind.Condition = DevExpress.Data.Filtering.FilterCondition.Contains
view.OptionsFind.AlwaysVisible = True
view.OptionsSelection.MultiSelect = False
_View.OptionsFind.Condition = DevExpress.Data.Filtering.FilterCondition.Contains
_View.OptionsFind.AlwaysVisible = True
_View.OptionsSelection.MultiSelect = False
If MultiSelect Then
' Selected Spalte anpassen
Dim checkboxColumn = view.Columns.Item(0)
checkboxColumn.Caption = " "
checkboxColumn.MaxWidth = 10
Dim oCheckboxColumn = _View.Columns.Item(0)
oCheckboxColumn.Caption = " "
oCheckboxColumn.MaxWidth = 10
Text = "Wählen Sie einen oder mehrere Werte:"
dataColumn = 1
_DataColumn = 1
Else
Text = "Wählen Sie einen Wert:"
dataColumn = 0
_DataColumn = 0
End If
If AddNewValues Then
view.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.True
view.OptionsView.NewItemRowPosition = NewItemRowPosition.Top
_View.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.True
_View.OptionsView.NewItemRowPosition = NewItemRowPosition.Top
Else
view.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.False
view.OptionsView.NewItemRowPosition = NewItemRowPosition.None
_View.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.False
_View.OptionsView.NewItemRowPosition = NewItemRowPosition.None
End If
If SelectedValues Is Nothing Then
SelectedValues = New List(Of String)
Else
SelectedValues = SelectedValues.Where(Function(v) Not (IsDBNull(v) OrElse String.IsNullOrWhiteSpace(v))).ToList()
End If
' Bereits ausgewählte Werte im grid auswählen
SyncItemsWithView(view)
SyncItemsWithView(_View)
' Focus auf Find panel setzen
view.ShowFindPanel()
_View.ShowFindPanel()
' Spaltenbreite anpassen
view.BestFitColumns()
_View.BestFitColumns()
End Sub
Private Sub SaveSelectedValues()
' Filter vor dem Auslesen entfernen, damit alle Werte erfasst werden
view.FindFilterText = String.Empty
_View.FindFilterText = String.Empty
If MultiSelect Then
Dim oValues As New List(Of String)
For oIndex = 0 To viewLookup.DataRowCount - 1
Dim oRow As DataRow = view.GetDataRow(oIndex)
Dim oRow As DataRow = _View.GetDataRow(oIndex)
Dim oSelected As Boolean = oRow.Item(0)
Dim oValue As Object = oRow.Item(1)
@@ -105,8 +108,8 @@ Public Class frmLookupGrid
SelectedValues = oValues
Else
Dim oRowHandle As Integer = view.GetSelectedRows().ToList().FirstOrDefault()
Dim oRow As DataRow = view.GetDataRow(oRowHandle)
Dim oRowHandle As Integer = _View.GetSelectedRows().ToList().FirstOrDefault()
Dim oRow As DataRow = _View.GetDataRow(oRowHandle)
Dim oValues As New List(Of String)
If oRow IsNot Nothing Then
@@ -128,16 +131,20 @@ Public Class frmLookupGrid
If rowView IsNot Nothing Then
Dim row As DataRow = rowView.Row
Dim value = row.Item(dataColumn)
Dim value = row.Item(_DataColumn)
If SelectedValues.Contains(value) Then
If MultiSelect Then
row.Item(0) = True
Else
view.SelectRow(rowHandle)
If Not (IsDBNull(value) OrElse String.IsNullOrWhiteSpace(value)) Then
If SelectedValues.Contains(value) Then
If MultiSelect Then
row.Item(0) = True
Else
view.SelectRow(rowHandle)
End If
End If
End If
End If
Next
End If
End Sub
@@ -187,8 +194,8 @@ Public Class frmLookupGrid
End Sub
Private Sub viewLookup_ShowingEditor(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles viewLookup.ShowingEditor
Dim rowHandleIsNewItemRow = (view.FocusedRowHandle = GridControl.NewItemRowHandle)
Dim columnIsCheckboxColumn = view.FocusedColumn.FieldName = "SELECTED"
Dim rowHandleIsNewItemRow = (_View.FocusedRowHandle = GridControl.NewItemRowHandle)
Dim columnIsCheckboxColumn = _View.FocusedColumn.FieldName = "SELECTED"
' Prevent editing of Data Column/allow editing for Checkbox Column and NewValue Row
If rowHandleIsNewItemRow Or columnIsCheckboxColumn Then
@@ -206,10 +213,10 @@ Public Class frmLookupGrid
' If multiselect is true, check the current row
' If multiselect is false, select the current row and close the window
If MultiSelect = True Then
Dim row As DataRow = view.GetDataRow(e.RowHandle)
Dim row As DataRow = _View.GetDataRow(e.RowHandle)
row.Item(0) = Not CBool(row.Item(0))
Else
Dim row As DataRow = view.GetDataRow(e.RowHandle)
Dim row As DataRow = _View.GetDataRow(e.RowHandle)
Dim value = row.Item(0)
SelectedValues = New List(Of String) From {value}

View File

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

View File

@@ -40,22 +40,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Licenses", "Licenses", "{59
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Logging.Test", "Modules.Logging.Test\Logging.Test.vbproj", "{3207D8E7-36E3-4714-9B03-7B5B3D6D351A}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDZUGFeRDService", "DDZUGFeRDService\DDZUGFeRDService.vbproj", "{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Interfaces", "Modules.Interfaces\Interfaces.vbproj", "{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ZUGFeRDTest", "GUIs.Test.ZUGFeRDTest\ZUGFeRDTest.vbproj", "{16156434-E471-43F1-8030-76A0DA17CD5A}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DD_CommunicationService", "DD_CommunicationService\DD_CommunicationService.vbproj", "{1FB2854F-C050-427D-9FAC-1D8F232E8025}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUI_EDMI", "GUIs.Test.GUI_EDMI\GUI_EDMI.vbproj", "{88EDAD5B-1B98-43E4-B068-1251E7AF01A0}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ClientSuite", "GUIs.ClientSuite\ClientSuite.vbproj", "{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "IDBService", "SERVICES\DDEDM_NetworkService\IDBService.vbproj", "{A8C3F298-76AB-4359-AB3C-986E313B4336}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEDMLicenseService", "DDLicenseService\DDEDMLicenseService.vbproj", "{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "License", "Modules.License\License.vbproj", "{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ADSyncTest", "GUIs.Test.ADSyncTest\ADSyncTest.vbproj", "{7386AB04-DF8D-4DFB-809D-1FAC8212CB7E}"
@@ -92,8 +84,6 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ClipboardWatcher", "GUIs.Cl
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Filesystem", "Modules.Filesystem\Filesystem.vbproj", "{991D0231-4623-496D-8BD0-9CA906029CBC}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMIAPI", "Modules.EDMIAPI\EDMIAPI.vbproj", "{5B1171DC-FFFE-4813-A20D-786AAE47B320}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Jobs", "Modules.Jobs\Jobs.vbproj", "{39EC839A-3C30-4922-A41E-6B09D1DDE5C3}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Filesystem.Test", "Modules\Filesystem.Test\Filesystem.Test.vbproj", "{B29ED6D4-839B-413A-A485-B10F4A4788EA}"
@@ -102,11 +92,35 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUIs.Test.GraphQLTest", "GU
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUIs.Test.DocumentViewerTest", "GUIs.Test.DocumentViewerTest\GUIs.Test.DocumentViewerTest.vbproj", "{F9CCEFCD-21B3-4319-9DB1-A0756DA5BA1C}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEmailService", "DDEmailService\DDEmailService.vbproj", "{83ED2617-B398-4859-8F59-B38F8807E83E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebServices", "WebServices", "{D3BAE68E-406E-493D-A4E5-DB6EDDFFB371}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZUGFeRDRESTService", "WEBSERVICES\ZUGFeRDRESTService\ZUGFeRDRESTService.csproj", "{FD50590A-59C1-4798-AD90-419A588DCE76}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZUGFeRDRESTService", "WEBSERVICES\ZUGFeRDRESTService\ZUGFeRDRESTService.csproj", "{FD50590A-59C1-4798-AD90-419A588DCE76}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMI.File", "EDMI.File\EDMI.File.vbproj", "{1477032D-7A02-4C5F-B026-A7117DA4BC6B}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMI.API", "Modules.EDMIAPI\EDMI.API.vbproj", "{25017513-0D97-49D3-98D7-BA76D9B251B0}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMI.File.Test", "EDMI.File.Test\EDMI.File.Test.vbproj", "{16857A4E-2609-47E6-9C35-7669D64DD040}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMIService", "Service.EDMIService\EDMIService.vbproj", "{A8C3F298-76AB-4359-AB3C-986E313B4336}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEmailService", "Services.EmailService\DDEmailService.vbproj", "{83ED2617-B398-4859-8F59-B38F8807E83E}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DD_CommunicationService", "Services.CommunicationService\DD_CommunicationService.vbproj", "{1FB2854F-C050-427D-9FAC-1D8F232E8025}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDZUGFeRDService", "Services.ZUGFeRDService\DDZUGFeRDService.vbproj", "{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEDMLicenseService", "Services.LicenseService\DDEDMLicenseService.vbproj", "{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUIs.Test.EDMIBenchmark", "GUIs.Test.EDMIBenchmark\GUIs.Test.EDMIBenchmark.vbproj", "{5FDEC007-7AE0-4829-B1AE-6165E29375DA}"
EndProject
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "ChatServer", "ChatServer\ChatServer.vbproj", "{C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ChatClient", "ChatClient\ChatClient.vbproj", "{9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ChatControl", "Controls.ChatControl\ChatControl.vbproj", "{1F278760-4F6B-42E8-B82D-01D4C8618340}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ChatTest", "ChatTest\ChatTest.vbproj", "{4A726345-FD6B-4E1C-9E5D-18C9043D7714}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -150,10 +164,6 @@ Global
{3207D8E7-36E3-4714-9B03-7B5B3D6D351A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3207D8E7-36E3-4714-9B03-7B5B3D6D351A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3207D8E7-36E3-4714-9B03-7B5B3D6D351A}.Release|Any CPU.Build.0 = Release|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Release|Any CPU.Build.0 = Release|Any CPU
{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -162,10 +172,6 @@ Global
{16156434-E471-43F1-8030-76A0DA17CD5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16156434-E471-43F1-8030-76A0DA17CD5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16156434-E471-43F1-8030-76A0DA17CD5A}.Release|Any CPU.Build.0 = Release|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Release|Any CPU.Build.0 = Release|Any CPU
{88EDAD5B-1B98-43E4-B068-1251E7AF01A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{88EDAD5B-1B98-43E4-B068-1251E7AF01A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{88EDAD5B-1B98-43E4-B068-1251E7AF01A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -174,14 +180,6 @@ Global
{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}.Release|Any CPU.Build.0 = Release|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Release|Any CPU.Build.0 = Release|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Release|Any CPU.Build.0 = Release|Any CPU
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -250,10 +248,6 @@ Global
{991D0231-4623-496D-8BD0-9CA906029CBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{991D0231-4623-496D-8BD0-9CA906029CBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{991D0231-4623-496D-8BD0-9CA906029CBC}.Release|Any CPU.Build.0 = Release|Any CPU
{5B1171DC-FFFE-4813-A20D-786AAE47B320}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5B1171DC-FFFE-4813-A20D-786AAE47B320}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5B1171DC-FFFE-4813-A20D-786AAE47B320}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B1171DC-FFFE-4813-A20D-786AAE47B320}.Release|Any CPU.Build.0 = Release|Any CPU
{39EC839A-3C30-4922-A41E-6B09D1DDE5C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39EC839A-3C30-4922-A41E-6B09D1DDE5C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39EC839A-3C30-4922-A41E-6B09D1DDE5C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -270,14 +264,62 @@ Global
{F9CCEFCD-21B3-4319-9DB1-A0756DA5BA1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F9CCEFCD-21B3-4319-9DB1-A0756DA5BA1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F9CCEFCD-21B3-4319-9DB1-A0756DA5BA1C}.Release|Any CPU.Build.0 = Release|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.Build.0 = Release|Any CPU
{FD50590A-59C1-4798-AD90-419A588DCE76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FD50590A-59C1-4798-AD90-419A588DCE76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FD50590A-59C1-4798-AD90-419A588DCE76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD50590A-59C1-4798-AD90-419A588DCE76}.Release|Any CPU.Build.0 = Release|Any CPU
{1477032D-7A02-4C5F-B026-A7117DA4BC6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1477032D-7A02-4C5F-B026-A7117DA4BC6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1477032D-7A02-4C5F-B026-A7117DA4BC6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1477032D-7A02-4C5F-B026-A7117DA4BC6B}.Release|Any CPU.Build.0 = Release|Any CPU
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Release|Any CPU.Build.0 = Release|Any CPU
{16857A4E-2609-47E6-9C35-7669D64DD040}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16857A4E-2609-47E6-9C35-7669D64DD040}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16857A4E-2609-47E6-9C35-7669D64DD040}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16857A4E-2609-47E6-9C35-7669D64DD040}.Release|Any CPU.Build.0 = Release|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}.Release|Any CPU.Build.0 = Release|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.Build.0 = Release|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FB2854F-C050-427D-9FAC-1D8F232E8025}.Release|Any CPU.Build.0 = Release|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77}.Release|Any CPU.Build.0 = Release|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Release|Any CPU.Build.0 = Release|Any CPU
{5FDEC007-7AE0-4829-B1AE-6165E29375DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5FDEC007-7AE0-4829-B1AE-6165E29375DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5FDEC007-7AE0-4829-B1AE-6165E29375DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5FDEC007-7AE0-4829-B1AE-6165E29375DA}.Release|Any CPU.Build.0 = Release|Any CPU
{C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Release|Any CPU.Build.0 = Release|Any CPU
{9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Release|Any CPU.Build.0 = Release|Any CPU
{1F278760-4F6B-42E8-B82D-01D4C8618340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F278760-4F6B-42E8-B82D-01D4C8618340}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F278760-4F6B-42E8-B82D-01D4C8618340}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F278760-4F6B-42E8-B82D-01D4C8618340}.Release|Any CPU.Build.0 = Release|Any CPU
{4A726345-FD6B-4E1C-9E5D-18C9043D7714}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A726345-FD6B-4E1C-9E5D-18C9043D7714}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A726345-FD6B-4E1C-9E5D-18C9043D7714}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A726345-FD6B-4E1C-9E5D-18C9043D7714}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -292,14 +334,10 @@ Global
{44982F9B-6116-44E2-85D0-F39650B1EF99} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{3DCD6D1A-C830-4241-B7E4-27430E7EA483} = {F98C0329-C004-417F-B2AB-7466E88D8220}
{3207D8E7-36E3-4714-9B03-7B5B3D6D351A} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{16156434-E471-43F1-8030-76A0DA17CD5A} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{1FB2854F-C050-427D-9FAC-1D8F232E8025} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{88EDAD5B-1B98-43E4-B068-1251E7AF01A0} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{406C95F4-9FEA-45B6-8385-1768CDBBF1A7} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
{A8C3F298-76AB-4359-AB3C-986E313B4336} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{7386AB04-DF8D-4DFB-809D-1FAC8212CB7E} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{926E6474-5613-4373-BB99-B101158B91EF} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
@@ -317,13 +355,24 @@ Global
{AF664D85-0A4B-4BAB-A2F8-83110C06553A} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{B7D465A2-AE31-4CDF-A8B2-34B42D3EA84E} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
{991D0231-4623-496D-8BD0-9CA906029CBC} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{5B1171DC-FFFE-4813-A20D-786AAE47B320} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{39EC839A-3C30-4922-A41E-6B09D1DDE5C3} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{B29ED6D4-839B-413A-A485-B10F4A4788EA} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{609B09B4-AD1E-40F7-8899-A6685924621C} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{F9CCEFCD-21B3-4319-9DB1-A0756DA5BA1C} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{83ED2617-B398-4859-8F59-B38F8807E83E} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{FD50590A-59C1-4798-AD90-419A588DCE76} = {D3BAE68E-406E-493D-A4E5-DB6EDDFFB371}
{1477032D-7A02-4C5F-B026-A7117DA4BC6B} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{25017513-0D97-49D3-98D7-BA76D9B251B0} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{16857A4E-2609-47E6-9C35-7669D64DD040} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{A8C3F298-76AB-4359-AB3C-986E313B4336} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{83ED2617-B398-4859-8F59-B38F8807E83E} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{1FB2854F-C050-427D-9FAC-1D8F232E8025} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{5FDEC007-7AE0-4829-B1AE-6165E29375DA} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{C8F9C3DD-9328-49E3-8530-48E6A4C82CAF} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{1F278760-4F6B-42E8-B82D-01D4C8618340} = {F98C0329-C004-417F-B2AB-7466E88D8220}
{4A726345-FD6B-4E1C-9E5D-18C9043D7714} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FirebirdSql.Data.FirebirdClient" version="6.4.0" targetFramework="net461" />
<package id="NLog" version="4.7.0" targetFramework="net461" />
</packages>

View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props')" />
<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>{16857A4E-2609-47E6-9C35-7669D64DD040}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>EDMI.File.Test</RootNamespace>
<AssemblyName>EDMI.File.Test</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
<IsCodedUITest>False</IsCodedUITest>
<TestProjectType>UnitTest</TestProjectType>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>EDMI.File.Test.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>EDMI.File.Test.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="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
</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" />
<Import Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
</ItemGroup>
<ItemGroup>
<Compile Include="PathTest.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="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>
<ItemGroup>
<ProjectReference Include="..\EDMI.File\EDMI.File.vbproj">
<Project>{1477032d-7a02-4c5f-b026-a7117da4bc6b}</Project>
<Name>EDMI.File</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Logging\Logging.vbproj">
<Project>{903B2D7D-3B80-4BE9-8713-7447B704E1B0}</Project>
<Name>Logging</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props'))" />
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets'))" />
</Target>
<Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.targets')" />
</Project>

View File

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

View File

@@ -0,0 +1,18 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
<Assembly: AssemblyTitle("EDMI.File.Test")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("EDMI.File.Test")>
<Assembly: AssemblyCopyright("Copyright © 2020")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
<Assembly: Guid("a6f8dbf8-5ba9-478d-a230-1aca3ed6379c")>
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("EDMI.File.Test.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <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
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#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(ByVal sender As Global.System.Object, ByVal 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.EDMI.File.Test.My.MySettings
Get
Return Global.EDMI.File.Test.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

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

View File

@@ -0,0 +1,22 @@
Imports System.Text
Imports DigitalData.Modules.Logging
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports DigitalData.Modules.EDMI
<TestClass()> Public Class PathTest
'<TestMethod()> Public Sub TestMethod1()
' Dim oLogConfig As New LogConfig(LogConfig.PathType.Temp)
' Dim oTempPath = System.IO.Path.GetTempPath()
' Dim oPath As New DigitalData.Modules.EDMI.File.Path(oLogConfig, oTempPath)
' Dim oNow As DateTime = DateTime.Now
' Dim oYear = oNow.Year
' Dim oMonth = oNow.Month.ToString.PadLeft(2, "0")
' Dim oDay = oNow.Day.ToString.PadLeft(2, "0")
' Assert.AreEqual(oPath.GetFullPath("TestDocumentType"), $"{oTempPath}EDMI\Active\TestDocumentType\{oYear}\{oMonth}\{oDay}")
' Assert.AreEqual(oPath.GetArchivePath("TestDocumentType"), $"{oTempPath}EDMI\Archive\TestDocumentType\{oYear}\{oMonth}\{oDay}")
'End Sub
End Class

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MSTest.TestAdapter" version="1.3.2" targetFramework="net472" />
<package id="MSTest.TestFramework" version="1.3.2" targetFramework="net472" />
</packages>

View File

@@ -1,11 +1,39 @@
Imports DigitalData.Modules.Logging
Imports System.IO
Imports DigitalData.Modules.Logging
Public Class Archive
Private _LogConfig As LogConfig
Private _Logger As Logger
Private ReadOnly _LogConfig As LogConfig
Private ReadOnly _Logger As Logger
Public Sub New(LogConfig As LogConfig)
_LogConfig = LogConfig
_Logger = LogConfig.GetLogger()
End Sub
''' <summary>
''' Sets a retention-period for a give file path by setting the file attributes LastAccessTime and ReadOnly
''' </summary>
''' <param name="FilePath"></param>
''' <param name="RetentionTimeInDays">If greater than 0, sets this plus the current date as LastAccessTime</param>
''' <param name="[ReadOnly]">If true, sets ReadOnly Attribute</param>
Public Sub SetRetention(FilePath As String, RetentionTimeInDays As Integer, [ReadOnly] As Boolean)
Try
If RetentionTimeInDays > 0 Then
_Logger.Info("Setting LastAccessTime for file [{0}]", FilePath)
IO.File.SetLastAccessTime(FilePath, Date.Now.AddDays(RetentionTimeInDays))
End If
Catch ex As Exception
_Logger.Error(ex)
End Try
Try
If [ReadOnly] Then
_Logger.Info("Setting ReadOnly Attribute for file [{0}]", FilePath)
Dim oAttributes = IO.File.GetAttributes(FilePath) Or FileAttributes.ReadOnly
IO.File.SetAttributes(FilePath, oAttributes)
End If
Catch ex As Exception
_Logger.Error(ex)
End Try
End Sub
End Class

View File

@@ -46,7 +46,7 @@
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.0\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.7.2\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
@@ -89,6 +89,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Path.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">

50
EDMI.File/Path.vb Normal file
View File

@@ -0,0 +1,50 @@
Imports DigitalData.Modules.Logging
Imports System.IO
Public Class Path
Private ReadOnly _LogConfig As LogConfig
Private ReadOnly _Logger As Logger
Private ReadOnly _BasePath As String
Public Sub New(LogConfig As LogConfig, DatastoreBasePath As String)
_LogConfig = LogConfig
_Logger = LogConfig.GetLogger()
_BasePath = DatastoreBasePath
End Sub
Public Function GetFullPath(DocumentType As String, Optional FileName As String = "") As String
Dim oParts = New List(Of String) From {_BasePath}
oParts.AddRange(Do_GetRelativePath(DocumentType, FileName))
Return IO.Path.Combine(oParts.ToArray())
End Function
Public Function GetFullPathFromRelativePath(RelativePath As String) As String
Dim oParts = New List(Of String) From {_BasePath}
oParts.Add(RelativePath)
Return IO.Path.Combine(oParts.ToArray)
End Function
Public Function GetRelativePath(DocumentType As String, Optional FileName As String = "") As String
Return IO.Path.Combine(Do_GetRelativePath(DocumentType, FileName).ToArray)
End Function
Private Function Do_GetRelativePath(DocumentType As String, Optional FileName As String = "") As List(Of String)
Dim oPathParts As New List(Of String) From {DocumentType}
oPathParts.AddRange(GetDatePath())
oPathParts.Add(FileName)
Return oPathParts
End Function
Private Function GetDatePath() As List(Of String)
Dim oDate = DateTime.Now
Dim oResultList As New List(Of String) From {
oDate.Year,
oDate.Month.ToString.PadLeft(2, "0"),
oDate.Day.ToString.PadLeft(2, "0")
}
Return oResultList
End Function
End Class

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.7.0" targetFramework="net472" />
<package id="NLog" version="4.7.2" targetFramework="net472" />
</packages>

View File

@@ -1,8 +1,8 @@
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.EDMIAPI
Imports DigitalData.Modules.EDMIAPI.IDBServiceReference
Imports DigitalData.Modules.EDMI.API
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Imports DigitalData.GUIs.ClientSuite.Base
Imports System.ServiceModel.Security
@@ -73,15 +73,15 @@ Public Class ClassService
End Function)
End Function
Public Function GetChannelFactory() As IChannelFactory(Of IIDBServiceChannel)
Public Function GetChannelFactory() As IChannelFactory(Of IEDMIServiceChannel)
Return GetChannelFactory(My.SysConfig.ServiceConnection)
End Function
Public Function GetChannelFactory(EndpointURL As String) As ChannelFactory(Of IIDBServiceChannel)
Public Function GetChannelFactory(EndpointURL As String) As ChannelFactory(Of IEDMIServiceChannel)
Dim oBinding = GetBinding()
Dim oEndpoint = New EndpointAddress(EndpointURL)
Dim oFactory As New ChannelFactory(Of IIDBServiceChannel)(oBinding, oEndpoint)
Dim oFactory As New ChannelFactory(Of IEDMIServiceChannel)(oBinding, oEndpoint)
Return oFactory
End Function

View File

@@ -497,7 +497,7 @@
<Name>Config</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.EDMIAPI\EDMI.API.vbproj">
<Project>{5b1171dc-fffe-4813-a20d-786aae47b320}</Project>
<Project>{25017513-0d97-49d3-98d7-ba76d9b251b0}</Project>
<Name>EDMI.API</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Language\Language.vbproj">
@@ -512,8 +512,8 @@
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
<Name>Logging</Name>
</ProjectReference>
<ProjectReference Include="..\SERVICES\DDEDM_NetworkService\EDMIService.vbproj">
<Project>{A8C3F298-76AB-4359-AB3C-986E313B4336}</Project>
<ProjectReference Include="..\Service.EDMIService\EDMIService.vbproj">
<Project>{a8c3f298-76ab-4359-ab3c-986e313b4336}</Project>
<Name>EDMIService</Name>
</ProjectReference>
</ItemGroup>

View File

@@ -1,5 +1,5 @@
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.EDMIAPI.IDBServiceReference
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Public Class ClassCommonCommands
Private _LogConfig As LogConfig

View File

@@ -2,7 +2,7 @@
Imports System.Threading
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.EDMIAPI.IDBServiceReference
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Namespace My
''' <summary>
@@ -26,8 +26,8 @@ Namespace My
End Property
Property LogConfig As LogConfig
Property ChannelFactory As ChannelFactory(Of IIDBServiceChannel)
Property Channel As IIDBServiceChannel
Property ChannelFactory As ChannelFactory(Of IEDMIServiceChannel)
Property Channel As IEDMIServiceChannel
Property MainForm As frmMain
Property Common As ClassCommon
End Module

View File

@@ -1,6 +1,6 @@
Imports System.IO
Imports DigitalData.Modules.EDMIAPI
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.EDMI.API
Public Class frmFileTest
Private _fileOp As Document

View File

@@ -2,12 +2,12 @@
Imports System.ServiceModel
Imports System.Threading
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.EDMIAPI.IDBServiceReference
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Public NotInheritable Class frmSplash
Private _Worker As New BackgroundWorker()
Private _ChannelFactory As ChannelFactory(Of IIDBServiceChannel)
Private _Channel As IIDBServiceChannel
Private _ChannelFactory As ChannelFactory(Of IEDMIServiceChannel)
Private _Channel As IEDMIServiceChannel
Private _Logger As Logger
Private _CurrentRetry As Integer = 0

View File

@@ -6,8 +6,8 @@
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B7D465A2-AE31-4CDF-A8B2-34B42D3EA84E}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>DigitalData.Modules.ClipboardWatcher</RootNamespace>
<AssemblyName>DigitalData.Modules.ClipboardWatcher</AssemblyName>
<RootNamespace>DigitalData.GUIs.ClipboardWatcher</RootNamespace>
<AssemblyName>DigitalData.GUIs.ClipboardWatcher</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
@@ -18,7 +18,7 @@
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>DigitalData.Modules.ClipboardWatcher.xml</DocumentationFile>
<DocumentationFile>DigitalData.GUIs.ClipboardWatcher.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -27,7 +27,7 @@
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>DigitalData.Modules.ClipboardWatcher.xml</DocumentationFile>
<DocumentationFile>DigitalData.GUIs.ClipboardWatcher.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
@@ -55,7 +55,7 @@
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.0\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.7.2\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />

View File

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

View File

@@ -22,7 +22,7 @@ Namespace My.Resources
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -39,7 +39,7 @@ Namespace My.Resources
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.Modules.ClipboardWatcher.Resources", GetType(Resources).Assembly)
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.GUIs.ClipboardWatcher.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan

View File

@@ -15,7 +15,7 @@ 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.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
@@ -64,9 +64,9 @@ Namespace My
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.DigitalData.Modules.ClipboardWatcher.My.MySettings
Friend ReadOnly Property Settings() As Global.DigitalData.GUIs.ClipboardWatcher.My.MySettings
Get
Return Global.DigitalData.Modules.ClipboardWatcher.My.MySettings.Default
Return Global.DigitalData.GUIs.ClipboardWatcher.My.MySettings.Default
End Get
End Property
End Module

View File

@@ -0,0 +1 @@
DevExpress.XtraEditors.TileControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -1,5 +1,7 @@
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.Patterns
Public Class ProfileSearches
Private _LogConfig As LogConfig
@@ -34,7 +36,7 @@ Public Class ProfileSearches
Dim oSearchesDataTable = _Environment.Database.GetDatatable(oSQL)
Dim oDocSearches As New List(Of Search)
Dim oCounter As Integer = 0
Dim oPatterns As New Patterns.ClassPatterns(_LogConfig)
Dim oPatterns As New ClassPatterns(_LogConfig)
For Each oRow As DataRow In oSearchesDataTable.Rows
Dim oProfileId As Integer = oRow.Item("PROFILE_ID")
@@ -47,7 +49,8 @@ Public Class ProfileSearches
oSQL = oPatterns.ReplaceInternalValues(oSQL)
oSQL = oPatterns.ReplaceClipboardContents(oSQL, _Params.ClipboardContents)
Dim oDatatable As DataTable = _Environment.Database.GetDatatable(oSQL, oConnectionId)
Dim oConnectionString = GetConnectionString(oConnectionId)
Dim oDatatable As DataTable = _Environment.Database.GetDatatableWithConnection(oSQL, oConnectionString)
If oDatatable Is Nothing Then
_Logger.Warn("Error in SQL-Query '{0}'", oSQL)
@@ -69,6 +72,26 @@ Public Class ProfileSearches
Return oDocSearches
End Function
Private Function GetConnectionString(ConnectionId As Integer) As String
Dim oDatatable As DataTable = _Environment.Database.GetDatatable($"SELECT * FROM TBDD_CONNECTION WHERE GUID = {ConnectionId}")
If oDatatable.Rows.Count > 0 Then
Dim oRow As DataRow = oDatatable.Rows.Item(0)
Select Case oRow.Item("SQL_PROVIDER")
Case "MS-SQL"
Dim oConnectionString = MSSQLServer.GetConnectionString(oRow.Item("SERVER"), oRow.Item("DATENBANK"), oRow.Item("USERNAME"), oRow.Item("PASSWORD"))
Return oConnectionString
Case Else
Return Nothing
End Select
Else
Return Nothing
End If
End Function
Public Async Function LoadDataSearchesAsync(ProfileId As Integer) As Task(Of List(Of Search))
Return Await Task.Run(Function()
Return DoLoadDataSearches(ProfileId)
@@ -83,7 +106,7 @@ Public Class ProfileSearches
Dim oSearchesDataTable = _Environment.Database.GetDatatable(oSQL)
Dim oCounter As Integer = 0
Dim oPatterns As New Patterns.ClassPatterns(_LogConfig)
Dim oPatterns As New ClassPatterns(_LogConfig)
For Each oRow As DataRow In oSearchesDataTable.Rows
Try
@@ -94,8 +117,10 @@ Public Class ProfileSearches
oSQL = oRow.Item("SQL_COMMAND")
oSQL = oPatterns.ReplaceUserValues(oSQL, _Environment.User)
oSQL = oPatterns.ReplaceInternalValues(oSQL)
oSQL = oPatterns.ReplaceClipboardContents(oSQL, _Params.ClipboardContents)
Dim oDatatable As DataTable = _Environment.Database.GetDatatable(oSQL, oConnectionId)
Dim oConnectionString = GetConnectionString(oConnectionId)
Dim oDatatable As DataTable = _Environment.Database.GetDatatableWithConnection(oSQL, oConnectionString)
If oDatatable Is Nothing Then
_Logger.Warn("Error in SQL-Query '{0}'", oSQL)

View File

@@ -75,12 +75,13 @@ Partial Class frmMatch
Me.Label1.ForeColor = System.Drawing.Color.White
Me.Label1.Location = New System.Drawing.Point(12, 9)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(368, 21)
Me.Label1.Size = New System.Drawing.Size(408, 21)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Es wurde(n) {0} für Ihre Suche nach '{1}' gefunden:"
Me.Label1.Text = "Es wurde(n) {0} in {1} für Ihre Suche nach '{2}' gefunden:"
'
'Label2
'
Me.Label2.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.Label2.AutoSize = True
Me.Label2.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
Me.Label2.Cursor = System.Windows.Forms.Cursors.Hand
@@ -100,8 +101,8 @@ Partial Class frmMatch
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.TileControlMatch)
Me.IconOptions.ShowIcon = False
Me.Name = "frmMatch"
Me.ShowIcon = False
Me.Text = "Profile gefunden"
Me.ResumeLayout(False)
Me.PerformLayout()

View File

@@ -7,6 +7,7 @@ Imports DigitalData.Modules.Windows
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.ZooFlow.Params
Imports DigitalData.Modules
''' <summary>
'''
@@ -55,8 +56,18 @@ Public Class frmMatch
_Params = Params
End Sub
Private Function GetResultString(CreatedTiles, MatchedProfiles, ClipboardContents) As String
Dim oResultString = IIf(CreatedTiles = 1, "wurde ein Ergebnis", $"wurden {CreatedTiles} Ergebnisse")
Dim oProfileString = IIf(MatchedProfiles = 1, "einem Profil", $"{MatchedProfiles} Profilen")
Dim oBase = "Es {0} in {1} für Ihre Suche nach '{2}' gefunden:"
Return String.Format(oBase, oResultString, oProfileString, _Params.ClipboardContents)
End Function
Private Async Sub frmMatch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim oCreatedTiles = CreateTiles()
Dim oResult As Tuple(Of Integer, Integer) = CreateTiles()
Dim oCreatedTiles As Integer = oResult.Item1
Dim oMatchedProfiles As Integer = oResult.Item2
If oCreatedTiles = -1 Then
Exit Sub
@@ -67,11 +78,11 @@ Public Class frmMatch
Close()
End If
Dim oMatchString = IIf(oCreatedTiles = 1, "1 Profil", $"{oCreatedTiles} Profile")
Label1.Text = String.Format(Label1.Text, oMatchString, _Params.ClipboardContents)
Label1.Text = GetResultString(oCreatedTiles, oMatchedProfiles, _Params.ClipboardContents)
_Logger.Debug($"Created Tiles: {oCreatedTiles} ")
If oCreatedTiles = 1 Then
_Logger.Debug($"Matched Profiles: {oMatchedProfiles}")
If oCreatedTiles = 1 Then
Dim oProfile As ProfileData = _Params.MatchingProfiles.First()
Dim oProfileSearch As New ProfileSearches(_LogConfig, _Environment, _Params)
@@ -96,9 +107,11 @@ Public Class frmMatch
TopMost = True
End Sub
Function CreateTiles() As Integer
Function CreateTiles() As Tuple(Of Integer, Integer)
Try
Dim oCreatedTiles As Integer = 0
Dim oMatchedProfiles As Integer = 0
Dim oDocumentGroup = TileControlMatch.Groups.Item("TileGroupDocuments")
Dim oDataGroup = TileControlMatch.Groups.Item("TileGroupData")
Dim oDataDocumentsGroup = TileControlMatch.Groups.Item("TileGroupDocumentsData")
@@ -117,12 +130,15 @@ Public Class frmMatch
' End If
'End If
Dim oProfileMatch As Boolean = False
If oProfile.ProfileType = ProfileType.ANY Or oProfile.ProfileType = ProfileType.DOCS_ONLY Then
_Logger.Debug("Docs only or ProfileTypeAny")
If oProfile.CountDocs > 0 Then
Dim oItem = CreateTile(oProfile, $"{oProfile.CountDocs} Dateien")
oDocumentGroup.Items.Add(oItem)
oCreatedTiles += 1
oProfileMatch = True
Else
_Logger.Debug("NO Doc-Results!")
End If
@@ -133,17 +149,22 @@ Public Class frmMatch
Dim oItem = CreateTile(oProfile, $"{oProfile.CountData} Datensätze")
oDataGroup.Items.Add(oItem)
oCreatedTiles += 1
oProfileMatch = True
Else
_Logger.Debug("NO Data-Results!")
End If
End If
If oProfileMatch Then
oMatchedProfiles += 1
End If
Next
Return oCreatedTiles
Return New Tuple(Of Integer, Integer)(oCreatedTiles, oMatchedProfiles)
Catch ex As Exception
_Logger.Error(ex)
MsgBox("Error while creating profile tiles!" & vbNewLine & ex.Message)
Return -1
Return New Tuple(Of Integer, Integer)(-1, -1)
End Try
End Function
@@ -199,7 +220,9 @@ Public Class frmMatch
Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
Dim oForm As New frmTreeView(_Params.MatchTreeView.Nodes) With {
.StartPosition = FormStartPosition.CenterScreen
.StartPosition = FormStartPosition.Manual,
.Left = Left + Width,
.Top = Top
}
oForm.ShowDialog()
End Sub

View File

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

View File

@@ -62,7 +62,7 @@
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.0\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.7.2\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />

View File

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

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

535
GUIs.Test.EDMIBenchmark/Form1.Designer.vb generated Normal file
View File

@@ -0,0 +1,535 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Form1
Inherits DevExpress.XtraBars.Ribbon.RibbonForm
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Dim DockingContainer1 As DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer = New DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer()
Me.DocumentGroup1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.DocumentGroup(Me.components)
Me.Document1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.Document(Me.components)
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.ButtonSelectFiles = New DevExpress.XtraBars.BarButtonItem()
Me.ButtonImportFiles = New DevExpress.XtraBars.BarButtonItem()
Me.buttonClearLog = New DevExpress.XtraBars.BarButtonItem()
Me.buttonClearFiles = New DevExpress.XtraBars.BarButtonItem()
Me.TextboxObjectId = New DevExpress.XtraBars.BarEditItem()
Me.RepositoryItemTextEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
Me.ButtonLoadFile = New DevExpress.XtraBars.BarButtonItem()
Me.BarListItem1 = New DevExpress.XtraBars.BarListItem()
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
Me.BarToggleSwitchItem1 = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.BarDockingMenuItem1 = New DevExpress.XtraBars.BarDockingMenuItem()
Me.BarMdiChildrenListItem1 = New DevExpress.XtraBars.BarMdiChildrenListItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup4 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.DocumentManager1 = New DevExpress.XtraBars.Docking2010.DocumentManager(Me.components)
Me.TabbedView1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView(Me.components)
Me.DockManager1 = New DevExpress.XtraBars.Docking.DockManager(Me.components)
Me.hideContainerBottom = New DevExpress.XtraBars.Docking.AutoHideContainer()
Me.DockPanel3 = New DevExpress.XtraBars.Docking.DockPanel()
Me.DockPanel3_Container = New DevExpress.XtraBars.Docking.ControlContainer()
Me.listboxLog = New DevExpress.XtraEditors.ListBoxControl()
Me.panelContainer1 = New DevExpress.XtraBars.Docking.DockPanel()
Me.DockPanel4 = New DevExpress.XtraBars.Docking.DockPanel()
Me.DockPanel4_Container = New DevExpress.XtraBars.Docking.ControlContainer()
Me.GridControl1 = New DevExpress.XtraGrid.GridControl()
Me.BindingSource1 = New System.Windows.Forms.BindingSource(Me.components)
Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridColumn1 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn2 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.DockPanel1 = New DevExpress.XtraBars.Docking.DockPanel()
Me.DockPanel1_Container = New DevExpress.XtraBars.Docking.ControlContainer()
Me.listboxFiles = New DevExpress.XtraEditors.ListBoxControl()
Me.DockPanel2 = New DevExpress.XtraBars.Docking.DockPanel()
Me.DockPanel2_Container = New DevExpress.XtraBars.Docking.ControlContainer()
Me.DocumentViewer1 = New DigitalData.Controls.DocumentViewer.DocumentViewer()
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
CType(Me.DocumentGroup1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.Document1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DocumentManager1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.TabbedView1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.hideContainerBottom.SuspendLayout()
Me.DockPanel3.SuspendLayout()
Me.DockPanel3_Container.SuspendLayout()
CType(Me.listboxLog, System.ComponentModel.ISupportInitialize).BeginInit()
Me.panelContainer1.SuspendLayout()
Me.DockPanel4.SuspendLayout()
Me.DockPanel4_Container.SuspendLayout()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.BindingSource1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.DockPanel1.SuspendLayout()
Me.DockPanel1_Container.SuspendLayout()
CType(Me.listboxFiles, System.ComponentModel.ISupportInitialize).BeginInit()
Me.DockPanel2.SuspendLayout()
Me.DockPanel2_Container.SuspendLayout()
Me.SuspendLayout()
'
'DocumentGroup1
'
Me.DocumentGroup1.Items.AddRange(New DevExpress.XtraBars.Docking2010.Views.Tabbed.Document() {Me.Document1})
'
'Document1
'
Me.Document1.Caption = "Document Viewer"
Me.Document1.ControlName = "DockPanel2"
Me.Document1.FloatLocation = New System.Drawing.Point(0, 0)
Me.Document1.FloatSize = New System.Drawing.Size(200, 200)
Me.Document1.Properties.AllowClose = DevExpress.Utils.DefaultBoolean.[False]
Me.Document1.Properties.AllowFloat = DevExpress.Utils.DefaultBoolean.[True]
Me.Document1.Properties.AllowFloatOnDoubleClick = DevExpress.Utils.DefaultBoolean.[True]
'
'RibbonControl1
'
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.ButtonSelectFiles, Me.ButtonImportFiles, Me.buttonClearLog, Me.buttonClearFiles, Me.TextboxObjectId, Me.ButtonLoadFile, Me.BarListItem1, Me.BarButtonItem2, Me.BarToggleSwitchItem1, Me.BarDockingMenuItem1, Me.BarMdiChildrenListItem1, Me.BarButtonItem1})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 14
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.PageHeaderItemLinks.Add(Me.BarDockingMenuItem1)
Me.RibbonControl1.PageHeaderItemLinks.Add(Me.BarMdiChildrenListItem1)
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemTextEdit1})
Me.RibbonControl1.Size = New System.Drawing.Size(1310, 158)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
'
'ButtonSelectFiles
'
Me.ButtonSelectFiles.Caption = "Select Files..."
Me.ButtonSelectFiles.Id = 1
Me.ButtonSelectFiles.ImageOptions.SvgImage = CType(resources.GetObject("ButtonSelectFiles.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.ButtonSelectFiles.Name = "ButtonSelectFiles"
'
'ButtonImportFiles
'
Me.ButtonImportFiles.Caption = "Import Files"
Me.ButtonImportFiles.Id = 2
Me.ButtonImportFiles.ImageOptions.SvgImage = CType(resources.GetObject("ButtonImportFiles.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.ButtonImportFiles.Name = "ButtonImportFiles"
'
'buttonClearLog
'
Me.buttonClearLog.Caption = "Clear Log"
Me.buttonClearLog.Id = 3
Me.buttonClearLog.ImageOptions.SvgImage = CType(resources.GetObject("buttonClearLog.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.buttonClearLog.Name = "buttonClearLog"
'
'buttonClearFiles
'
Me.buttonClearFiles.Caption = "Clear Files"
Me.buttonClearFiles.Id = 4
Me.buttonClearFiles.ImageOptions.SvgImage = CType(resources.GetObject("buttonClearFiles.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.buttonClearFiles.Name = "buttonClearFiles"
'
'TextboxObejctId
'
Me.TextboxObjectId.Caption = "Document Id"
Me.TextboxObjectId.Edit = Me.RepositoryItemTextEdit1
Me.TextboxObjectId.EditWidth = 100
Me.TextboxObjectId.Id = 5
Me.TextboxObjectId.ImageOptions.SvgImage = CType(resources.GetObject("TextboxObejctId.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.TextboxObjectId.Name = "TextboxObejctId"
'
'RepositoryItemTextEdit1
'
Me.RepositoryItemTextEdit1.AutoHeight = False
Me.RepositoryItemTextEdit1.Name = "RepositoryItemTextEdit1"
'
'ButtonLoadFile
'
Me.ButtonLoadFile.Caption = "Load File"
Me.ButtonLoadFile.Id = 6
Me.ButtonLoadFile.ImageOptions.SvgImage = CType(resources.GetObject("ButtonLoadFile.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.ButtonLoadFile.Name = "ButtonLoadFile"
'
'BarListItem1
'
Me.BarListItem1.Caption = "Strategy"
Me.BarListItem1.Id = 7
Me.BarListItem1.ImageOptions.SvgImage = CType(resources.GetObject("BarListItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarListItem1.Name = "BarListItem1"
Me.BarListItem1.Strings.AddRange(New Object() {"Small Files", "Big Files", "Mixed Files"})
'
'BarButtonItem2
'
Me.BarButtonItem2.Caption = "List Files"
Me.BarButtonItem2.Id = 9
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem2.Name = "BarButtonItem2"
'
'BarToggleSwitchItem1
'
Me.BarToggleSwitchItem1.Caption = "Load File every 3 Seconds"
Me.BarToggleSwitchItem1.Id = 10
Me.BarToggleSwitchItem1.Name = "BarToggleSwitchItem1"
'
'BarDockingMenuItem1
'
Me.BarDockingMenuItem1.Caption = "BarDockingMenuItem1"
Me.BarDockingMenuItem1.Id = 11
Me.BarDockingMenuItem1.Name = "BarDockingMenuItem1"
'
'BarMdiChildrenListItem1
'
Me.BarMdiChildrenListItem1.Caption = "BarMdiChildrenListItem1"
Me.BarMdiChildrenListItem1.Id = 12
Me.BarMdiChildrenListItem1.Name = "BarMdiChildrenListItem1"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup4, Me.RibbonPageGroup3})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "Start"
'
'RibbonPageGroup1
'
Me.RibbonPageGroup1.ItemLinks.Add(Me.ButtonSelectFiles)
Me.RibbonPageGroup1.ItemLinks.Add(Me.ButtonImportFiles)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "Import"
'
'RibbonPageGroup4
'
Me.RibbonPageGroup4.ItemLinks.Add(Me.TextboxObjectId)
Me.RibbonPageGroup4.ItemLinks.Add(Me.BarToggleSwitchItem1)
Me.RibbonPageGroup4.ItemLinks.Add(Me.ButtonLoadFile)
Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroup4.Name = "RibbonPageGroup4"
Me.RibbonPageGroup4.Text = "Retrieve"
'
'RibbonPageGroup3
'
Me.RibbonPageGroup3.ItemLinks.Add(Me.buttonClearLog, True)
Me.RibbonPageGroup3.ItemLinks.Add(Me.buttonClearFiles)
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
Me.RibbonPageGroup3.Text = "Utils"
'
'RibbonStatusBar1
'
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 640)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
Me.RibbonStatusBar1.Size = New System.Drawing.Size(1310, 24)
'
'RibbonPage2
'
Me.RibbonPage2.Name = "RibbonPage2"
Me.RibbonPage2.Text = "RibbonPage2"
'
'DocumentManager1
'
Me.DocumentManager1.ContainerControl = Me
Me.DocumentManager1.MenuManager = Me.RibbonControl1
Me.DocumentManager1.View = Me.TabbedView1
Me.DocumentManager1.ViewCollection.AddRange(New DevExpress.XtraBars.Docking2010.Views.BaseView() {Me.TabbedView1})
'
'TabbedView1
'
Me.TabbedView1.DocumentGroups.AddRange(New DevExpress.XtraBars.Docking2010.Views.Tabbed.DocumentGroup() {Me.DocumentGroup1})
Me.TabbedView1.Documents.AddRange(New DevExpress.XtraBars.Docking2010.Views.BaseDocument() {Me.Document1})
DockingContainer1.Element = Me.DocumentGroup1
Me.TabbedView1.RootContainer.Nodes.AddRange(New DevExpress.XtraBars.Docking2010.Views.Tabbed.DockingContainer() {DockingContainer1})
'
'DockManager1
'
Me.DockManager1.AutoHideContainers.AddRange(New DevExpress.XtraBars.Docking.AutoHideContainer() {Me.hideContainerBottom})
Me.DockManager1.Form = Me
Me.DockManager1.RootPanels.AddRange(New DevExpress.XtraBars.Docking.DockPanel() {Me.panelContainer1, Me.DockPanel2})
Me.DockManager1.TopZIndexControls.AddRange(New String() {"DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.StatusBar", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl"})
'
'hideContainerBottom
'
Me.hideContainerBottom.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(240, Byte), Integer), CType(CType(240, Byte), Integer))
Me.hideContainerBottom.Controls.Add(Me.DockPanel3)
Me.hideContainerBottom.Dock = System.Windows.Forms.DockStyle.Bottom
Me.hideContainerBottom.Location = New System.Drawing.Point(0, 619)
Me.hideContainerBottom.Name = "hideContainerBottom"
Me.hideContainerBottom.Size = New System.Drawing.Size(1310, 21)
'
'DockPanel3
'
Me.DockPanel3.Controls.Add(Me.DockPanel3_Container)
Me.DockPanel3.Dock = DevExpress.XtraBars.Docking.DockingStyle.Bottom
Me.DockPanel3.FloatVertical = True
Me.DockPanel3.ID = New System.Guid("b0b62b80-3cf3-4f78-a50d-4a79b9cabc39")
Me.DockPanel3.Location = New System.Drawing.Point(0, 0)
Me.DockPanel3.Name = "DockPanel3"
Me.DockPanel3.Options.ShowCloseButton = False
Me.DockPanel3.OriginalSize = New System.Drawing.Size(200, 119)
Me.DockPanel3.SavedDock = DevExpress.XtraBars.Docking.DockingStyle.Bottom
Me.DockPanel3.SavedIndex = 0
Me.DockPanel3.Size = New System.Drawing.Size(1310, 119)
Me.DockPanel3.Text = "Log"
Me.DockPanel3.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide
'
'DockPanel3_Container
'
Me.DockPanel3_Container.Controls.Add(Me.listboxLog)
Me.DockPanel3_Container.Location = New System.Drawing.Point(3, 27)
Me.DockPanel3_Container.Name = "DockPanel3_Container"
Me.DockPanel3_Container.Size = New System.Drawing.Size(1304, 89)
Me.DockPanel3_Container.TabIndex = 0
'
'listboxLog
'
Me.listboxLog.Dock = System.Windows.Forms.DockStyle.Fill
Me.listboxLog.Location = New System.Drawing.Point(0, 0)
Me.listboxLog.Name = "listboxLog"
Me.listboxLog.Size = New System.Drawing.Size(1304, 89)
Me.listboxLog.TabIndex = 0
'
'panelContainer1
'
Me.panelContainer1.ActiveChild = Me.DockPanel4
Me.panelContainer1.Controls.Add(Me.DockPanel4)
Me.panelContainer1.Controls.Add(Me.DockPanel1)
Me.panelContainer1.Dock = DevExpress.XtraBars.Docking.DockingStyle.Left
Me.panelContainer1.ID = New System.Guid("17067a8c-1b48-4d4a-b383-b7f8d5a8be59")
Me.panelContainer1.Location = New System.Drawing.Point(0, 158)
Me.panelContainer1.Name = "panelContainer1"
Me.panelContainer1.Options.ShowCloseButton = False
Me.panelContainer1.OriginalSize = New System.Drawing.Size(451, 200)
Me.panelContainer1.Size = New System.Drawing.Size(451, 461)
Me.panelContainer1.Tabbed = True
Me.panelContainer1.Text = "panelContainer1"
'
'DockPanel4
'
Me.DockPanel4.Controls.Add(Me.DockPanel4_Container)
Me.DockPanel4.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill
Me.DockPanel4.ID = New System.Guid("bddc849b-1066-4d2f-8fd3-9bc377a2bd74")
Me.DockPanel4.Location = New System.Drawing.Point(3, 26)
Me.DockPanel4.Name = "DockPanel4"
Me.DockPanel4.Options.ShowCloseButton = False
Me.DockPanel4.OriginalSize = New System.Drawing.Size(200, 200)
Me.DockPanel4.Size = New System.Drawing.Size(444, 406)
Me.DockPanel4.Text = "List Files"
'
'DockPanel4_Container
'
Me.DockPanel4_Container.Controls.Add(Me.GridControl1)
Me.DockPanel4_Container.Location = New System.Drawing.Point(0, 0)
Me.DockPanel4_Container.Name = "DockPanel4_Container"
Me.DockPanel4_Container.Size = New System.Drawing.Size(444, 406)
Me.DockPanel4_Container.TabIndex = 0
'
'GridControl1
'
Me.GridControl1.DataSource = Me.BindingSource1
Me.GridControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.GridControl1.Location = New System.Drawing.Point(0, 0)
Me.GridControl1.MainView = Me.GridView1
Me.GridControl1.MenuManager = Me.RibbonControl1
Me.GridControl1.Name = "GridControl1"
Me.GridControl1.Size = New System.Drawing.Size(444, 406)
Me.GridControl1.TabIndex = 0
Me.GridControl1.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1})
'
'BindingSource1
'
'
'GridView1
'
Me.GridView1.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.GridColumn1, Me.GridColumn2})
Me.GridView1.GridControl = Me.GridControl1
Me.GridView1.Name = "GridView1"
Me.GridView1.OptionsBehavior.Editable = False
Me.GridView1.OptionsBehavior.ReadOnly = True
'
'GridColumn1
'
Me.GridColumn1.Caption = "Object Id"
Me.GridColumn1.FieldName = "IDB_OBJ_ID"
Me.GridColumn1.MaxWidth = 100
Me.GridColumn1.MinWidth = 100
Me.GridColumn1.Name = "GridColumn1"
Me.GridColumn1.Visible = True
Me.GridColumn1.VisibleIndex = 0
Me.GridColumn1.Width = 100
'
'GridColumn2
'
Me.GridColumn2.Caption = "Document Name"
Me.GridColumn2.FieldName = "DocName"
Me.GridColumn2.Name = "GridColumn2"
Me.GridColumn2.Visible = True
Me.GridColumn2.VisibleIndex = 1
Me.GridColumn2.Width = 409
'
'DockPanel1
'
Me.DockPanel1.Controls.Add(Me.DockPanel1_Container)
Me.DockPanel1.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill
Me.DockPanel1.ID = New System.Guid("12b5eead-07cc-48c6-93a4-85cd0b4b82ce")
Me.DockPanel1.Location = New System.Drawing.Point(3, 26)
Me.DockPanel1.Name = "DockPanel1"
Me.DockPanel1.Options.ShowCloseButton = False
Me.DockPanel1.OriginalSize = New System.Drawing.Size(200, 200)
Me.DockPanel1.Size = New System.Drawing.Size(444, 406)
Me.DockPanel1.Text = "Files to Upload"
'
'DockPanel1_Container
'
Me.DockPanel1_Container.Controls.Add(Me.listboxFiles)
Me.DockPanel1_Container.Location = New System.Drawing.Point(0, 0)
Me.DockPanel1_Container.Name = "DockPanel1_Container"
Me.DockPanel1_Container.Size = New System.Drawing.Size(444, 406)
Me.DockPanel1_Container.TabIndex = 0
'
'listboxFiles
'
Me.listboxFiles.Dock = System.Windows.Forms.DockStyle.Fill
Me.listboxFiles.Location = New System.Drawing.Point(0, 0)
Me.listboxFiles.Name = "listboxFiles"
Me.listboxFiles.Size = New System.Drawing.Size(444, 406)
Me.listboxFiles.TabIndex = 1
'
'DockPanel2
'
Me.DockPanel2.Controls.Add(Me.DockPanel2_Container)
Me.DockPanel2.DockedAsTabbedDocument = True
Me.DockPanel2.ID = New System.Guid("e82850af-b594-49e9-ae83-36d4bf007da5")
Me.DockPanel2.Name = "DockPanel2"
Me.DockPanel2.Options.ShowCloseButton = False
Me.DockPanel2.OriginalSize = New System.Drawing.Size(200, 200)
Me.DockPanel2.Text = "Document Viewer"
'
'DockPanel2_Container
'
Me.DockPanel2_Container.Controls.Add(Me.DocumentViewer1)
Me.DockPanel2_Container.Location = New System.Drawing.Point(0, 0)
Me.DockPanel2_Container.Name = "DockPanel2_Container"
Me.DockPanel2_Container.Size = New System.Drawing.Size(853, 432)
Me.DockPanel2_Container.TabIndex = 0
'
'DocumentViewer1
'
Me.DocumentViewer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.DocumentViewer1.Location = New System.Drawing.Point(0, 0)
Me.DocumentViewer1.Name = "DocumentViewer1"
Me.DocumentViewer1.Size = New System.Drawing.Size(853, 432)
Me.DocumentViewer1.TabIndex = 0
'
'Timer1
'
Me.Timer1.Interval = 3000
'
'BarButtonItem1
'
Me.BarButtonItem1.Caption = "Open Log Directory"
Me.BarButtonItem1.Id = 13
Me.BarButtonItem1.Name = "BarButtonItem1"
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1310, 664)
Me.Controls.Add(Me.panelContainer1)
Me.Controls.Add(Me.hideContainerBottom)
Me.Controls.Add(Me.RibbonStatusBar1)
Me.Controls.Add(Me.RibbonControl1)
Me.Name = "Form1"
Me.Ribbon = Me.RibbonControl1
Me.StatusBar = Me.RibbonStatusBar1
Me.Text = "Form1"
CType(Me.DocumentGroup1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.Document1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DocumentManager1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.TabbedView1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).EndInit()
Me.hideContainerBottom.ResumeLayout(False)
Me.DockPanel3.ResumeLayout(False)
Me.DockPanel3_Container.ResumeLayout(False)
CType(Me.listboxLog, System.ComponentModel.ISupportInitialize).EndInit()
Me.panelContainer1.ResumeLayout(False)
Me.DockPanel4.ResumeLayout(False)
Me.DockPanel4_Container.ResumeLayout(False)
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.BindingSource1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
Me.DockPanel1.ResumeLayout(False)
Me.DockPanel1_Container.ResumeLayout(False)
CType(Me.listboxFiles, System.ComponentModel.ISupportInitialize).EndInit()
Me.DockPanel2.ResumeLayout(False)
Me.DockPanel2_Container.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents ButtonSelectFiles As DevExpress.XtraBars.BarButtonItem
Friend WithEvents ButtonImportFiles As DevExpress.XtraBars.BarButtonItem
Friend WithEvents buttonClearLog As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents buttonClearFiles As DevExpress.XtraBars.BarButtonItem
Friend WithEvents TextboxObjectId As DevExpress.XtraBars.BarEditItem
Friend WithEvents RepositoryItemTextEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
Friend WithEvents ButtonLoadFile As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup4 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents BarListItem1 As DevExpress.XtraBars.BarListItem
Friend WithEvents DocumentManager1 As DevExpress.XtraBars.Docking2010.DocumentManager
Friend WithEvents DockPanel1 As DevExpress.XtraBars.Docking.DockPanel
Friend WithEvents DockPanel1_Container As DevExpress.XtraBars.Docking.ControlContainer
Friend WithEvents listboxFiles As DevExpress.XtraEditors.ListBoxControl
Friend WithEvents listboxLog As DevExpress.XtraEditors.ListBoxControl
Friend WithEvents DocumentViewer1 As DigitalData.Controls.DocumentViewer.DocumentViewer
Friend WithEvents TabbedView1 As DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView
Friend WithEvents DockManager1 As DevExpress.XtraBars.Docking.DockManager
Friend WithEvents DockPanel3 As DevExpress.XtraBars.Docking.DockPanel
Friend WithEvents DockPanel3_Container As DevExpress.XtraBars.Docking.ControlContainer
Friend WithEvents DocumentGroup1 As DevExpress.XtraBars.Docking2010.Views.Tabbed.DocumentGroup
Friend WithEvents Document1 As DevExpress.XtraBars.Docking2010.Views.Tabbed.Document
Friend WithEvents DockPanel2 As DevExpress.XtraBars.Docking.DockPanel
Friend WithEvents DockPanel2_Container As DevExpress.XtraBars.Docking.ControlContainer
Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
Friend WithEvents panelContainer1 As DevExpress.XtraBars.Docking.DockPanel
Friend WithEvents DockPanel4 As DevExpress.XtraBars.Docking.DockPanel
Friend WithEvents DockPanel4_Container As DevExpress.XtraBars.Docking.ControlContainer
Friend WithEvents GridControl1 As DevExpress.XtraGrid.GridControl
Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents hideContainerBottom As DevExpress.XtraBars.Docking.AutoHideContainer
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents GridColumn1 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents GridColumn2 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents BindingSource1 As BindingSource
Friend WithEvents BarToggleSwitchItem1 As DevExpress.XtraBars.BarToggleSwitchItem
Friend WithEvents Timer1 As Timer
Friend WithEvents BarDockingMenuItem1 As DevExpress.XtraBars.BarDockingMenuItem
Friend WithEvents BarMdiChildrenListItem1 As DevExpress.XtraBars.BarMdiChildrenListItem
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
End Class

View File

@@ -0,0 +1,301 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="DevExpress.Data.v19.2" name="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="ButtonSelectFiles.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJQCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iT3BlbiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIg
MzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLnN0
MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJN
Mi4yLDI1LjJsNS41LTEyYzAuMy0wLjcsMS0xLjIsMS44LTEuMkgyNlY5YzAtMC42LTAuNC0xLTEtMUgx
MlY1YzAtMC42LTAuNC0xLTEtMUgzQzIuNCw0LDIsNC40LDIsNXYyMCAgIGMwLDAuMiwwLDAuMywwLjEs
MC40QzIuMSwyNS4zLDIuMiwyNS4zLDIuMiwyNS4yeiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPC9nPg0K
ICA8cGF0aCBkPSJNMzEuMywxNEg5LjZMNCwyNmgyMS44YzAuNSwwLDEuMS0wLjMsMS4zLTAuN0wzMiwx
NC43QzMyLjEsMTQuMywzMS44LDE0LDMxLjMsMTR6IiBjbGFzcz0iWWVsbG93IiAvPg0KPC9zdmc+Cw==
</value>
</data>
<data name="ButtonImportFiles.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOsCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
Pg0KICA8ZyBpZD0iSW1wb3J0Ij4NCiAgICA8cGF0aCBkPSJNMTAsMTJINlY2aDRWMTJ6IE0yMiwxN3Yx
djljMCwwLjYtMC40LDEtMSwxSDFjLTAuNiwwLTEtMC40LTEtMVY3YzAtMC42LDAuNC0xLDEtMWgzdjho
MTRMMjIsMTd6IE0xOCwxOEg0ICAgdjZoMTRWMTh6IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPHBvbHln
b24gcG9pbnRzPSIzMCw2IDIyLDYgMjIsMiAxNCw4IDIyLDE0IDIyLDEwIDMwLDEwICAiIGNsYXNzPSJH
cmVlbiIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
</data>
<data name="buttonClearLog.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAK8DAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iQ2xlYXJfUGl2b3RfVGFibGUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3Vu
ZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5SZWR7ZmlsbDojRDEx
QzFDO30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5zdDB7b3Bh
Y2l0eTowLjU7fQo8L3N0eWxlPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJNMTAsMTBI
NlY2aDRWMTB6IE0yNCw2SDEydjRoMTJWNnogTTEwLDEySDZ2MTJoNFYxMnoiIGNsYXNzPSJCbHVlIiAv
Pg0KICA8L2c+DQogIDxwYXRoIGQ9Ik0xOSwyMy4zTDE2LjMsMjZjLTAuNCwwLjQtMC40LDEuMiwwLDEu
Nmw0LDRjMC40LDAuNCwxLjIsMC40LDEuNiwwbDIuNy0yLjdMMTksMjMuM3oiIGNsYXNzPSJCbHVlIiAv
Pg0KICA8cGF0aCBkPSJNMTQsMjYuOGMwLTAuMywwLjEtMC42LDAuMS0wLjhINFY0aDIydjEwLjFjMC4z
LTAuMSwwLjUtMC4xLDAuOC0wLjFjMC40LDAsMC44LDAuMSwxLjIsMC4yVjMgIGMwLTAuNi0wLjQtMS0x
LTFIM0MyLjQsMiwyLDIuNCwyLDN2MjRjMCwwLjYsMC40LDEsMSwxaDExLjJDMTQuMSwyNy42LDE0LDI3
LjIsMTQsMjYuOHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTMxLjcsMjAuNGwtNC00Yy0w
LjQtMC40LTEuMi0wLjQtMS42LDBsLTYuMSw2LjFsNS42LDUuNmw2LjEtNi4xQzMyLjEsMjEuNSwzMi4x
LDIwLjgsMzEuNywyMC40eiIgY2xhc3M9IlJlZCIgLz4NCjwvc3ZnPgs=
</value>
</data>
<data name="buttonClearFiles.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAEACAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iQ2xlYXIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMy
IDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5CbHVl
e2ZpbGw6IzExNzdENzt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0xNi4xLDIzLjFsLTQuNCw0LjRjLTAu
NywwLjctMS45LDAuNy0yLjYsMGwtNi42LTYuNmMtMC43LTAuNy0wLjctMS45LDAtMi42TDYuOSwxNEwx
Ni4xLDIzLjF6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPHBhdGggZD0iTTI3LjUsMTEuOGwtMTAsMTBsLTku
Mi05LjJsMTAtMTBjMC43LTAuNywxLjktMC43LDIuNiwwbDYuNiw2LjZDMjguMiw5LjksMjguMiwxMSwy
Ny41LDExLjh6IiBjbGFzcz0iUmVkIiAvPg0KPC9zdmc+Cw==
</value>
</data>
<data name="TextboxObejctId.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGkEAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MTYgMTYiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
R3JlZW57ZmlsbDojMDM5QzIzO30KCS5XaGl0ZXtmaWxsOiNGRkZGRkY7fQoJLnN0MHtvcGFjaXR5OjAu
Njt9Cgkuc3Qxe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTE1LDFIMUMwLjUsMSww
LDEuNSwwLDJ2MTJjMCwwLjUsMC41LDEsMSwxaDE0YzAuNSwwLDEtMC41LDEtMVYyQzE2LDEuNSwxNS41
LDEsMTUsMXogTTE1LDE0SDFWMmgxNFYxNHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTAs
NVYyYzAtMC41LDAuNS0xLDEtMWgxNGMwLjYsMCwxLDAuNSwxLDF2M0gweiIgY2xhc3M9IkdyZWVuIiAv
Pg0KICA8ZyBpZD0iTGF5ZXJfMiIgY2xhc3M9InN0MCI+DQogICAgPHJlY3QgeD0iMSIgeT0iMiIgd2lk
dGg9IjE0IiBoZWlnaHQ9IjIiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IldoaXRlIiAvPg0KICA8L2c+DQog
IDxyZWN0IHg9IjEiIHk9IjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSI5IiByeD0iMCIgcnk9IjAiIGNsYXNz
PSJXaGl0ZSIgLz4NCiAgPHBhdGggZD0iTTUsMTJWN2gxdjVINXoiIGNsYXNzPSJCbGFjayIgLz4NCiAg
PHBhdGggZD0iTTExLDEyaC0xbDAtMC42QzkuOCwxMS42LDkuNSwxMiw4LjcsMTJjLTAuNSwwLTAuOS0w
LjItMS4yLTAuNUM3LjIsMTEuMiw3LDEwLjcsNywxMC4xQzcsOS41LDcuMiw5LDcuNSw4LjcgIGMwLjMt
MC4zLDAuNy0wLjUsMS4yLTAuNXMwLjksMC4yLDEuMiwwLjVWN0gxMVYxMnogTTguMSwxMC4xYzAsMC40
LDAsMS4yLDAuOSwxLjJjMC44LDAsMC45LTAuOCwwLjktMS4xQzkuOSw5LjgsOS44LDksOSw5ICBDOC4z
LDksOC4xLDkuNyw4LjEsMTAuMXoiIGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
</value>
</data>
<data name="ButtonLoadFile.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFcCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
Y2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgaWQ9Ik5leHQiPg0KICAgIDxwYXRoIGQ9Ik0xNiwyQzgu
MywyLDIsOC4zLDIsMTZzNi4zLDE0LDE0LDE0czE0LTYuMywxNC0xNFMyMy43LDIsMTYsMnogTTE2LDI0
bC04LThoNlY4aDR2OGg2TDE2LDI0eiIgY2xhc3M9IkdyZWVuIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="BarListItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMMDAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJLUElfeDVGX0RlZmlu
aXRpb24iPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMjYsOS4yIDI2LDAgMTIsMTQgOCwxMCAyLDE2IDIs
MjQgMTEuMiwyNCAgIiBjbGFzcz0iR3JlZW4iIC8+DQogICAgPHBhdGggZD0iTTYsMzJoMjZWNkw2LDMy
eiBNMjYsMjZoLTUuNWw1LjUtNS41VjI2eiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPC9nPg0KPC9zdmc+
Cw==
</value>
</data>
<data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMEDAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MTYgMTYiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
V2hpdGV7ZmlsbDojRkZGRkZGO30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLnN0MHtvcGFjaXR5OjAu
Njt9Cgkuc3Qxe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTE1LDFIMUMwLjUsMSww
LDEuNSwwLDJ2MTFjMCwwLjUsMC41LDEsMSwxaDE0YzAuNSwwLDEtMC41LDEtMVYyQzE2LDEuNSwxNS41
LDEsMTUsMXogTTE1LDEzSDFWMmgxNFYxM3oiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTAs
NVYyYzAtMC41LDAuNS0xLDEtMWgxNGMwLjYsMCwxLDAuNSwxLDF2M0gweiIgY2xhc3M9IkdyZWVuIiAv
Pg0KICA8ZyBpZD0iTGF5ZXJfMiIgY2xhc3M9InN0MCI+DQogICAgPHJlY3QgeD0iMSIgeT0iMiIgd2lk
dGg9IjE0IiBoZWlnaHQ9IjIiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IldoaXRlIiAvPg0KICA8L2c+DQog
IDxyZWN0IHg9IjEiIHk9IjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSI4IiByeD0iMCIgcnk9IjAiIGNsYXNz
PSJXaGl0ZSIgLz4NCiAgPGcgaWQ9IkxheWVyXzMiIGNsYXNzPSJzdDAiPg0KICAgIDxwYXRoIGQ9Ik0x
NSw4VjdoLTNWNWgtMXYySDVWNUg0djJIMXYxaDN2MkgxdjFoM3YyaDF2LTJoNnYyaDF2LTJoM3YtMWgt
M1Y4SDE1eiBNMTEsMTBINVY4aDZWMTB6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
</data>
<metadata name="DocumentManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="BindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>316, 17</value>
</metadata>
<metadata name="DockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>181, 17</value>
</metadata>
<metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>453, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,216 @@
Imports System.ServiceModel
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.EDMI.API
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Controls
Imports System.IO
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Public Class Form1
Private _LogConfig As LogConfig
Private _Logger As Logger
Private _Client As Client
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
_LogConfig = New LogConfig(LogConfig.PathType.Temp, Nothing, "EDMIBenschmark")
_Logger = _LogConfig.GetLogger()
_Client = New Client(_LogConfig, "172.24.12.39", 9000)
_Client.Connect()
DocumentViewer1.Init(_LogConfig, "21182889975216572111813147150675976632")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, Text)
End Try
End Sub
Private Sub AddLogMessage(Message As String)
_Logger.Info(Message)
listboxLog.Items.Add(Message)
listboxLog.MakeItemVisible(listboxLog.Items.Count - 1)
End Sub
Private Sub ButtonSelectFiles_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles ButtonSelectFiles.ItemClick
Dim oDialog As New OpenFileDialog() With {
.Multiselect = True,
.CheckFileExists = True
}
Dim oResult = oDialog.ShowDialog()
listboxFiles.Items.Clear()
If oResult = DialogResult.OK Then
For Each oFileName In oDialog.FileNames
listboxFiles.Items.Add(oFileName)
Next
End If
End Sub
Private Async Sub ButtonImportFiles_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles ButtonImportFiles.ItemClick
Try
Dim oFiles As New List(Of String)
Dim oSWTotal As New Stopwatch()
oSWTotal.Start()
Dim oCountFiles As Integer = 0
For Each oItem As String In listboxFiles.Items
Dim oSW As New Stopwatch()
oSW.Start()
Dim oFileName As String = oItem
Dim oFileInfo As New FileInfo(oFileName)
AddLogMessage($"Importing {oFileInfo.Name}... ({FormatBytes(oFileInfo.Length)})")
Dim oObjectId As Long = Await _Client.ImportFileAsync(oFileInfo.FullName, "WichtigesDokument", 1, 0)
AddLogMessage($"File with Id [{oObjectId}] imported!")
oCountFiles += 1
oSW.Stop()
AddLogMessage($"Import Time: {FormatTime(oSW.ElapsedMilliseconds)}")
AddLogMessage("")
Next
oSWTotal.Stop()
AddLogMessage($"Imported {oCountFiles} files - Total Time: {FormatTime(oSWTotal.ElapsedMilliseconds)}")
MsgBox($"Imported {oCountFiles} files - Total Time: {FormatTime(oSWTotal.ElapsedMilliseconds)}", MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, Text)
End Try
End Sub
Private Sub buttonClearLog_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles buttonClearLog.ItemClick
listboxLog.Items.Clear()
End Sub
Private Sub buttonClearFiles_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles buttonClearFiles.ItemClick
listboxFiles.Items.Clear()
End Sub
Public Function FormatTime(Milliseconds As Integer) As String
If Milliseconds < 1000 Then
Return Milliseconds & " ms"
Else
Return (Milliseconds / 1000) & " s"
End If
End Function
Dim DoubleBytes As Double
Public Function FormatBytes(ByVal BytesCaller As ULong) As String
Try
Select Case BytesCaller
Case Is >= 1099511627776
DoubleBytes = CDbl(BytesCaller / 1099511627776) 'TB
Return FormatNumber(DoubleBytes, 2) & " TB"
Case 1073741824 To 1099511627775
DoubleBytes = CDbl(BytesCaller / 1073741824) 'GB
Return FormatNumber(DoubleBytes, 2) & " GB"
Case 1048576 To 1073741823
DoubleBytes = CDbl(BytesCaller / 1048576) 'MB
Return FormatNumber(DoubleBytes, 2) & " MB"
Case 1024 To 1048575
DoubleBytes = CDbl(BytesCaller / 1024) 'KB
Return FormatNumber(DoubleBytes, 2) & " KB"
Case 0 To 1023
DoubleBytes = BytesCaller ' bytes
Return FormatNumber(DoubleBytes, 2) & " bytes"
Case Else
Return ""
End Select
Catch
Return ""
End Try
End Function
Private Async Sub ButtonLoadFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles ButtonLoadFile.ItemClick
Try
Dim oSWTotal As New Stopwatch()
oSWTotal.Start()
If TextboxObjectId.EditValue = "" Then
MsgBox("Please enter an object id!", MsgBoxStyle.Exclamation, "Uh oh!")
End If
Dim oObjectId As Integer = TextboxObjectId.EditValue
Dim oResponse As Client.StreamedFile = Await _Client.GetFileByObjectIdAsync(oObjectId)
DocumentViewer1.LoadFile(oResponse.FileName, oResponse.Stream)
oSWTotal.Stop()
AddLogMessage($"File [{oResponse.FileName}] loaded: [{FormatTime(oSWTotal.ElapsedMilliseconds)}]")
Catch ex As FaultException
MsgBox(ex.Reason.ToString, MsgBoxStyle.Critical, "Error from Service")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Uh oh!")
End Try
End Sub
Private Async Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
Try
Dim oResult As Client.FileList = Await _Client.ListFilesForUserAsync()
BindingSource1.DataSource = oResult.Datatable
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Uh oh!")
End Try
End Sub
Private Async Sub BindingSource1_CurrentChanged(sender As Object, e As EventArgs) Handles BindingSource1.CurrentChanged
Dim oRow As DataRow = GridView1.GetFocusedDataRow()
If oRow Is Nothing Then
Exit Sub
End If
Try
Dim oSWTotal As New Stopwatch()
oSWTotal.Start()
Dim oObjectId As Long = oRow.Item("IDB_OBJ_ID")
Dim oResponse As Client.StreamedFile = Await _Client.GetFileByObjectIdAsync(oObjectId)
DocumentViewer1.LoadFile(oResponse.FileName, oResponse.Stream)
oSWTotal.Stop()
AddLogMessage($"File [{oResponse.FileName}] loaded: [{FormatTime(oSWTotal.ElapsedMilliseconds)}]")
Catch ex As FaultException
MsgBox(ex.Reason.ToString, MsgBoxStyle.Critical, "Error from Service")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Uh oh!")
End Try
End Sub
Private Async Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Try
Dim oSWTotal As New Stopwatch()
oSWTotal.Start()
Dim oObjectId As Integer = TextboxObjectId.EditValue
Dim oResponse As Client.StreamedFile = Await _Client.GetFileByObjectIdAsync(oObjectId)
DocumentViewer1.LoadFile(oResponse.FileName, oResponse.Stream)
oSWTotal.Stop()
AddLogMessage($"File [{oResponse.FileName}] loaded: [{FormatTime(oSWTotal.ElapsedMilliseconds)}]")
Catch ex As Exception
AddLogMessage($"Error while getting file: [{ex.Message}]")
End Try
End Sub
Private Sub BarToggleSwitchItem1_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarToggleSwitchItem1.CheckedChanged
If BarToggleSwitchItem1.Checked Then
If TextboxObjectId.EditValue = "" Then
Timer1.Stop()
MsgBox("Please set a ObjectId!", MsgBoxStyle.Critical, Text)
Else
Timer1.Start()
AddLogMessage("Timer Started!")
End If
Else
Timer1.Stop()
AddLogMessage("Timer Stopped!")
End If
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
Process.Start(_LogConfig.LogDirectory)
End Sub
End Class

View File

@@ -0,0 +1,169 @@
<?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>{5FDEC007-7AE0-4829-B1AE-6165E29375DA}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>GUIs.Test.EDMIBenchmark.My.MyApplication</StartupObject>
<RootNamespace>GUIs.Test.EDMIBenchmark</RootNamespace>
<AssemblyName>GUIs.Test.EDMIBenchmark</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>GUIs.Test.EDMIBenchmark.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>GUIs.Test.EDMIBenchmark.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="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Printing.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Sparkline.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DigitalData.Controls.DocumentViewer">
<HintPath>..\Controls.DocumentViewer\obj\Debug\DigitalData.Controls.DocumentViewer.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Controls.LookupGrid">
<HintPath>..\Controls.LookupGrid\obj\Debug\DigitalData.Controls.LookupGrid.dll</HintPath>
</Reference>
<Reference Include="GdPicture.NET.14">
<HintPath>D:\ProgramFiles\GdPicture.NET 14\Redist\GdPicture.NET (.NET Framework 4.5)\GdPicture.NET.14.dll</HintPath>
</Reference>
<Reference Include="Independentsoft.Msg">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\MSG .NET\Bin\22_11_19\Independentsoft.Msg.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.0\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Data" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Windows.Forms" />
<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.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.vb">
<DependentUpon>Form1.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<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="Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<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="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="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Controls.DocumentViewer\DocumentViewer.vbproj">
<Project>{0958cddf-4a16-41f6-8837-8335f71d599c}</Project>
<Name>DocumentViewer</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.EDMIAPI\EDMI.API.vbproj">
<Project>{25017513-0d97-49d3-98d7-ba76d9b251b0}</Project>
<Name>EDMI.API</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Logging\Logging.vbproj">
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
<Name>Logging</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <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
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.GUIs.Test.EDMIBenchmark.Form1
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,11 @@
<?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>true</MySubMain>
<MainForm>Form1</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>0</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("GUIs.Test.EDMIBenchmark")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("GUIs.Test.EDMIBenchmark")>
<Assembly: AssemblyCopyright("Copyright © 2020")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("a89a679a-e39a-4227-8425-0205431edf60")>
' 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,
' indem Sie "*" wie unten gezeigt eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("GUIs.Test.EDMIBenchmark.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <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
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#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(ByVal sender As Global.System.Object, ByVal 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.GUIs.Test.EDMIBenchmark.My.MySettings
Get
Return Global.GUIs.Test.EDMIBenchmark.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

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

View File

@@ -0,0 +1,5 @@
DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

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

View File

@@ -1,6 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="GUIs.Test.GraphQLTest.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<userSettings>
<GUIs.Test.GraphQLTest.My.MySettings>
<setting name="ConnectionString" serializeAs="String">
<value />
</setting>
<setting name="CertificateFile" serializeAs="String">
<value />
</setting>
<setting name="CertificatePass" serializeAs="String">
<value />
</setting>
<setting name="Email" serializeAs="String">
<value />
</setting>
<setting name="Password" serializeAs="String">
<value />
</setting>
<setting name="BaseUrl" serializeAs="String">
<value />
</setting>
</GUIs.Test.GraphQLTest.My.MySettings>
</userSettings>
</configuration>

View File

@@ -0,0 +1,24 @@
Public Class Config
Public Property ConnectionString As String = "Server=SERVER;Database=DATABASE;User Id=sa;Password=dd"
Public Property CertificateFile As String = "C:\Path\To\Cert.pfx"
Public Property CertificatePass As String = "CertificatePassword"
Public Property CertificateFingerprint As String = ""
Public Property Email As String = "foo.bar@wisag.de"
Public Property Password As String = "Password"
Public Property BaseUrl As String = "https://data.api.wisag.de:8443"
Public Property ProxyHost As String = ""
Public Property ProxyPort As Integer = 0
Public Property ProxyUsername As String = ""
Public Property ProxyPassword As String = ""
Public Property CurrentQuery As String = "Custom"
Public Property CustomQueryString As String = ""
Public Function HasProxySet() As Boolean
Return ProxyHost <> "" And ProxyPort > 0
End Function
Public Function HasProxyCredentialsSet() As Boolean
Return ProxyUsername <> "" And ProxyPassword <> ""
End Function
End Class

View File

@@ -1,193 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.Button1 = New System.Windows.Forms.Button()
Me.txtBaseUrl = New System.Windows.Forms.TextBox()
Me.txtUsername = New System.Windows.Forms.TextBox()
Me.txtPassword = New System.Windows.Forms.TextBox()
Me.txtCertFile = New System.Windows.Forms.TextBox()
Me.txtCertPass = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label4 = New System.Windows.Forms.Label()
Me.Label5 = New System.Windows.Forms.Label()
Me.txtResults = New System.Windows.Forms.TextBox()
Me.txtQuery = New System.Windows.Forms.TextBox()
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(15, 407)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(318, 31)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Run!"
Me.Button1.UseVisualStyleBackColor = True
'
'txtBaseUrl
'
Me.txtBaseUrl.Location = New System.Drawing.Point(86, 6)
Me.txtBaseUrl.Name = "txtBaseUrl"
Me.txtBaseUrl.Size = New System.Drawing.Size(247, 20)
Me.txtBaseUrl.TabIndex = 1
Me.txtBaseUrl.Text = "https://data.api.wisag.de:8090"
'
'txtUsername
'
Me.txtUsername.Location = New System.Drawing.Point(86, 32)
Me.txtUsername.Name = "txtUsername"
Me.txtUsername.Size = New System.Drawing.Size(247, 20)
Me.txtUsername.TabIndex = 1
Me.txtUsername.Text = "j.jenne@digitaldata.works"
'
'txtPassword
'
Me.txtPassword.Location = New System.Drawing.Point(86, 58)
Me.txtPassword.Name = "txtPassword"
Me.txtPassword.Size = New System.Drawing.Size(247, 20)
Me.txtPassword.TabIndex = 1
Me.txtPassword.Text = "DigitalData01!"
'
'txtCertFile
'
Me.txtCertFile.Location = New System.Drawing.Point(86, 84)
Me.txtCertFile.Name = "txtCertFile"
Me.txtCertFile.Size = New System.Drawing.Size(247, 20)
Me.txtCertFile.TabIndex = 1
Me.txtCertFile.Text = "E:\JenneJ\WISAG\jonathanjenne.pfx"
'
'txtCertPass
'
Me.txtCertPass.Location = New System.Drawing.Point(86, 110)
Me.txtCertPass.Name = "txtCertPass"
Me.txtCertPass.Size = New System.Drawing.Size(247, 20)
Me.txtCertPass.TabIndex = 1
Me.txtCertPass.Text = "jonathanjenne"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(12, 9)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(53, 13)
Me.Label1.TabIndex = 2
Me.Label1.Text = "BaseURL"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(12, 35)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(32, 13)
Me.Label2.TabIndex = 2
Me.Label2.Text = "Email"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(12, 61)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(53, 13)
Me.Label3.TabIndex = 2
Me.Label3.Text = "Password"
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Location = New System.Drawing.Point(12, 87)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(45, 13)
Me.Label4.TabIndex = 2
Me.Label4.Text = "Cert File"
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Location = New System.Drawing.Point(12, 113)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(52, 13)
Me.Label5.TabIndex = 2
Me.Label5.Text = "Cert Pass"
'
'txtResults
'
Me.txtResults.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtResults.Location = New System.Drawing.Point(339, 6)
Me.txtResults.Multiline = True
Me.txtResults.Name = "txtResults"
Me.txtResults.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
Me.txtResults.Size = New System.Drawing.Size(881, 432)
Me.txtResults.TabIndex = 3
'
'txtQuery
'
Me.txtQuery.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtQuery.Location = New System.Drawing.Point(15, 136)
Me.txtQuery.Multiline = True
Me.txtQuery.Name = "txtQuery"
Me.txtQuery.Size = New System.Drawing.Size(318, 265)
Me.txtQuery.TabIndex = 4
Me.txtQuery.Text = resources.GetString("txtQuery.Text")
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1232, 450)
Me.Controls.Add(Me.txtQuery)
Me.Controls.Add(Me.txtResults)
Me.Controls.Add(Me.Label5)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.txtCertPass)
Me.Controls.Add(Me.txtCertFile)
Me.Controls.Add(Me.txtPassword)
Me.Controls.Add(Me.txtUsername)
Me.Controls.Add(Me.txtBaseUrl)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "GraphQL Interface Test"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Button1 As Button
Friend WithEvents txtBaseUrl As TextBox
Friend WithEvents txtUsername As TextBox
Friend WithEvents txtPassword As TextBox
Friend WithEvents txtCertFile As TextBox
Friend WithEvents txtCertPass As TextBox
Friend WithEvents Label1 As Label
Friend WithEvents Label2 As Label
Friend WithEvents Label3 As Label
Friend WithEvents Label4 As Label
Friend WithEvents Label5 As Label
Friend WithEvents txtResults As TextBox
Friend WithEvents txtQuery As TextBox
End Class

View File

@@ -1,46 +0,0 @@
Imports System.IO
Imports DigitalData.Modules.Interfaces
Imports DigitalData.Modules.Logging
Public Class Form1
Private _LogConfig As LogConfig
Private _Interface As GraphQLInterface
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
_LogConfig = New LogConfig(LogConfig.PathType.CurrentDirectory)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
_Interface = New GraphQLInterface(_LogConfig,
txtBaseUrl.Text,
txtUsername.Text,
txtPassword.Text,
txtCertFile.Text,
txtCertPass.Text)
Dim oLoginResponse = _Interface.Login()
_Interface.SaveCookies(oLoginResponse.Cookies.Item(0))
Dim oDataResponse = _Interface.GetData(txtQuery.Text, "Nls")
Dim oResult As String
Using oStream = oDataResponse.GetResponseStream()
Using oReader As New StreamReader(oStream)
oResult = oReader.ReadToEnd()
End Using
End Using
File.WriteAllText("E:\JenneJ\WISAG\results.json", oResult)
Dim oObj = Newtonsoft.Json.JsonConvert.DeserializeObject(oResult)
Dim oJson = Newtonsoft.Json.JsonConvert.SerializeObject(oObj, Newtonsoft.Json.Formatting.Indented)
txtResults.Text = oJson
Dim oLogoutResponse = _Interface.Logout()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
End Class

View File

@@ -84,11 +84,12 @@
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.vb">
<Compile Include="Config.vb" />
<Compile Include="frmMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.vb">
<DependentUpon>Form1.vb</DependentUpon>
<Compile Include="frmMain.Designer.vb">
<DependentUpon>frmMain.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
@@ -108,8 +109,8 @@
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
<EmbeddedResource Include="frmMain.resx">
<DependentUpon>frmMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
@@ -132,6 +133,14 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Modules.Config\Config.vbproj">
<Project>{44982f9b-6116-44e2-85d0-f39650b1ef99}</Project>
<Name>Config</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Database\Database.vbproj">
<Project>{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}</Project>
<Name>Database</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Interfaces\Interfaces.vbproj">
<Project>{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}</Project>
<Name>Interfaces</Name>
@@ -141,5 +150,8 @@
<Name>Logging</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="My Project\DataSources\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -32,7 +32,7 @@ Namespace My
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.GUIs.Test.GraphQLTest.Form1
Me.MainForm = Global.GUIs.Test.GraphQLTest.frmMain
End Sub
End Class
End Namespace

View File

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

View File

@@ -1,7 +1,24 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="ConnectionString" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="CertificateFile" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="CertificatePass" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="Email" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="Password" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="BaseUrl" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

430
GUIs.Test.GraphQLTest/frmMain.Designer.vb generated Normal file
View File

@@ -0,0 +1,430 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmMain
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
Me.Button1 = New System.Windows.Forms.Button()
Me.txtBaseUrl = New System.Windows.Forms.TextBox()
Me.txtUsername = New System.Windows.Forms.TextBox()
Me.txtPassword = New System.Windows.Forms.TextBox()
Me.txtCertFile = New System.Windows.Forms.TextBox()
Me.txtCertPass = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label4 = New System.Windows.Forms.Label()
Me.Label5 = New System.Windows.Forms.Label()
Me.txtResult = New System.Windows.Forms.TextBox()
Me.txtConnectionString = New System.Windows.Forms.TextBox()
Me.Label6 = New System.Windows.Forms.Label()
Me.cmbQuery = New System.Windows.Forms.ComboBox()
Me.Label7 = New System.Windows.Forms.Label()
Me.TabControl1 = New System.Windows.Forms.TabControl()
Me.pageRaw = New System.Windows.Forms.TabPage()
Me.pageQuery = New System.Windows.Forms.TabPage()
Me.txtQuery = New System.Windows.Forms.TextBox()
Me.txtOperation = New System.Windows.Forms.TextBox()
Me.btnLogin = New System.Windows.Forms.Button()
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar()
Me.txtProxyHost = New System.Windows.Forms.TextBox()
Me.txtProxyUser = New System.Windows.Forms.TextBox()
Me.txtProxyPass = New System.Windows.Forms.TextBox()
Me.Label8 = New System.Windows.Forms.Label()
Me.Label9 = New System.Windows.Forms.Label()
Me.Label10 = New System.Windows.Forms.Label()
Me.txtProxyPort = New System.Windows.Forms.TextBox()
Me.Label11 = New System.Windows.Forms.Label()
Me.txtCertFingerprint = New System.Windows.Forms.TextBox()
Me.Label12 = New System.Windows.Forms.Label()
Me.TabControl1.SuspendLayout()
Me.pageRaw.SuspendLayout()
Me.pageQuery.SuspendLayout()
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(826, 386)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(96, 31)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Run!"
Me.Button1.UseVisualStyleBackColor = True
'
'txtBaseUrl
'
Me.txtBaseUrl.Location = New System.Drawing.Point(106, 6)
Me.txtBaseUrl.Name = "txtBaseUrl"
Me.txtBaseUrl.Size = New System.Drawing.Size(338, 20)
Me.txtBaseUrl.TabIndex = 1
Me.txtBaseUrl.Text = "https://data.api.wisag.de:8443"
'
'txtUsername
'
Me.txtUsername.Location = New System.Drawing.Point(106, 32)
Me.txtUsername.Name = "txtUsername"
Me.txtUsername.Size = New System.Drawing.Size(338, 20)
Me.txtUsername.TabIndex = 1
Me.txtUsername.Text = "j.jenne@digitaldata.works"
'
'txtPassword
'
Me.txtPassword.Location = New System.Drawing.Point(106, 58)
Me.txtPassword.Name = "txtPassword"
Me.txtPassword.Size = New System.Drawing.Size(338, 20)
Me.txtPassword.TabIndex = 1
Me.txtPassword.Text = "DigitalData01!"
'
'txtCertFile
'
Me.txtCertFile.Location = New System.Drawing.Point(106, 84)
Me.txtCertFile.Name = "txtCertFile"
Me.txtCertFile.Size = New System.Drawing.Size(338, 20)
Me.txtCertFile.TabIndex = 1
Me.txtCertFile.Text = "E:\JenneJ\WISAG\jonathanjenne.pfx"
'
'txtCertPass
'
Me.txtCertPass.Location = New System.Drawing.Point(106, 110)
Me.txtCertPass.Name = "txtCertPass"
Me.txtCertPass.Size = New System.Drawing.Size(338, 20)
Me.txtCertPass.TabIndex = 1
Me.txtCertPass.Text = "jonathanjenne"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(12, 9)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(53, 13)
Me.Label1.TabIndex = 2
Me.Label1.Text = "BaseURL"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(12, 35)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(32, 13)
Me.Label2.TabIndex = 2
Me.Label2.Text = "Email"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(12, 61)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(53, 13)
Me.Label3.TabIndex = 2
Me.Label3.Text = "Password"
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Location = New System.Drawing.Point(12, 87)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(45, 13)
Me.Label4.TabIndex = 2
Me.Label4.Text = "Cert File"
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Location = New System.Drawing.Point(12, 113)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(52, 13)
Me.Label5.TabIndex = 2
Me.Label5.Text = "Cert Pass"
'
'txtResult
'
Me.txtResult.Dock = System.Windows.Forms.DockStyle.Fill
Me.txtResult.Font = New System.Drawing.Font("Consolas", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtResult.Location = New System.Drawing.Point(3, 3)
Me.txtResult.Multiline = True
Me.txtResult.Name = "txtResult"
Me.txtResult.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
Me.txtResult.Size = New System.Drawing.Size(458, 342)
Me.txtResult.TabIndex = 3
'
'txtConnectionString
'
Me.txtConnectionString.Location = New System.Drawing.Point(106, 167)
Me.txtConnectionString.Multiline = True
Me.txtConnectionString.Name = "txtConnectionString"
Me.txtConnectionString.Size = New System.Drawing.Size(338, 67)
Me.txtConnectionString.TabIndex = 1
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.Location = New System.Drawing.Point(12, 167)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(88, 13)
Me.Label6.TabIndex = 2
Me.Label6.Text = "ConnectionString"
'
'cmbQuery
'
Me.cmbQuery.FormattingEnabled = True
Me.cmbQuery.Items.AddRange(New Object() {"SAPDaten", "Custom"})
Me.cmbQuery.Location = New System.Drawing.Point(106, 352)
Me.cmbQuery.Name = "cmbQuery"
Me.cmbQuery.Size = New System.Drawing.Size(338, 21)
Me.cmbQuery.TabIndex = 4
'
'Label7
'
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(12, 355)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(35, 13)
Me.Label7.TabIndex = 2
Me.Label7.Text = "Query"
'
'TabControl1
'
Me.TabControl1.Controls.Add(Me.pageRaw)
Me.TabControl1.Controls.Add(Me.pageQuery)
Me.TabControl1.Location = New System.Drawing.Point(450, 6)
Me.TabControl1.Name = "TabControl1"
Me.TabControl1.SelectedIndex = 0
Me.TabControl1.Size = New System.Drawing.Size(472, 374)
Me.TabControl1.TabIndex = 5
'
'pageRaw
'
Me.pageRaw.Controls.Add(Me.txtResult)
Me.pageRaw.Location = New System.Drawing.Point(4, 22)
Me.pageRaw.Name = "pageRaw"
Me.pageRaw.Padding = New System.Windows.Forms.Padding(3)
Me.pageRaw.Size = New System.Drawing.Size(464, 348)
Me.pageRaw.TabIndex = 0
Me.pageRaw.Text = "Raw GraphQL Result"
Me.pageRaw.UseVisualStyleBackColor = True
'
'pageQuery
'
Me.pageQuery.Controls.Add(Me.txtQuery)
Me.pageQuery.Controls.Add(Me.txtOperation)
Me.pageQuery.Location = New System.Drawing.Point(4, 22)
Me.pageQuery.Name = "pageQuery"
Me.pageQuery.Padding = New System.Windows.Forms.Padding(3)
Me.pageQuery.Size = New System.Drawing.Size(464, 348)
Me.pageQuery.TabIndex = 1
Me.pageQuery.Text = "Custom Query"
Me.pageQuery.UseVisualStyleBackColor = True
'
'txtQuery
'
Me.txtQuery.Dock = System.Windows.Forms.DockStyle.Fill
Me.txtQuery.Font = New System.Drawing.Font("Consolas", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtQuery.Location = New System.Drawing.Point(3, 23)
Me.txtQuery.Multiline = True
Me.txtQuery.Name = "txtQuery"
Me.txtQuery.Size = New System.Drawing.Size(458, 322)
Me.txtQuery.TabIndex = 0
'
'txtOperation
'
Me.txtOperation.Dock = System.Windows.Forms.DockStyle.Top
Me.txtOperation.Location = New System.Drawing.Point(3, 3)
Me.txtOperation.Name = "txtOperation"
Me.txtOperation.Size = New System.Drawing.Size(458, 20)
Me.txtOperation.TabIndex = 1
'
'btnLogin
'
Me.btnLogin.Location = New System.Drawing.Point(724, 386)
Me.btnLogin.Name = "btnLogin"
Me.btnLogin.Size = New System.Drawing.Size(96, 31)
Me.btnLogin.TabIndex = 0
Me.btnLogin.Text = "Test Login"
Me.btnLogin.UseVisualStyleBackColor = True
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(12, 394)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(432, 23)
Me.ProgressBar1.TabIndex = 6
'
'txtProxyHost
'
Me.txtProxyHost.Location = New System.Drawing.Point(106, 240)
Me.txtProxyHost.Name = "txtProxyHost"
Me.txtProxyHost.Size = New System.Drawing.Size(338, 20)
Me.txtProxyHost.TabIndex = 1
'
'txtProxyUser
'
Me.txtProxyUser.Location = New System.Drawing.Point(106, 292)
Me.txtProxyUser.Name = "txtProxyUser"
Me.txtProxyUser.Size = New System.Drawing.Size(338, 20)
Me.txtProxyUser.TabIndex = 1
'
'txtProxyPass
'
Me.txtProxyPass.Location = New System.Drawing.Point(106, 318)
Me.txtProxyPass.Name = "txtProxyPass"
Me.txtProxyPass.Size = New System.Drawing.Size(338, 20)
Me.txtProxyPass.TabIndex = 1
'
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(12, 243)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(58, 13)
Me.Label8.TabIndex = 2
Me.Label8.Text = "Proxy Host"
'
'Label9
'
Me.Label9.AutoSize = True
Me.Label9.Location = New System.Drawing.Point(12, 295)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(58, 13)
Me.Label9.TabIndex = 2
Me.Label9.Text = "Proxy User"
'
'Label10
'
Me.Label10.AutoSize = True
Me.Label10.Location = New System.Drawing.Point(12, 321)
Me.Label10.Name = "Label10"
Me.Label10.Size = New System.Drawing.Size(82, 13)
Me.Label10.TabIndex = 2
Me.Label10.Text = "Proxy Password"
'
'txtProxyPort
'
Me.txtProxyPort.Location = New System.Drawing.Point(106, 266)
Me.txtProxyPort.Name = "txtProxyPort"
Me.txtProxyPort.Size = New System.Drawing.Size(338, 20)
Me.txtProxyPort.TabIndex = 1
'
'Label11
'
Me.Label11.AutoSize = True
Me.Label11.Location = New System.Drawing.Point(12, 269)
Me.Label11.Name = "Label11"
Me.Label11.Size = New System.Drawing.Size(55, 13)
Me.Label11.TabIndex = 2
Me.Label11.Text = "Proxy Port"
'
'txtCertFingerprint
'
Me.txtCertFingerprint.Location = New System.Drawing.Point(106, 136)
Me.txtCertFingerprint.Name = "txtCertFingerprint"
Me.txtCertFingerprint.Size = New System.Drawing.Size(338, 20)
Me.txtCertFingerprint.TabIndex = 1
'
'Label12
'
Me.Label12.AutoSize = True
Me.Label12.Location = New System.Drawing.Point(12, 139)
Me.Label12.Name = "Label12"
Me.Label12.Size = New System.Drawing.Size(78, 13)
Me.Label12.TabIndex = 2
Me.Label12.Text = "Cert Fingerprint"
'
'frmMain
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(934, 429)
Me.Controls.Add(Me.ProgressBar1)
Me.Controls.Add(Me.TabControl1)
Me.Controls.Add(Me.cmbQuery)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.Label6)
Me.Controls.Add(Me.Label12)
Me.Controls.Add(Me.Label5)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.Label10)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label9)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label11)
Me.Controls.Add(Me.Label8)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.txtConnectionString)
Me.Controls.Add(Me.txtCertFingerprint)
Me.Controls.Add(Me.txtCertPass)
Me.Controls.Add(Me.txtCertFile)
Me.Controls.Add(Me.txtProxyPass)
Me.Controls.Add(Me.txtPassword)
Me.Controls.Add(Me.txtProxyUser)
Me.Controls.Add(Me.txtUsername)
Me.Controls.Add(Me.txtProxyPort)
Me.Controls.Add(Me.txtProxyHost)
Me.Controls.Add(Me.txtBaseUrl)
Me.Controls.Add(Me.btnLogin)
Me.Controls.Add(Me.Button1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmMain"
Me.Text = "GraphQL Interface"
Me.TabControl1.ResumeLayout(False)
Me.pageRaw.ResumeLayout(False)
Me.pageRaw.PerformLayout()
Me.pageQuery.ResumeLayout(False)
Me.pageQuery.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Button1 As Button
Friend WithEvents txtBaseUrl As TextBox
Friend WithEvents txtUsername As TextBox
Friend WithEvents txtPassword As TextBox
Friend WithEvents txtCertFile As TextBox
Friend WithEvents txtCertPass As TextBox
Friend WithEvents Label1 As Label
Friend WithEvents Label2 As Label
Friend WithEvents Label3 As Label
Friend WithEvents Label4 As Label
Friend WithEvents Label5 As Label
Friend WithEvents txtResult As TextBox
Friend WithEvents txtConnectionString As TextBox
Friend WithEvents Label6 As Label
Friend WithEvents cmbQuery As ComboBox
Friend WithEvents Label7 As Label
Friend WithEvents TabControl1 As TabControl
Friend WithEvents pageRaw As TabPage
Friend WithEvents btnLogin As Button
Friend WithEvents ProgressBar1 As ProgressBar
Friend WithEvents txtProxyHost As TextBox
Friend WithEvents txtProxyUser As TextBox
Friend WithEvents txtProxyPass As TextBox
Friend WithEvents Label8 As Label
Friend WithEvents Label9 As Label
Friend WithEvents Label10 As Label
Friend WithEvents txtProxyPort As TextBox
Friend WithEvents Label11 As Label
Friend WithEvents pageQuery As TabPage
Friend WithEvents txtQuery As TextBox
Friend WithEvents txtOperation As TextBox
Friend WithEvents txtCertFingerprint As TextBox
Friend WithEvents Label12 As Label
End Class

View File

@@ -0,0 +1,581 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAgAICAQAAEABADoAgAAhgAAABAQEAABAAQAKAEAAG4DAAAgIAAAAQAIAKgIAACWBAAAEBAAAAEA
CABoBQAAPg0AAAAAAAABACAAUx0AAKYSAAAwMAAAAQAgAKglAAD5LwAAICAAAAEAIACoEAAAoVUAABAQ
AAABACAAaAQAAElmAAAoAAAAIAAAAEAAAAABAAQAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
AAD/////AAAAAAAAAAAAAAD///////8AAAAAAAAAAAD//45mZuj//wAAAAAAAAAP/4ZmZmZmaP/wAAAA
AAAA//5mZmZmZmbv////////AP/mZuZohm5mbv///////w/4Zmj27/5vhmaPd3d3d/8P9maPho/4aPhm
b/d3d3f//4ZmZmZmZmZmZmj3d3d3///mZmZmZmZmZmZu///3d///Zm//5v//bv/2Zv//93f//2Zv/+b/
/27/9mb///d3//9mb//m//9u//Zm///3d///Zm//5v//bv/2Zv//93f//+ZmZmZmZmZmZm7///d3//+G
ZmZmZmZmZmZo///3d/8P9maPho/4aPhmb///93f/D/hmaPbv/m+GZo////d3/wD/5mbmaIZuZm7////3
d/8A//5mZmZmZmbv////93f/AA//hmZmZmZo//////d3/wAA//+OZmbo///////3d/8AAAD/////////
/3d3d3f/AAAAAP////////93d3d//wAAAAD/d3//////d3d3//AAAAAA/3d//////3d3f/8AAAAAAP93
f/////93d//wAAAAAAD/d3d3d3d3d3//AAAAAAAA/3d3d3d3d3f/8AAAAAAAAP93d3d3d3d//wAAAAAA
AAD///////////AAAAAAAAAA//////////8AAAAA/wD///wAP//wAA//4AAH/8AAAADAAAAAgAAAAIAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAwAAAAMAAAADgAAAA8AAAAPwA
AAD/AAAA/wAAAf8AAAP/AAAH/wAAD/8AAB//AAA//wAAf/8AAP8oAAAAEAAAACAAAAABAAQAAAAAAIAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/
AAAA//8A/wAAAP8A/wD//wAA////AAAP//8AAAAAD/5mbv8AAAAPaG9ob/////6Pb2+Od3d/9mZmZmaH
d3/2/29v9v/3f/ZmZmZm//d//o9vb47/938PaG9ob//3fw/+Zm7///d/AA/4j///938AAPd///d3fwAA
93//93fwAAD3d3d3fwAAAPd3d3fwAAAA/////wAA4P8AAIA/AACAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACAAAAAgAAAAOAAAADwAAAA8AEAAPADAADwBwAA8A8AACgAAAAgAAAAQAAAAAEACAAAAAAAAAQAAAAA
AAAAAAAAAAEAAAABAAAAAAAAQkJCAHp6egDXlQAA2ZsPANqgHgDcpi0A3qw8AOW/bACGhoYAnJycAObI
hwDp06UA8urXAOvr6wD08OcA8e/wAPLw8QD08/MA9vX2APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAUExMTExMTFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMT
ExMTExMTExMAAAAAAAAAAAAAAAAAAAAAAAAUExMNCAYDAwMDBggNExMUAAAAAAAAAAAAAAAAAAAAFBMT
CAMDAwMDAwMDAwMIExMUAAAAAAAAAAAAAAAAABQTDwYDAwMDAwMDAwMDAwMGDxMTExMTExMTExMTEwAA
Ew8GAwMDBwUDDAwDBQcDAwMGExMTExMTExMTExMTABMTCAMDAwsQBAYQEAYEEAsDAwMIEwoBAQEBAQEB
ExMAEw0DAwMLEAwDCxAQCwMMEAsDAwMNDgEBAQEBAQETExQTCAMDAwMDAwMDAwMDAwMDAwMDAwgTAgEB
AQEBARMTExMGAwMDAwMDAwMDAwMDAwMDAwMDBhMTEBAQAQEBExMTEwMDAxAQEAcDEBAQEAMHEBAQAwMD
ExMQEBABAQETExMTAwMDEBAQBwMQEBAQAwcQEBADAwMTExAQEAEBARMTExMDAwMQEBAHAxAQEBADBxAQ
EAMDAxMTEBAQAQEBExMTEwMDAxAQEAcDEBAQEAMHEBAQAwMDExMQEBABAQETExMTBgMDAwMDAwMDAwMD
AwMDAwMDAwYTExAQEAEBARMTFBMIAwMDAwMDAwMDAwMDAwMDAwMDCBMTEBAQAQEBExMAEw0DAwMLEAwD
CxAQCwMMEAsDAwMNExAQEBABAQETEwATEwgDAwMLEAQGEBAGBBALAwMDCBMTEBAQEAEBARMTAAATDwYD
AwMHBQMMDAMFBwMDAwYPExAQEBAQAQEBExMAABQTDwYDAwMDAwMDAwMDAwMGDxMTEBAQEBABAQETEwAA
ABQTDwgDAwMDAwMDAwMDCBMTExAQEBAQEAEBARMTAAAAABQTEw0IBgMDAwMGCA0TExMQEBAQEBAQAQEB
ExMAAAAAAAATExMTExMTExMTExMQEBAQAQEBAQEBAQkTEwAAAAAAAAAAExMTExMTExMQEBAQEBABAQEB
AQEJExMUAAAAAAAAAAATEwEBARAQEBAQEBAQEAEBAQEBCRMTFAAAAAAAAAAAABMTAQEBEBAQEBAQEBAQ
AQEBAQkTExQAAAAAAAAAAAAAExMBAQEQEBAQEBAQEBABAQEJExMUAAAAAAAAAAAAAAATEwEBAQEBAQEB
AQEBAQEBCRMTFAAAAAAAAAAAAAAAABMTAQEBAQEBAQEBAQEBAQkTExQAAAAAAAAAAAAAAAAAExMBAQEB
AQEBAQEBAQEJExMUAAAAAAAAAAAAAAAAAAATExMTExMTExMTExMTExMTFAAAAAAAAAAAAAAAAAAAABMT
ExMTExMTExMTExMTExQAAAAAAAAAAP8A///8AD//8AAP/+AAB//AAAAAwAAAAIAAAACAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAMAAAADAAAAA4AAAAPAAAAD8AAAA/wAAAP8A
AAH/AAAD/wAAB/8AAA//AAAf/wAAP/8AAH//AAD/KAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAA
AAAAAQAAAAEAAAAAAABCQkIA15UAANmbDwDhs00AhoaGAJGRkQDmyIcAycnJAPHp1gDx7/AA8vHyAPb2
9gD6+voAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wAAAAAMDAwMDAAAAAAAAAAAAA0JBAICAgQJDQAAAAAAAAAJAwcCCgIHAwkMDAwM
DAwMBAcKAgoCCgcEBgEBAQEMDAICAgICAgICAggBAQEBDAwCCgoCCgIKCgIMCgoBAQwMAgICAgICAgIC
DAoKAQEMDAQHCgIKAgoHBAwKCgEBDAAJAwcCCgIHAwkKCgoBAQwADQkEAgICBAkMCgoKAQEMAAAADAwI
CAwKCgoKCgEBDAAAAAAMAQEKCgoKAQEBBQwAAAAADAEBCgoKCgEBBQwAAAAAAAwBAQEBAQEBBQwAAAAA
AAAMAQEBAQEBBQwAAAAAAAAADAwMDAwMDAwAAAAA4P8AAIA/AACAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACAAAAAgAAAAOAAAADwAAAA8AEAAPADAADwBwAA8A8AAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgG
AAAAXHKoZgAAHRpJREFUeJztnW1sXNWZx/9zZzz2jm3GNuQNkSFropZWsYvofiAlNlkppZUTAq20qCRU
DR8iCukKkFplESvRSqVspEppRQNb8QEqMK1YaUlMYmlbVzjj0OTLArWjtFulJplQYif4ZRL71pl4xvth
7jjjt3l7zrn3zr3/nxQlSuJzz9w553+e8zzPeU4APsc0zTmn+0C08VgkEnnd6U64GcPpDhCikddM09zj
dCfcDAWAeB2KQAEoAMQPUARWgAJA/AJFYBkoAMRPUAQWQQEgfoMikAcFgPgRioAFBYD4FYoAKADE3/he
BCgAxO/4WgQoAIT4WAQoAIRk8aUIUAAIuYHvRIACQMhCfCUCFABCluIbEQg53YFqZ/v27U53wdds27YN
zzzzjI6mXzNNE16vJ0ALgFQ1fX19OHjwoK7mPW8JUABI1UMRqBwKAPEEFIHKoAAQz0ARKB8KAPEUFIHy
oAAQz0ERKB0KAPEkFIHSoAAQz0IRKA4FgHgaikBhKADE81AEVoYCQHwBRWB5KADEN1AElkIBIL6CIrAQ
CgDxHRSBG1AAiC+hCGShABDfQhGgABCf43cRoAAQ3+NnEaAAEAL/igAFgBALP4oABYCQPPwmAhQAQhbh
JxGgABCyDH4RAd4L4HLe+e/DTnfB1Xzjmw9pa7uvrw8APH3vAC0AQgrgdUuAAkBIEbwsAhQAQkrAqyJA
ASCkRLwoAhQAQsrAayJAASCkTLwkAhQAQirAKyJAASCkQrwgAhQAQgRUuwhQAAgRUs0iQAEgRAHVKgIU
AEIUUY0iQAEgRCHVJgIUAEIUU00iQAEgRAPVIgIUAEI0UQ0iQAEgRCNuFwEKACGacbMIUAAIsQG3igAF
gBCbcKMIUAAIsRG3iQAFgBCbcZMIUAAIcQC3iADvBVBMfX09WltbAQBtbW3zf3fHHXeU1c7g4CAAIBgK
Yi6TAQBkMnMKe0qcxg33DlAAhOzatQutra1oaGiYn/AqWNBWcKGhNjc3B8wBmbk5zM3NYS6T/Z1UH06L
QEDHU6sJ0zQ9M3PmMnO+EwWdNwPZybZt23SJAAA8tpII0ALwEAEjgGCepueEIJOZQ8baRhB34pQlQAHw
MIFAAIFgAEYQAIKWGGSQ8Yl1UG04IQK+FQDTNJsAeMN+LJGAEUDQCCKIrHWQSVMM3IbdIuA7ATBN8yEA
DwLY43BXHCUQCCAYssQgM4d0JoNMmtsEN2CnCPhCAKzVfg+ApwBscLQzLiRgBBAygkAoiHQ6KwS0CpzF
LhHwtACYprkBwPPImvpNzvamOggGDQSDRtYqSKeZe+AgdoiAJwUgb+LvcbYn1UvWKghhbm5u3iog9qNb
BDwlAJz46gkEAgiFgpgLGhQCh9ApAp4QAE58/SwQglluDexGlwhUtQBYzr2nkXXucY9vA4FAAKGaEOYy
c5idTdNZaCM6RKBqBcA67fQ86NV3hIARQE04hHQ6g/Rs2unu+AbVIlB1AmCZ+68B2OpsTwhwI2owO5um
f8AmVIpAVdUDME3zhwA+Bie/6wiFgqipCSEQ8P35MltQVU+gKr4t0zTvQnbVv8vpvhRicDyFc1OzGBy7
DgAYuDgDADg/NYvE1GxZbcUaQri9IWugtbeEEa010H5zDTY0hNDeElbbccWkZ9NI0xoAoP+04rFjx0Q/
7/otgGmaTwPQVjqlUuIjM/jjeAoDn17D+alZDI2nlLafyBONgZGZJf/e1hLG7Q0hdNxaiy+1hNG5tk7p
8yUEQ0EYhkEnYRXgWgGwPPzvwCXmfnxkBvGL1zBwcWbZCWk3Q+MpDI2ncDRhzv9dx9o6dKyrQ+e6WscF
IecknL2e5lFkF+NKATBNcyuyk9+x0F4ylUFPwkT802s4mjCRTLl/EA+MZMXpJx8C0bCBHbEIOm+txc5Y
BNGwM+6eUE0QmXQAs4wUuBLXCYDTJn9PwsSbf5lesLJWI8lUBt1np9B9dgqPYww7YhE8+rl67IxFbO+L
ETRQYwQwe51bArfhGgGwTP6DcCCb7/zULH5x+irePDtVFSt9JRxNmDiaMBENG3h0YwO+t6lx3sloB4FA
bkswyyxCF+EKAbAm/3uw2cvfkzBx6PRVV+zp7SKZyuDQmSs4dOYKOtbWYd+mRlutglBNiDkDLsJxAbBC
fO/Bxv3+G2en8MIHybJDc14j5zOINYTw3N1RfHtjgy3PDYWCyAToF3ADjiYC2T353zg7hTvf/hsej4/5
fvLnk5iaxePxMdz59t/wxtkpW55pBA2EQkFbnkVWxjEBsHL5P4QNk58TvzTsFgIjaKAm7LgR6mscEQBr
8r+m+znxkRl8rXeUE79MckLwtd5RxDX7R3LOQeIMtguAHZM/mcpgb3wMX+8d9ZWDTzUDIzP4eu8o9sbH
tEZHKALOYasA2DH5exIm7nz7b+i2aS/rB7qtLVSPxtwIioAz2CYAuid/MpXBw32X8a2+y56N5TtJMpXB
t/ou42GN75ciYD+2CIDuyZ9b9as9e68aOGq9a13WAEXAXrQLgJXXr2XyJ1MZ/ODUBFd9m8lZAz84NaHl
vVME7EOrAFhx/nd0tH1+ahb3947i0JkrOponJXDozBXc3zuK8xoiLNnag8wT0I02AbBKd2lJ8ulJmLjn
8EXlZ/BJ+QyNp3DP4YtatgSGwWQh3WgRgLyz/Mon/0tnrtDkdxm5LcFLGqwxw6o5SPSg681qKd+1Nz6G
/acmVDdLFLH/1AT2xseUt5urMETUo/ytWoU7lRZCy4X4GNt3P91np7SECkM1QRYc1YBSAbCu3n5eZZvJ
VAb3944yxFdFHE2YuL93VIsIELUoE4C8ev3KyE1+Ovuqj6HxlHIRyF1PRtSh0gJQ6vTj5K9+dIiAETRg
0CmoDCVv0tr3K3P6+WHyb2quQbxrFeJdq7Cpucbp7mhDhwiEQvQHqEIsAFayj7J9v18m/7FtN6O9uQbt
1p8pAuVBf4AaRAKQF+9Xxt74mKcnfzRs4K37WhaU6V7u77zG0HhKaYgwEAggSH+AGOmIexoKb+fdGx/z
vLf/0OYmxOqXDtxYfRCHNnv7hvOjCVOpCASDBrcCQioWANWm/0tnrrgyzh8NG+i6Tc0tO9/9fD12FGhr
x211+O7n65U8q+u2OldaFN1np5RmDHIrIEMyQpSF/HoSpusy/KJhA/vbGjH44Gq0KdifR8MGnm1vLPr/
nm1vVDJx25prMPjgauxvU9OeSvafmlB2diAQCDBVWEBFb866vUeJ1/+8VX/OLeRP/NxkfGtYPlh/8uWb
SpqI0bCBn3z5JvHz3ho250XHjULweHxM2SlC+gIqp+wRYTn+lJj+uRRftxzseaQ1smDiA0D3sIkL07L6
9Zuaa7C7tfTLN3a3RsRRgQvTaXRbwpUvBI+U0Q+dqP7umSBUGZUsCQehKOHnxx8kXeHx39Rcg3e/egte
2dy0ZJV8a/jv4vZf/KeoLT+zmMV9j4YNvLK5Ce9+9RZXhB2HxlP48QdJJW0ZQQOGQYdguZQlAFa67x4V
D+5JmK4o5rG/rREnulahY3V4yb8lptN4f/SaqP1719Qu23YxOlaHce+aWtGz3x+9hsQy1kvH6jBOdK3C
/rbiPgndHDpzRZk/IBikFVAu5VoAShx/yVTG8X3/+vog4l2rCjrmXv6TPCqxq/UfHPnZHIU+w7PtjYh3
rcL6ZcKSdvK4orLjASPANOEyKfltWbX9tqp4qO4688Xouq0OJ7pWob2IGXzsE9mdAuvrg2Xt/RezuzUi
npzFPkN7cw1OdK1SFuqshNw9DipgRKA8ynlbShx/PdY11U6xv62xpKy7wYnrYuffE1+QX7YpbePCdBqD
E9cL/p9cJqKTW4KjCVPJViAQoBVQDiW9KVWrv9Om/6HNTSXF4gHgrb/KB+Puf5Sb8CraeOXP0yX9v2fb
Gx3NRlS1FaAVUDqlviklq//3NZWRLkY0bCDetaosc1xq/j/SGlESd4+GDXHo7kQZjszdrRHEu1Y5kjOQ
TGXwfQUJYbQCSqfoW1K1+sdHZhxJ9Y2GDbxrnbwrFRXm/6471MXbpW2Vsg3Ip725Bu9uu9kREeg+O6Xk
QlJaAaVRylv6jooHvaAo3lsOlUx+QG7+r68PVhT6W4mO1WGxM7Dcz+SkCKgYK7QCSqPgG1IV93/j7JTt
t/RWOvkB4MQlWXLSdg0edWmblXwmp0RgYGQGbyiwFoOsJFyUYm/oKRUPcWL1r3TyJ6bTOF2GubwcKs1/
VW2enri+bFJQMXIiYDdKrAAjwOPCRVhRAKyc/z3SB7xxdgoJDVdHFeLQ5qaKJj8ADAgz/9bXByt+diHa
m2vE24BKP1t7c43t0YHE1KwaK4DbgIIUejsPQUHOv92r//62RlHyzYlRmfm/RZi+q7NtyWfb3RqxPU9A
xdihH6Awhd6O2Py3e/Xvuq2u5Dj/SpQTMluO7ev1ZdRJ25Z+tmfbG23NGKQVoJ9l34zl/BOf97dz9V9f
H8QrQjM1MZ0Wh/9Uev9Vt31hOl2RHyCfVzY32Xp2gFaAXlZ6M+LVvydh2rr6v/yVZrG3Wrr/v3dNrVaP
eTRsiE8ISj9jNGzg5a80i9ooh8TUrDhFOBCgM3Alln0rpml+DGGxz6/1jtoe+iPepGNtHf6na42ojXQ6
g/SszPqphG98U+k1mUs4duyY6OeXLFdWsc8NkkbPT81y8hNlDIzMiMuHsVjI8ixnr4oz/35x+qq0CUIW
IB1T3AYsz3ICILZZ3nRheW9S3agYU3QGLmXBG7G8/xskDfYkTNcU+STeIZnKiJ2B3AYsZbEkylf/v5R2
9pyQcpGOLW4DlrJYAO6TNJZMZTx/tRdxjqMKrEtaAQtRagGoqu5KyEqIcwIoAAuYFwCr8IeI+KeyJBNC
iiEdYwaPCC8g/21slTZG85/oRsUYox/gBvkCINr/x0dm6P0n2kmmMuKSYfQD3CBfAESHf+IXaf4Te5CO
NVoANzCA+fRf0VG6gYtM/SX2IB1rdATeIGcBiI/+Mvef2IV0rNECuEFOADZIGlFRxpmQcqAfQA05ARA5
AP/ogiu+ib+QjjlaAVlC1u+iLcCADfH/8/+yVkuxjWQqg9v/a6Tin793TS2OOVA1FwC2942Jri936zst
hcHPZJWbKQBZct++yAEoPatdDJ2VdgYn7a1Y7CZ0fXYVlYuKMUgLQAmGigzAIc1bgC0a6+xJcbJvfn4v
0jHHSEAWA8LVX6rEpbBlrb7VxM/JSzo/u87vLIcdY8/rGBDu/8/ZUPizvSlU/D9VyNC4bC8Za7CvQq7q
Z0s/eyF0fmc5JnkyUIx4Yz04pm8QAdly305cUFkqsQb9A92Nzy5GNGxoLx/O7FM5BqQ1AK7pNaHbNFyz
RezB7d8dHYEqLADN+zDdg2hIeBFoNaP7s+v+7sTp5xQAuQDoRvceO3l9TvTzOm8C0v1s6WcvhpP+EVIa
BoR1AHTnALh5n0sKo/u7k449GgAKLADd13/dbuM9dEQt0Rq9M0w69gLLX4zlK9y/BaAAVC3tLncCkioQ
AEKIPigAhPgYCgAhPsbVAqA7k0zKJu5xSZXjagG4MK3/PneJJ/m0j5OIiDdwtQDYAfMMiJ/xvQAQ4mco
AIT4GAoAIT7G9QIwSEdb1cLvzv2IBUC3E033iTWiD/2nDWVjb26OY8sA0C9p4HbNAqD7sBHRh/aDYlIB
UNSPasb1W4DElN5cAOmJtYFLzhWmlD5b/2k9/XkcRIZYADrW1anox4pUe9UaN1Pt1ZakY28uQxvAAHDc
6U4Uws8lu6od9393FACxBdB+s95V5MJ02tW1+530UbjZP5JMZbSncneuk909QB9gVgA+kjSwwYZUWp3X
d7W1yATMyX2u9NnSz14IO65caxKWi2cUICsAk5IG2lv0F8U8MaKv/rub7xzQjc7PrvM7yyEZe5z8WYxI
JNIvbaRNswiccNDTXgwn++bn9yIec5z/AG74AERWgO5cgPdHr2nzA9hxhZVb0fXZk6mM6NryUpBanhla
AACA3Aj4CILy4B231uJowlTSoZXQfd98pbw/eg1N3Z863Y2KcOs7LYX2W2T+C4YAs+QsAFEo8Es2+AEI
yUc65ugDyJITgHOSRjrX6k0GImQx0jFHAciSEwBRKBAAOigCxCakY43m/w0MAIhEInIB0JwSTEgO6Vij
A/AG+YHgfklD0qwsQkpFnAFIC2CefAEQOQI719b5OqmG2EM0bIj3/5mMe1PL7UaZBQAAO2IRaROEFEQ6
xuj8W8h8JkgkEuk3TVksv/PWWnSfnRJ3ipCV6LxVZv4fOXIEr776qqLeVD+LbfZ+SWM7aQEQzUjH2NDQ
kKKeeIPFAnBE0lg0bHAbQLSxIxYR+5lOnTqlqDfeQKkFAACPfq5e2gQhyyIdWydPnlTUE++wQACsfIBz
kgZ3KlBpQhYTDRti85+r/1KWm6mHpY0+urFB2gQhC1Axprj/X8pyAvAraaPf29QobYKQBUjH1PDwMEZH
RxX1xjssEQAV24DbG0I8G0CU0bG2Tlxzoq+vT1FvvMVKb/UwgKclDe/b1IiBkRlJE2Xx7ldvQcdq2RHR
7mET+05WXhvl3jW1OLbtZlEfirG9b0xUbOPQ5ibsbpXtpQcupfDA7z4TtVEO+xRYlBSA5VnJW/dzacM7
YxHt14bl8+QfJsRVgzrWyJJMdFYuAtRU2pF+xmQqgyf/MCFqoxxiDSGx8+/kyZOYnp5W1CNvsawARCKR
c1BwRPi5u6PSJkrmwnQaTwhWbwCI1Qexvj4oakPnTUHSttfXBxETfr4nTk5qL/edj4oxxNV/ZQrF68RW
wLc3NthqBfR+MoMXB6+K2tgiXCGPXdC37ZG2Lf1sLw5eRe8n9m3rYg0hfFvo/Z+enmb4rwCFBOAwhMVC
AXutAAA4MHQV3cOVn2nYskbmRzihsRimtG3JZ+seNnFgSCau5aJi7Bw+LI5qe5oVBSASiUxCQU6A3VYA
AOw7OVnx3fTSPfKF6XTFzy7E4MR1seld6WcbnLguco5WgorVHwB+//vfK+iNdymWsvcjFQ+x2woAgAf6
xiqaiLH6IDYJL81866/qKyRL29zUXFPR/n9w4joe6BsTPbsSVO39GfsvTEEBsJyBSqwAu/MCkqlMxSKw
RRhOPKZhnyxts5LPlJv8dt/N2LG2TsnqT+dfcUpJ2hc7AwFnrIBKRWDXHbKw04XptNJowMCllNj8L/cz
OTX5ATVjZWhoiKm/JVBUAKyrw/qlD+pcW4fdDpwRqEQE2ptrxOFAldsAaVvr64NoL2Nb4+Tk372xQUmZ
+e7ubgW98T6lHttT4gv46T3NjpwUTKYy6Oy9XFZ0YPttskH462FTyQRKpjL4tSCqAZQX/useNtHZe9mR
yR8NG/jpPc3idrj6l05Js1GVFRANG/hlp95U2ULsOzlZcp6AdBsAAN0f/90VbTxxZ2nn6F8cvGq7tz+f
X3berGSB4OpfOuW8bSVWwM5YxNGqQQeGrmLX8fGiK5yKbcArf5LXR5S2UYr5n0xlsOv4uO1x/nx2xCJK
Sspx9S+PkgVAlRUAAK8qUvpK6f1kBlt6Lxd11Em3ARem06KkpO5hU+z8K/YZBi6lsKX3sq0ZfouJhg28
qsgy5OpfHuXOQiVWgNNbASA7OR/43WcFtwRPfkHutHxruHITXvKzOQp9hhcHr+KB331ma27/cqgy/bn6
l09Zb92yAl5X8eCdsQj2ffEmFU2JODB0dUVrIFYfxL0KTghWEhIcuJQSn/y7d03tssk/uVXfSZM/x74v
3qSsmvTBgweVtOMnAuX+gGmaGwB8CKBJ+vBkKoP7e0cxNK7vBF05PNIawX98+aYFq5G0RgCQzcI70bWq
rJ/Z0nsZp4UpxYvP/idTGfzb/14RRxVU0dYSxm+71rCGpIOU/eat7EAlyUHRsIG3t61yzQD49bCJ9iOX
8OLg1Xkn4e7WiNgZeHrielm+gO5hUzz519cH5yd/MpXBi4NX0X7kkmsmv9u+e79StgWQwzTNjwFsUNGJ
noSJb/VdVtGUMqJhA9/9fD2evLMeL/95WmwuR8MGBh9cXXTAJ1MZtB+5JI7D729rnO/7f/7ftCNx/UL8
ZtsqXiTjAiTy+5iqTuyMRXBAQQKISpKpDA4MZVfNIQWn+3KrcDHyrQ8JQxPX0X7kEg4MqWlPJQfuaebk
dwkVWwAAYJrmQQhrB+azNz7m+bsF37yvBTtWCM0d/WQGjx4ft7lH9rJ7Y4OykB+RIxWAJmQdghuU9AbA
w32XcTThjn2qDqJhA+9uu3lJck5iOo0Oh1Jw7WJHLIK3t5XnDCV6EXlgrKIhyrYCQDZJqK1FdhzXzSRT
GTx5cnLBRM9l4nl58re1hLnyuxCRBZBD9VbAbeFBHayvD6L7vhYAwJMnJ8VefzfDcJ97USIAAGCa5ocA
7lLVnh9EwA9w8rsbld/KY1BQRDRHNGzgt11rPL0d8Dqc/O5H2TdjXSn2jKr2AIpANcPJXx0o/XYikcjr
AH6mss2cCDh5hJiUx45YhJO/SlDmA8jHNM33AGxV3a4f8gSqHcb5qwtdAqA8PyDHS2euYP8p++6mI6Vz
4J5m/KsLTniS0tEiAABgmuZdAN6DglODi+lJmHg87kzRSrKUXH0HpvdWH9oEAJgXgQ91tH1+ahYP911m
mNBh2lrCeHvbKtxu8+1PRA1aBQAATNPcA+A1HW0nUxn8+IMkDp25oqN5UoR9X7wJ/353VJezbxLAP1vR
JaIJ7QIA6BUBgFsCu7HJ5P9GJBLhzZ6asUUAAP0ikExlsDc+5umDRG5gRyxiR1HXx6yQMtGMbQIAAKZp
vgZgj85n0BrQg42OPk5+G7FVAAB7RCCZyuD7pyaYM6CI3Rsb7LrViZPfZmwXAED/diBHfGQGL3yQxMCI
czXvq5mOtXV47u6okrv6SoCT3wEcEQDAPhEAgDfOTuGFD5JITM3a8biqJ9YQwnN3R5Vc0V0CkwCe4eR3
BscEALBXBAAKQTFsnvgAQ32O46gAAHozBleCQrAQByY+AJxDNtTHye8gjgsAMC8C70DD2YFC9CRMHDp9
1bc+go61ddi3qdGJFN6PkF35nbuKmABwiQAA8weI3oGGU4TFOD81i1+cvoo3z055PnwYDRt4dGMDvrep
0an03deR3fNz8rsA1whADtX1BculJ2Hizb9Mey6haEcsgkc/V+/0gZ1nIpGI0noRRIbrBACYdw4ehI1+
gcUkUxn0JEzEP72Gowmz6iyDaNjAjlgEnbfWYmcs4nRxjklk9/v9TnaCLMWVAgDM+wVeg8JCoxLiIzOI
X7yGgYszrvUZdKytQ8e6OnSuq7Urdl8K/chOfpr8LsS1ApDD6S3BSsRHZvDH8RQGP7uOwfGU7ceS21rC
aG8Jo/2WGnypJeymCZ8PTX6X43oBAADTNLciaw1scLYnhRkcT2EylUH84jUAwMDFrKVwfmq27JBjrCE0
76TrWJed3J3ratEUNtDu/iKpHyGb2ccQn8upCgEA5qMEz8OF1gBZwI8ikcgPne4EKY2qEYAc1WIN+JB+
ZE1+rvpVRNUJQA7TNH8I4Ck4GCkgAJjLX9VUrQAAgGmaG5DdFuxxtie+5WfImvz08FcpVS0AOaxtwfNw
IIvQp7yO7MQ/53A/iBBPCEAOCoF2+pGd+P0O94MowlMCkINCoJx+cOJ7Ek8KQA5LCJ4C8JDDXalWXgfw
c3r2vYunBSBHnrPwITBqUIxJAD8H8Dr3+N7HFwKQw0omeghZq8AVZwxcRD+AXzGc5y98JQD5WFZBbnuw
wdHOOMc5AL8CV3vf4lsByMc6efgd+EMMPsKN1Z57e59DAViEJQZbATwI70QRDgM4DuAwV3qSDwWgCFYk
YSuA+1AdgjCJ7Cp/HEA/Q3ekEBSAMrEshLuQ3SrcZ/3ZqcjCOevXcev3j2jWk3KgACjCshSacCO6cF/e
P2+tsNn+vD8ft37/CMAkV3aigv8H41/4ejxNKKoAAAAASUVORK5CYIIoAAAAMAAAAGAAAAABACAAAAAA
AIAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA9vb2UPb29o/29va/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2v/b29o/29vZQAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA9vb2EPb29oD29vbv9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb27/b29oD29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD29vaA9vb27/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vbv9vb2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2IPb29s/29vb/9vb2//b29v/29vb/8urX/+jMiv/frT7/2ZsP
/9eVAP/XlQD/15UA/9eVAP/Zmw//360+/+jMiv/y6tf/9vb2//b29v/29vb/9vb2//b29s/29vYgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYw9vb27/b29v/29vb/9vb2//DkyP/hs03/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/360+/+7euf/29vb/9vb2
//b29v/29vbv9vb2MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29jD29vbv9vb2//b29v/29vb/5b9s
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/lv2z/9PDn//b29v/29vb/9vb27/b29jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2IPb29u/29vb/9vb2
//Tw5//dpy7/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/3acu//Tw5//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/AAAAAAAAAAAAAAAA9vb2
z/b29v/29vb/9PDn/92nLv/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/96sPP/kwnj/5MJ4
/9+xS//XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/92nLv/08Of/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/AAAA
AAAAAAD29vaA9vb2//b29v/29vb/3acu/9eVAP/XlQD/15UA/9eVAP/XlQD/2qAe/96sPP/XlQD/15UA
/+7k0v/x7/D/8e/w/+7k0v/XlQD/15UA/96sPP/aoB7/15UA/9eVAP/XlQD/15UA/9eVAP/dpy7/9PDn
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/AAAAAPb29hD29vbv9vb2//b29v/lv2z/15UA/9eVAP/XlQD/15UA/9eVAP/ht1r/7+nh
/96sPP/XlQD/3KYt//Hv8P/x7/D/8e/w//Hv8P/erDz/15UA/9ymLf/v6eH/4bda/9eVAP/XlQD/15UA
/9eVAP/XlQD/5b9s//b29v/29vb/s7Oz/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAPb29oD29vb/9vb2//DkyP/XlQD/15UA/9eVAP/XlQD/15UA
/+fNlv/x7/D/8e/w/9eVAP/XlQD/5MJ4//Hv8P/x7/D/8e/w//Hv8P/kwnj/15UA/9eVAP/v6eH/8e/w
/+fNlv/XlQD/15UA/9eVAP/XlQD/15UA/+7euf/29vb/9vb2/1lZWf9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAPb29u/29vb/9vb2/+GzTf/XlQD/15UA
/9eVAP/XlQD/4rxp//Hv8P/x7/D/69m0/9eVAP/XlQD/69m0//Hv8P/x7/D/8e/w//Hv8P/r2bT/15UA
/9eVAP/r2bT/8e/w//Hv8P/ivGn/15UA/9eVAP/XlQD/15UA/9+tPv/29vb/9vb2/7Ozs/9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2UPb29v/29vb/8urX
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/y6tf/9vb2
/+vr6/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2
j/b29v/29vb/6MyK/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/ozIr/9vb2//b29v/y8fL/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2
//b29v/29vb/9vb2v/b29v/29vb/360+/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/frT7/9vb2//b29v/08/P/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC
/0JCQv9CQkL/9vb2//b29v/29vb/9vb2//b29v/29vb/2ZsP/9eVAP/XlQD/15UA/9+xS//x7/D/8e/w
//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w
//Hv8P/x7/D/8e/w/9+xS//XlQD/15UA/9eVAP/XlQD/9vb2//b29v/19PX/8e/w//Hv8P/x7/D/8e/w
//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2//b29v/29vb/15UA/9eVAP/XlQD/15UA
/+TCeP/x7/D/8e/w//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/3qw8
/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w/+TCeP/XlQD/15UA/9eVAP/XlQD/9vb2//b29v/19PX/8e/w
//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2//b29v/29vb/15UA
/9eVAP/XlQD/15UA/+TCeP/x7/D/8e/w//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w
//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w/+fNlv/XlQD/15UA/9eVAP/XlQD/9vb2
//b29v/19fX/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2
//b29v/29vb/15UA/9eVAP/XlQD/15UA/+TCeP/x7/D/8e/w//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w
//Hv8P/x7/D/8e/w//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w/+fNlv/XlQD/15UA
/9eVAP/XlQD/9vb2//b29v/19fX/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2
//b29v/29vb/9vb2//b29v/29vb/15UA/9eVAP/XlQD/15UA/+TCeP/x7/D/8e/w//Hv8P/x7/D/3qw8
/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w
/+TCeP/XlQD/15UA/9eVAP/XlQD/9vb2//b29v/19PX/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC
/0JCQv9CQkL/9vb2//b29v/29vb/9vb2//b29v/29vb/2ZsP/9eVAP/XlQD/15UA/9+xS//x7/D/8e/w
//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/3qw8/9eVAP/erDz/8e/w
//Hv8P/x7/D/8e/w/9+xS//XlQD/15UA/9eVAP/XlQD/9vb2//b29v/19PX/8e/w//Hv8P/x7/D/8e/w
//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2v/b29v/29vb/360+/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/frT7/9vb2//b29v/08/P/8e/w
//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2j/b29v/29vb/6MyK
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/ozIr/9vb2
//b29v/z8fL/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2
UPb29v/29vb/8urX/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/y6tf/9vb2//b29v/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2
//b29v/29vb/AAAAAPb29u/29vb/9vb2/+GzTf/XlQD/15UA/9eVAP/XlQD/4rxp//Hv8P/x7/D/69m0
/9eVAP/XlQD/69m0//Hv8P/x7/D/8e/w//Hv8P/r2bT/15UA/9eVAP/r2bT/8e/w//Hv8P/ivGn/15UA
/9eVAP/XlQD/15UA/9+tPv/29vb/9vb2//Tz9P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC
/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAPb29oD29vb/9vb2//DkyP/XlQD/15UA/9eVAP/XlQD/15UA
/+fNlv/x7/D/8e/w/9eVAP/XlQD/5MJ4//Hv8P/x7/D/8e/w//Hv8P/kwnj/15UA/9eVAP/v6eH/8e/w
/+fNlv/XlQD/15UA/9eVAP/XlQD/15UA/+7euf/29vb/9vb2//Lw8f/x7/D/8e/w//Hv8P/x7/D/8e/w
//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAPb29hD29vbv9vb2//b29v/lv2z/15UA
/9eVAP/XlQD/15UA/9eVAP/ht1r/7+nh/96sPP/XlQD/3KYt//Hv8P/x7/D/8e/w//Hv8P/cpi3/15UA
/9ymLf/v6eH/4bda/9eVAP/XlQD/15UA/9eVAP/XlQD/5b9s//b29v/29vb/9PT0//Hv8P/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAAAAAAD29vaA9vb2
//b29v/29vb/3acu/9eVAP/XlQD/15UA/9eVAP/XlQD/2qAe/96sPP/XlQD/15UA/+7k0v/x7/D/8e/w
/+7k0v/XlQD/15UA/96sPP/aoB7/15UA/9eVAP/XlQD/15UA/9eVAP/dpy7/9PDn//b29v/29vb/8vDx
//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/AAAA
AAAAAAAAAAAA9vb2z/b29v/29vb/9PDn/92nLv/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/96sPP/kwnj/5MJ4/9+xS//XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/92nLv/08Of/9vb2
//b29v/z8vL/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2
//b29v/29vb/AAAAAAAAAAAAAAAA9vb2IPb29u/29vb/9vb2//Tw5//dpy7/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/3acu
//Tw5//29vb/9vb2//Tz9P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC
/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAPb29jD29vbv9vb2//b29v/29vb/5b9s
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/lv2z/9PDn//b29v/29vb/9PP0//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w
//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAD29vYw9vb2
7/b29v/29vb/9vb2//DkyP/hs03/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/360+/+7euf/29vb/9vb2//b29v/08/T/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA9vb2IPb29s/29vb/9vb2//b29v/29vb/8urX/+jMiv/frT7/2ZsP/9eVAP/XlQD/15UA
/9eVAP/XlQD/360+/+jMiv/y6tf/9vb2//b29v/29vb/9vb2//Py8v/x7/D/8e/w//Hv8P/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaA9vb27/b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/08/T/8vDx//Hv8P/x7/D/8e/w
//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2
//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29oD29vbv9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9PP0//Lw8f/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/4aGhv/29vb/9vb2//b29v/29vbPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA9vb2//b29v/29vb/vr6+/8nJyf/Jycn/ycnJ//X09f/09PT/9PPz//Lx8v/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/hoaG//b29v/29vb/9vb2//b29s/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC//Hv8P/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2//b29v/29vb/9vb2z/b29hAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC
//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4aGhv/29vb/9vb2//b29v/29vbP9vb2EAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/QkJC
/0JCQv9CQkL/QkJC//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w
//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2//b29s/29vYQAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2
//b29v/29vb/QkJC/0JCQv9CQkL/QkJC//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2//b29v/29vb/9vb2
z/b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w
//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC/4aGhv/29vb/9vb2
//b29v/29vbP9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG
//b29v/29vb/9vb2//b29s/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv+Ghob/9vb2//b29v/29vb/9vb2z/b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/4aGhv/29vb/9vb2//b29v/29vbP9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2
//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2//b29s/29vYQAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2z/b29hAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vbP9vb2
EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29s/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AA
////AAD/gAAf//8AAP8AAA///wAA/AAAA///AAD4AAAB//8AAPAAAAD//wAA4AAAAAAAAADgAAAAAAAA
AMAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAADgAAAAAAAAAOAAAAAAAAAA8AAA
AAAAAAD4AAAAAAAAAPwAAAAAAAAA/wAAAAAAAAD/gAAAAAAAAP/wAAAAAAAA//AAAAABAAD/8AAAAAMA
AP/wAAAABwAA//AAAAAPAAD/8AAAAB8AAP/wAAAAPwAA//AAAAB/AAD/8AAAAP8AAP/wAAAB/wAA//AA
AAP/AAD/8AAAB/8AAP/wAAAP/wAAKAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZQ9vb2n/b29t/29vb/9vb2//b29v/29vb/9vb2
3/b29p/29vZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZA9vb23/b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vbf9vb2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/8urX/+W/bP/dpy7/15UA
/9eVAP/XlQD/15UA/92nLv/lv2z/8urX//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p/29vb/9vb2/+W/bP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/5b9s//b29v/29vb/9vb2nwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaP9vb2//Tw5//dpy7/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/3acu//Tw5//29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v8AAAAA9vb2QPb29v/08Of/3acu
/9eVAP/XlQD/15UA/96sPP/aoB7/15UA/+nTpf/p06X/15UA/9qgHv/erDz/15UA/9eVAP/XlQD/3acu
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/wAAAAD29vbf9vb2
/+W/bP/XlQD/15UA/9eVAP/myIf/8e/w/9mbD//cpi3/8e/w//Hv8P/cpi3/2ZsP//Hv8P/myIf/15UA
/9eVAP/XlQD/5b9s//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/9vb2
UPb29v/y6tf/15UA/9eVAP/XlQD/5siH//Hv8P/p06X/15UA/+bIh//x7/D/8e/w/+bIh//XlQD/6dOl
//Hv8P/myIf/15UA/9eVAP/XlQD/8urX/+vr6/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2
//b29v/29vaf9vb2/+W/bP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/lv2z/9vb2/3p6ev9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv/29vb/9vb2//b29t/29vb/3acu/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/92nLv/29vb/9PPz//Hv8P/x7/D/8e/w
/0JCQv9CQkL/QkJC//b29v/29vb/9vb2//b29v/XlQD/15UA/9eVAP/x7/D/8e/w//Hv8P/erDz/15UA
//Hv8P/x7/D/8e/w//Hv8P/XlQD/3qw8//Hv8P/x7/D/8e/w/9eVAP/XlQD/15UA//b29v/19PX/8e/w
//Hv8P/x7/D/QkJC/0JCQv9CQkL/9vb2//b29v/29vb/9vb2/9eVAP/XlQD/15UA//Hv8P/x7/D/8e/w
/96sPP/XlQD/8e/w//Hv8P/x7/D/8e/w/9eVAP/erDz/8e/w//Hv8P/x7/D/15UA/9eVAP/XlQD/9vb2
//X09f/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv/29vb/9vb2//b29v/29vb/15UA/9eVAP/XlQD/8e/w
//Hv8P/x7/D/3qw8/9eVAP/x7/D/8e/w//Hv8P/x7/D/15UA/96sPP/x7/D/8e/w//Hv8P/XlQD/15UA
/9eVAP/29vb/9fT1//Hv8P/x7/D/8e/w/0JCQv9CQkL/QkJC//b29v/29vb/9vb2//b29v/XlQD/15UA
/9eVAP/x7/D/8e/w//Hv8P/erDz/15UA//Hv8P/x7/D/8e/w//Hv8P/XlQD/3qw8//Hv8P/x7/D/8e/w
/9eVAP/XlQD/15UA//b29v/19PX/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/9vb2//b29v/29vbf9vb2
/92nLv/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/dpy7/9vb2//Tz8//x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv/29vb/9vb2
//b29p/29vb/5b9s/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/+W/bP/29vb/8/Hy//Hv8P/x7/D/8e/w/0JCQv9CQkL/QkJC
//b29v/29vb/9vb2UPb29v/y6tf/15UA/9eVAP/XlQD/5siH//Hv8P/p06X/15UA/+bIh//x7/D/8e/w
/+bIh//XlQD/6dOl//Hv8P/myIf/15UA/9eVAP/XlQD/8urX//b29v/x7/D/8e/w//Hv8P/x7/D/QkJC
/0JCQv9CQkL/9vb2//b29v8AAAAA9vb23/b29v/lv2z/15UA/9eVAP/XlQD/5siH//Hv8P/Zmw//3KYt
//Hv8P/x7/D/3KYt/9mbD//x7/D/5siH/9eVAP/XlQD/15UA/+W/bP/29vb/9PPz//Hv8P/x7/D/8e/w
//Hv8P9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAD29vZA9vb2//Tw5//dpy7/15UA/9eVAP/XlQD/3qw8
/9qgHv/XlQD/6dOl/+nTpf/XlQD/2qAe/96sPP/XlQD/15UA/9eVAP/dpy7/9PDn//X19f/x7/D/8e/w
//Hv8P/x7/D/8e/w/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAD29vaP9vb2//Tw5//dpy7/15UA
/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/3acu//Tw5//29vb/8vDx
//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAD29vaf9vb2
//Tw5//lv2z/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/+W/bP/29vb/9vb2
//Lw8f/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAA
AAAAAAD29vaP9vb2//b29v/y6tf/5b9s/92nLv/XlQD/15UA/9eVAP/XlQD/3acu/+W/bP/y6tf/9vb2
//X19f/y8PH/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w/0JCQv9CQkL/QkJC//b29v/29vb/AAAA
AAAAAAAAAAAAAAAAAAAAAAD29vZA9vb23/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/08/P/8e/w//Hv8P/x7/D/8e/w/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2
//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2UPb29v/29vb/9vb2//b29v/29vb/9fT1
//Tz8//z8fL/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG
//b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC
/0JCQv/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P9CQkL/QkJC/0JCQv9CQkL/QkJC
/4aGhv/29vb/9vb2//b29p8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2
/0JCQv9CQkL/QkJC//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w/0JCQv9CQkL/QkJC
/0JCQv+Ghob/9vb2//b29v/29vafAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
APb29v/29vb/QkJC/0JCQv9CQkL/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/8e/w//Hv8P/x7/D/QkJC
/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/4aGhv/29vb/9vb2//b29p8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2//b29v/29vafAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC
/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29p8AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2
//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vafAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD+AH//+AAf//AAD//gAAf/wAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAwAAAAOAAAADwAAAA+AAAAP4AAAD/AAAB/wAA
A/8AAAf/AAAP/wAAH/8AAD//AAB//wAA/ygAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAPb29lD29vbP9vb2//b29v/29vb/9vb2z/b29lAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAPb29oDy6tf/4bNN/9eVAP/XlQD/15UA/+GzTf/y6tf/9vb2gAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAPb29lDy6tf/2ZsP/+bIh//XlQD/8e/w/9eVAP/myIf/2ZsP//Lq1//29vb/9vb2
//b29v/29vb/9vb2//b29v/29vbP4bNN/+bIh//x7/D/15UA//Hv8P/XlQD/8e/w/+bIh//hs03/kZGR
/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/8nJyf9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/XlQD/8e/w//Hv8P/XlQD/8e/w/9eVAP/x7/D/8e/w
/9eVAP/19PX/8e/w//Hv8P9CQkL/QkJC//b29v/29vb/15UA/9eVAP/XlQD/15UA/9eVAP/XlQD/15UA
/9eVAP/XlQD/9fT1//Hv8P/x7/D/QkJC/0JCQv/29vb/9vb2z+GzTf/myIf/8e/w/9eVAP/x7/D/15UA
//Hv8P/myIf/4bNN//Py8//x7/D/8e/w/0JCQv9CQkL/9vb2//b29lDy6tf/2ZsP/+bIh//XlQD/8e/w
/9eVAP/myIf/2ZsP//Hp1v/x7/D/8e/w//Hv8P9CQkL/QkJC//b29v8AAAAA9vb2gPLq1//hs03/15UA
/9eVAP/XlQD/4bNN//Hp1v/y8PH/8e/w//Hv8P/x7/D/QkJC/0JCQv/29vb/AAAAAAAAAAD29vZQ9vb2
z/b29v/Jycn/ycnJ//Py8//x7/D/8e/w//Hv8P/x7/D/8e/w/0JCQv9CQkL/9vb2/wAAAAAAAAAAAAAA
AAAAAAD29vb/QkJC/0JCQv/x7/D/8e/w//Hv8P/x7/D/QkJC/0JCQv9CQkL/hoaG//b29u8AAAAAAAAA
AAAAAAAAAAAA9vb2/0JCQv9CQkL/8e/w//Hv8P/x7/D/8e/w/0JCQv9CQkL/hoaG//b29u/29vYwAAAA
AAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29u/29vYwAAAA
AAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29u/29vYwAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29u/29vYwAAAA
AAAAAAAAAAAAwH8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAADwAAAA8AAA
APABAADwAwAA8AcAAA==
</value>
</data>
</root>

View File

@@ -0,0 +1,261 @@
Imports System.IO
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Interfaces
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Config
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports System.Net
Imports System.Text.RegularExpressions
Public Class frmMain
Private _LogConfig As LogConfig
Private _Logger As Logger
Private _Interface As GraphQLInterface
Private _MSSQL As MSSQLServer
Private _Config As ConfigManager(Of Config)
Private _Datapools As New List(Of String) From {
"sap_aviation",
"sap_facility",
"sap_holding"
}
Public Class SAPData
Public sapdaten As List(Of SAPDataItem)
End Class
Public Class SAPDataItem
Public buchungskreis As String
Public kostenstelle As String
Public beschreibung As String
Public gueltig_bis As String
End Class
Const GRAPHQL_QUERY_SAP_DATA = "
query SAPDaten {
sapdaten(datenpool: __DATA_POOL__) {
sapdaten {
buchungskreis
kostenstelle
beschreibung
gueltig_bis
}
}
}
"
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim oStartupPath As String = AppDomain.CurrentDomain.BaseDirectory
_LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oStartupPath) With {
.Debug = True
}
_Logger = _LogConfig.GetLogger()
_Config = New ConfigManager(Of Config)(_LogConfig, oStartupPath)
txtBaseUrl.Text = _Config.Config.BaseUrl
txtUsername.Text = _Config.Config.Email
txtPassword.Text = _Config.Config.Password
txtCertFile.Text = _Config.Config.CertificateFile
txtCertPass.Text = _Config.Config.CertificatePass
txtCertFingerprint.Text = _Config.Config.CertificateFingerprint
txtConnectionString.Text = _Config.Config.ConnectionString
txtProxyHost.Text = _Config.Config.ProxyHost
txtProxyPort.Text = _Config.Config.ProxyPort
txtProxyUser.Text = _Config.Config.ProxyUsername
txtProxyPass.Text = _Config.Config.ProxyPassword
txtQuery.Text = _Config.Config.CustomQueryString
Dim oIndex = cmbQuery.FindStringExact(_Config.Config.CurrentQuery)
cmbQuery.SelectedIndex = oIndex
_MSSQL = New MSSQLServer(_LogConfig, _Config.Config.ConnectionString)
Catch ex As Exception
_Logger.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical, Text)
End Try
End Sub
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Try
SaveConfig()
_Interface = New GraphQLInterface(_LogConfig,
txtBaseUrl.Text,
txtUsername.Text,
txtPassword.Text,
txtCertFingerprint.Text)
If _Config.Config.HasProxySet() And _Config.Config.HasProxyCredentialsSet() Then
Dim oURI As New Uri($"http://{_Config.Config.ProxyHost}:{_Config.Config.ProxyPort}")
Dim oCredentials As New NetworkCredential(_Config.Config.ProxyUsername, _Config.Config.ProxyPassword)
Dim oProxy As New WebProxy(oURI, True) With {
.Address = oURI,
.UseDefaultCredentials = False,
.Credentials = oCredentials
}
_Interface.Proxy = oProxy
_Interface.Credentials = oCredentials
_Logger.Debug("Using Proxy: {0}", oURI.ToString)
_Logger.Debug("Proxy Credentials: [{0}] [{1}]", _Config.Config.ProxyUsername, _Config.Config.ProxyPassword)
Else
_Interface.Proxy = Nothing
_Interface.Credentials = Nothing
_Logger.Debug("Proxy not set.")
End If
Dim oResponse = _Interface.Login
_Interface.SaveCookies(oResponse.Cookies.Item(0))
If oResponse.StatusCode = Net.HttpStatusCode.OK Then
MsgBox("Login Successful!", MsgBoxStyle.Information, Text)
Else
MsgBox("Login failed! Check Certificate and User Credentials!", MsgBoxStyle.Critical, Text)
End If
Catch ex As Exception
_Logger.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical, Text)
End Try
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
If _Interface Is Nothing Then
MsgBox("Please login first!", MsgBoxStyle.Exclamation, Text)
Exit Sub
End If
If cmbQuery.SelectedIndex = -1 Then
MsgBox("Please select a query!", MsgBoxStyle.Exclamation, Text)
Exit Sub
End If
If cmbQuery.Text = "SAPDaten" Then
_MSSQL.ExecuteNonQuery("DELETE FROM TBCUST_SYNC_API_SAPDATEN")
txtResult.Text = String.Empty
Dim oTotalTotal As Integer = 0
For Each oDatapool In _Datapools
Dim oQuery As String = GRAPHQL_QUERY_SAP_DATA.Trim.Replace("__DATA_POOL__", oDatapool)
Dim oDataResponse = _Interface.GetData(oQuery, "SAPDaten")
Dim oResult As String
Using oStream = oDataResponse.GetResponseStream()
Using oReader As New StreamReader(oStream)
oResult = oReader.ReadToEnd()
End Using
End Using
Dim oObj As JObject = JsonConvert.DeserializeObject(oResult)
Dim oData As SAPData = ConvertResponse(oResult)
_Logger.Debug("Inserting [{0}] items for datapool [{1}]", oData.sapdaten.Count, oDatapool)
Dim oCounter As Integer = 0
Dim oTotal As Integer = oData.sapdaten.Count
ProgressBar1.Maximum = oTotal
ProgressBar1.Value = oCounter
For Each oItem As SAPDataItem In oData.sapdaten
Dim oBeschreibung = Regex.Replace(oItem.beschreibung, "'", "''", RegexOptions.IgnoreCase)
Dim oSQL = $"INSERT INTO TBCUST_SYNC_API_SAPDATEN (BESCHREIBUNG, BUCHUNGSKREIS, KOSTENSTELLE, GUELTIG_BIS) VALUES ('{oBeschreibung}', '{oItem.buchungskreis}', '{oItem.kostenstelle}', '{oItem.gueltig_bis}')"
Dim oSuccess = _MSSQL.ExecuteNonQuery(oSQL)
If oSuccess Then
_Logger.Debug("Record [{0}] inserted!", oItem.beschreibung)
End If
oCounter += 1
ProgressBar1.Value = oCounter
Next
txtResult.Text &= "--------------------------------------------" & vbNewLine
txtResult.Text &= $"--- Datapool: {oDatapool}" & vbNewLine
txtResult.Text &= JsonConvert.SerializeObject(oObj, Formatting.Indented) & vbNewLine
Application.DoEvents()
oTotalTotal += oTotal
Next
MsgBox($"Query finished! Lines inserted: [{oTotalTotal}]", MsgBoxStyle.Information, Text)
ElseIf cmbQuery.Text = "Custom" Then
If txtOperation.Text = String.Empty Then
MsgBox("Please select an operation!", MsgBoxStyle.Exclamation, Text)
Exit Sub
End If
Dim oDataResponse = _Interface.GetData(txtQuery.Text, txtOperation.Text)
Dim oResult As String
Using oStream = oDataResponse.GetResponseStream()
Using oReader As New StreamReader(oStream)
oResult = oReader.ReadToEnd()
End Using
End Using
Dim oObj As JObject = JsonConvert.DeserializeObject(oResult)
Dim oIndentedJson As String = JsonConvert.SerializeObject(oObj, Formatting.Indented)
txtResult.Text = oIndentedJson
TabControl1.SelectedTab = pageRaw
Else
MsgBox("Unknown query!", MsgBoxStyle.Exclamation, Text)
Exit Sub
End If
Catch ex As Exception
_Logger.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Sub SaveConfig()
_Config.Config.ConnectionString = txtConnectionString.Text
_Config.Config.BaseUrl = txtBaseUrl.Text
_Config.Config.CertificateFile = txtCertFile.Text
_Config.Config.CertificatePass = txtCertPass.Text
_Config.Config.CertificateFingerprint = txtCertFingerprint.Text
_Config.Config.Email = txtUsername.Text
_Config.Config.Password = txtPassword.Text
_Config.Config.ProxyHost = txtProxyHost.Text
_Config.Config.ProxyPassword = txtProxyPass.Text
_Config.Config.ProxyPort = txtProxyPort.Text
_Config.Config.ProxyUsername = txtProxyUser.Text
_Config.Config.CustomQueryString = txtQuery.Text
_Config.Save(ForceAll:=True)
End Sub
Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Try
SaveConfig()
Dim oLogoutResponse = _Interface.Logout()
If oLogoutResponse.StatusCode = Net.HttpStatusCode.OK Then
_Logger.Info("Logout successful.")
End If
Catch ex As Exception
_Logger.Error(ex)
End Try
End Sub
Public Function ConvertResponse(JsonString As String) As SAPData
Dim oObj As JObject = JObject.Parse(JsonString)("data")("sapdaten")
Dim oString As String = JsonConvert.SerializeObject(oObj, Formatting.None)
Dim oSAPData As SAPData = JsonConvert.DeserializeObject(Of SAPData)(oString)
Return oSAPData
End Function
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbQuery.SelectedIndexChanged
_Config.Config.CurrentQuery = cmbQuery.Text
_Config.Save()
End Sub
End Class

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

63
GUIs.Test.JobTest/Form1.Designer.vb generated Normal file
View File

@@ -0,0 +1,63 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(12, 25)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(75, 23)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Button1"
Me.Button1.UseVisualStyleBackColor = True
'
'TextBox1
'
Me.TextBox1.Font = New System.Drawing.Font("Consolas", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.TextBox1.Location = New System.Drawing.Point(93, 25)
Me.TextBox1.Multiline = True
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(695, 413)
Me.TextBox1.TabIndex = 1
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(800, 450)
Me.Controls.Add(Me.TextBox1)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Button1 As Button
Friend WithEvents TextBox1 As TextBox
End Class

View File

@@ -0,0 +1,120 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,19 @@
Imports DigitalData.Modules.Jobs
Imports DigitalData.Modules.Logging
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim oLogConfig As New LogConfig(LogConfig.PathType.CustomPath, Application.StartupPath, Nothing, "Digital Data", "JobTest")
oLogConfig.Debug = True
Dim oJob As New GraphQLJob(oLogConfig)
Dim oArgs As New GraphQLArgs() With {
.Enabled = True,
.Interval = 999,
.QueryConfigPath = "E:\GraphQL"
}
oJob.Start(oArgs)
MsgBox("Finished!", MsgBoxStyle.Critical)
End Sub
End Class

View File

@@ -0,0 +1,133 @@
<?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>{CEC6B41B-764B-4304-B4F8-BFEBA37A03FB}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>GUIs.Test.JobTest.My.MyApplication</StartupObject>
<RootNamespace>GUIs.Test.JobTest</RootNamespace>
<AssemblyName>GUIs.Test.JobTest</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>GUIs.Test.JobTest.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>GUIs.Test.JobTest.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="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<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.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.vb">
<DependentUpon>Form1.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<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="Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
</EmbeddedResource>
<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="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="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Modules.Jobs\Jobs.vbproj">
<Project>{39ec839a-3c30-4922-a41e-6b09d1dde5c3}</Project>
<Name>Jobs</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Logging\Logging.vbproj">
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
<Name>Logging</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <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
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.GUIs.Test.JobTest.Form1
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,11 @@
<?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>true</MySubMain>
<MainForm>Form1</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>0</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("GUIs.Test.JobTest")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("GUIs.Test.JobTest")>
<Assembly: AssemblyCopyright("Copyright © 2020")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("c570ded5-4cf0-4151-957f-deb8d39b2581")>
' 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,
' indem Sie "*" wie unten gezeigt eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("GUIs.Test.JobTest.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

Some files were not shown because too many files have changed in this diff Show More