Compare commits

...

2 Commits

Author SHA1 Message Date
Jonathan Jenne
ee664f5512 23-11-23 2023-11-23 10:23:16 +01:00
Jonathan Jenne
200d6058cf first pass of update to Windream 8 2023-06-15 09:52:03 +02:00
64 changed files with 3480 additions and 169478 deletions

5
.gitignore vendored
View File

@ -97,7 +97,7 @@ publish/
# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/
packages/
# Windows Azure Build Output
csx
@ -154,3 +154,6 @@ $RECYCLE.BIN/
# Mac desktop service store files
.DS_Store
.vs
packages

View File

@ -1,288 +0,0 @@
Imports System.Collections.Generic
Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Imports System.Web.Http.Description
Imports System.Data
Imports Windream.WebService.WebAPI.PlugIns
Imports Windream.WebService.Documents
Imports WMOBRWSLib
Imports WINDREAMLib
Imports WMCNNCTDLLLib
Imports DD_LIB_Standards.clsDatabase
Imports NLog
Imports NLog.Targets
Imports NLog.Config
Imports System.Reflection
Imports System.Xml
Imports System.Net.Http.Headers
Imports System.Threading
Imports System.Threading.Tasks
Imports System.Web.Http.Controllers
Namespace Controllers
Public Class DigitalDataController
Inherits PlugInBaseController
Private _routesSettings As IEnumerable(Of RouteSettings)
Private _docController As IDocumentsController
Private _session As IWMSession6
Private _logger As Logger
''' <summary>
''' Gets the routes settings for the controller.
''' This property will automatically be called from the windream Web Service - WebAPI framework.
''' </summary>
''' <value>
''' The routes settings of the controller.
''' </value>
Public Overrides ReadOnly Property RoutesSettings As IEnumerable(Of RouteSettings)
Get
Return _routesSettings
End Get
End Property
Public Overrides Function ExecuteAsync(controllerContext As HttpControllerContext, cancellationToken As CancellationToken) As Task(Of HttpResponseMessage)
Return MyBase.ExecuteAsync(controllerContext, cancellationToken)
End Function
''' <summary>
''' Initializes a new instance of the <see cref="DigitalDataController"/> class.
''' </summary>
Sub New()
Dim routesSettings As List(Of RouteSettings) = New List(Of RouteSettings)()
routesSettings.Add(New RouteSettings("DigitalDataController", "DigitalData/{action}/{id}", New With {.id = RouteParameter.Optional, .controller = "DigitalData"}))
_routesSettings = routesSettings
Dim config = New LoggingConfiguration()
Dim fileTarget = New FileTarget() With {
.Name = "BNSPlugin",
.ArchiveEvery = FileArchivePeriod.Day,
.FileName = "D:/ProgramFiles/DigitalData/SERVICES/WMWebServiceBNS/Log/${date:format=yyyy-MM-dd}-WMWebServiceBNS.txt",
.Layout = "${longdate} || ${message}"
}
config.AddTarget("file", fileTarget)
Dim rule = New LoggingRule("*", LogLevel.Debug, fileTarget)
config.LoggingRules.Add(rule)
LogManager.Configuration = config
_logger = LogManager.GetLogger("DigitalDataController")
Dim connectionString = GetConnectionString()
_logger.Info($"[DATABASE] Verbindung zu {connectionString}")
Dim dbInit = Init(connectionString)
If dbInit = False Then
_logger.Info("[DATABASE] Die Verbindung zur Datenbank konnte nicht hergestellt werden.")
Else
_logger.Info("[DATABASE] Die Verbindung zur Datenbank wurde hergestellt.")
End If
_logger.Info("[INIT] Die Initialisierung wurde abgeschlossen.")
End Sub
Private Function GetPluginPath()
Dim s = Assembly.GetExecutingAssembly().CodeBase
s = New Uri(s).AbsolutePath
s = Uri.UnescapeDataString(s)
s = IO.Path.GetFullPath(s)
s = IO.Path.GetDirectoryName(s)
Return s
End Function
Private Function GetConnectionString()
Dim path As String = GetPluginPath()
Dim configFile = path & "\config.xml"
If IO.File.Exists(configFile) Then
Dim Doc As XmlDocument = New XmlDocument()
Doc.Load(configFile)
Dim connectionString As String = Doc.DocumentElement.SelectSingleNode("/config/connectionString").InnerText
_logger.Info($"[CONFIG] Konfigurations Datei {configFile} wurde gefunden")
Return connectionString
Else
_logger.Info($"[CONFIG] Konfigurations Datei {configFile} wurde NICHT gefunden!")
Return Nothing
End If
End Function
''' <summary>
''' A simple example of a http-get service method implementation.
''' </summary>
''' <param name="docId">windream Document-ID</param>
''' <param name="userId">windream User-ID</param>
''' <remarks>This method creates a nice greeting.</remarks>
'<ResponseType(GetType(String))>
<HttpGet>
Public Function BNSDownload(<FromUri> docId As Integer, <FromUri> userId As String) As HttpResponseMessage
Dim DT As DataTable
Dim Domain, Username, Password As String
_logger.Info($"[REQUEST] Anfrage von Benutzer-ID {userId} für Dokument-ID {docId}")
Try
DT = Return_Datatable($"SELECT DOMAIN, USERNAME, PW FROM TBDD_WEBSERVICE_USER_EX WHERE USERNAME_LINK = '{userId}'")
Catch ex As Exception
_logger.Info("[DATABASE] Fehler beim Zugriff auf die Datenbank ")
_logger.Info(ex.Message)
Return CreateResponseMessage(Request, HttpStatusCode.InternalServerError)
End Try
If DT.Rows.Count = 0 Then
_logger.Info($"[DATABASE] BenutzerID {userId} wurde nicht in der Datenbank gefunden.")
Return CreateResponseMessage(Request, $"Benutzer {userId} wurde nicht gefunden", HttpStatusCode.Unauthorized)
Else
Dim firstRow As DataRow = DT.Rows.Item(0)
Domain = firstRow.Item("DOMAIN")
Username = firstRow.Item("USERNAME")
Password = firstRow.Item("PW")
_logger.Info($"[DATABASE] BenutzerID {userId} wurde gefunden.")
End If
Dim loggedIn As Boolean = CreateSessionForUser(Username, Password, Domain)
If Not loggedIn Then
Return CreateResponseMessage(Request, $"Session für Benutzer {userId} konnte nicht aufgebaut werden. Weitere Informationen im Log", HttpStatusCode.BadRequest)
End If
Dim WMDoc As IWMObject7
Dim WMStream As IWMStream
Dim fileContent As Byte()
Try
WMDoc = _session.GetWMObjectById(WMEntity.WMEntityDocument, docId)
Catch ex As Exception
_logger.Info("[WINDREAM/GetWMObjectById] Ein Fehler beim Zugriff auf Windream ist aufgetreten ")
_logger.Info(ex.Message)
_logger.Info($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
_session.Logout()
Return CreateResponseMessage(Request, "Document not found", HttpStatusCode.NotFound)
End Try
Try
WMStream = WMDoc.OpenStream("BinaryObject", WMObjectStreamOpenMode.WMObjectStreamOpenModeRead)
fileContent = WMStream.Read(WMStream.GetSize())
Catch ex As Exception
_logger.Info("[WINDREAM/OpenStream] Ein Fehler beim Zugriff auf Windream ist aufgetreten")
_logger.Info(ex.Message)
_logger.Info($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
_session.Logout()
Return CreateResponseMessage(Request, HttpStatusCode.InternalServerError)
End Try
_logger.Info($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
_session.Logout()
' Gibt die Datei zum Download zurück
Return CreateFileResponseMessage(fileContent, WMDoc.aName)
End Function
Private Function CreateFileResponseMessage(data As Byte(), filename As String) As HttpResponseMessage
_logger.Info($"[WINDREAM/Download] Datei {filename} wird für Download zur Verfügung gestellt")
Dim Res = New HttpResponseMessage()
Res.StatusCode = HttpStatusCode.OK
Res.Content = New ByteArrayContent(data)
Res.Content.Headers.ContentType = New MediaTypeHeaderValue("application/octet-stream")
Res.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {
.FileName = filename
}
Return Res
End Function
Private Function CreateSessionForUser(username As String, password As String, domain As String)
Dim WMServerBrowser As New ServerBrowser()
Dim DMSServer As String
Dim Connect As IWMConnect2
Dim Session As IWMSession6
Dim User As WMOTOOLLib.WMUserIdentity
Try
'' Get the current Windream Server
DMSServer = WMServerBrowser.GetCurrentServer()
Catch ex As Exception
_logger.Info($"[WINDREAM/ServerBrowser] DMS Server konnte nicht ausgelesen werden.")
_logger.Info(ex.Message)
Return False
End Try
Try
' Create a User Object for Session
User = New WMOTOOLLib.WMUserIdentity()
User.aDomain = domain
User.aPassword = password
User.aUserName = username
User.aServerName = DMSServer
Catch ex As Exception
_logger.Info($"[WINDREAM/User] User Objekt konnte nicht erstellt werden.")
_logger.Info(ex.Message)
Return False
End Try
_logger.Info("[WINDREAM/Session] Session wird aufgebaut")
_logger.Info($"[WINDREAM/Session] Username: {username}")
_logger.Info($"[WINDREAM/Session] Passwort: {password}")
_logger.Info($"[WINDREAM/Session] Domäne: {domain}")
_logger.Info($"[WINDREAM/Session] Windream Server: {DMSServer}")
Try
' Create Connect Object for Session
Connect = New WMConnect()
Connect.ModuleId = 9
Catch ex As Exception
_logger.Info($"[WINDREAM/Connect] Connect Objekt konnte nicht erstellt werden.")
_logger.Info(ex.Message)
Return False
End Try
Try
Session = Connect.Login(User)
_logger.Info($"[WINDREAM/Session] Session wurde aufgebaut")
If Session.aLoggedin Then
_session = Session
_logger.Info($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
Return True
Else
_logger.Info($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
Return False
End If
Catch ex As Exception
_logger.Info($"[WINDREAM/Session] Fehler bei Login von Benutzer {username}!")
_logger.Info(ex.Message)
If Not IsNothing(Session) AndAlso Session.aLoggedin Then
_session = Session
_logger.Info($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
Return True
Else
_logger.Info($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
_logger.Info(ex.Message)
Return False
End If
End Try
End Function
End Class
End Namespace

View File

@ -10,7 +10,7 @@
<AssemblyName>DigitalDataBNSPlugin</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@ -44,83 +44,18 @@
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="DD_LIB_Standards">
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\DigitalData\DD_LIB_Standards.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
<Reference Include="Interop.WINDREAMLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Interop.WINDREAMLib.dll</HintPath>
</Reference>
<Reference Include="Interop.WMOBRWSLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Interop.WMOBRWSLib.dll</HintPath>
</Reference>
<Reference Include="Interop.WMOTOOLLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Interop.WMOTOOLLib.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Interception, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Microsoft.Practices.Unity.RegistrationByConvention, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.4.12\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Data" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.Net.Http" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.XML" />
<Reference Include="System.Xml.Linq" />
<Reference Include="Windream.WebService, Version=0.9.40.0, Culture=neutral, PublicKeyToken=d138adf75b760c17, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Windream.WebService.DTO, Version=0.9.40.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Windream.WebService.DTO.Impl, Version=0.9.40.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Windream.WebService.Impl, Version=0.9.40.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Windream.WebService.Logging, Version=0.9.35.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Windream.WebService.WebAPI, Version=0.9.40.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
</ItemGroup>
<ItemGroup>
<Compile Include="Controllers\DigitalDataController.vb" />
<Compile Include="Models\TemplateModel.vb" />
<Compile Include="DigitalDataController.vb" />
<Compile Include="IUselessModel.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
@ -133,6 +68,7 @@
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="ServiceRegistrator.vb" />
<Compile Include="UselessModel.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
@ -155,22 +91,67 @@
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<COMReference Include="WMCNNCTDLLLib">
<Guid>{FB8CA955-23B9-11D3-B1F7-00104B071DD4}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<Content Include="config.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Reference Include="Interop.WINDREAMLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Interop.WMCNNCTDLLLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMCNNCTDLLLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Interop.WMOBRWSLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOBRWSLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Interop.WMOTOOLLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.Practices.Unity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f" />
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
</Reference>
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\3rdParty\Swashbuckle.Core.dll</HintPath>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\3rdParty\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="Windream.WebService, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.dll</HintPath>
</Reference>
<Reference Include="Windream.WebService.DTO, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.DTO.dll</HintPath>
</Reference>
<Reference Include="Windream.WebService.DTO.Impl, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.DTO.Impl.dll</HintPath>
</Reference>
<Reference Include="Windream.WebService.Logging, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.Logging.dll</HintPath>
</Reference>
<Reference Include="Windream.WebService.WebAPI, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\windream\windream Web Service SDK\Libraries\Windream\Windream.WebService.WebAPI.dll</HintPath>
</Reference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -0,0 +1,267 @@
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Net
Imports System.Net.Http
Imports System.Net.Http.Headers
Imports System.Reflection
Imports System.Threading
Imports System.Threading.Tasks
Imports System.Web.Http
Imports System.Web.Http.Controllers
Imports System.Xml
Imports Windream.WebService.Documents
Imports Windream.WebService.Logging
Imports Windream.WebService.WebAPI.PlugIns
Imports WINDREAMLib
Imports WMCNNCTDLLLib
Imports WMOBRWSLib
Namespace Controllers
Public Class DigitalDataController
Inherits PlugInBaseController
Private ReadOnly _docController As IDocumentsController
Private _session As IWMSession6
Private _logger As ILogging
''' <summary>
''' Gets the routes settings for the controller.
''' This property will automatically be called from the windream Web Service - WebAPI framework.
''' </summary>
''' <value>
''' The routes settings of the controller.
''' </value>
Public Overrides ReadOnly Property RoutesSettings As IEnumerable(Of RouteSettings)
Get
Return New List(Of RouteSettings) From {
New RouteSettings("DigitalDataController", "DigitalData/{action}/{id}", New With {
.id = RouteParameter.Optional, .controller = "DigitalData"
})
}
End Get
End Property
''' <summary>
''' Initializes a new instance of the <see cref="DigitalDataController"/> class.
''' </summary>
Sub New(pLogger As ILogging)
_logger = pLogger
_logger.Write("[INIT] Die Initialisierung wurde abgeschlossen.")
End Sub
Private Function GetPluginPath()
Dim s = Assembly.GetExecutingAssembly().CodeBase
s = New Uri(s).AbsolutePath
s = Uri.UnescapeDataString(s)
s = IO.Path.GetFullPath(s)
s = IO.Path.GetDirectoryName(s)
Return s
End Function
Private Function GetConfig() As XmlDocument
Dim path As String = GetPluginPath()
Dim configFile = path & "\config.xml"
If IO.File.Exists(configFile) Then
Dim Doc As New XmlDocument()
Doc.Load(configFile)
Return Doc
Else
_logger.Write($"[CONFIG] Konfigurations Datei {configFile} wurde NICHT gefunden!")
Return Nothing
End If
End Function
Private Function GetConnectionString() As String
Dim oConfig = GetConfig()
If oConfig IsNot Nothing Then
Dim connectionString As String = oConfig.DocumentElement.SelectSingleNode("/config/connectionString").InnerText
Return connectionString
Else
Return Nothing
End If
End Function
''' <summary>
''' A simple example of a http-get service method implementation.
''' </summary>
''' <param name="docId">windream Document-ID</param>
''' <param name="userId">windream User-ID</param>
''' <remarks>This method creates a nice greeting.</remarks>
<HttpGet>
Public Function BNSDownload(<FromUri> docId As Integer, <FromUri> userId As String) As HttpResponseMessage
Dim DT As New DataTable("DDRESULT")
Dim Domain, Username, Password As String
_logger.Write($"[REQUEST] Anfrage von Benutzer-ID {userId} für Dokument-ID {docId}")
Try
Using oConnection As New SqlConnection(GetConnectionString())
Using oAdapter As New SqlDataAdapter($"SELECT DOMAIN, USERNAME, PW FROM TBDD_WEBSERVICE_USER_EX WHERE USERNAME_LINK = '{userId}'", oConnection)
oAdapter.Fill(DT)
End Using
End Using
'DT = _database.GetDatatable($"SELECT DOMAIN, USERNAME, PW FROM TBDD_WEBSERVICE_USER_EX WHERE USERNAME_LINK = '{userId}'")
Catch ex As Exception
_logger.Write("[DATABASE] Fehler beim Zugriff auf die Datenbank ")
_logger.WriteError(ex)
Return CreateResponseMessage(Request, HttpStatusCode.InternalServerError)
End Try
If DT.Rows.Count = 0 Then
_logger.Write($"[DATABASE] BenutzerID {userId} wurde nicht in der Datenbank gefunden.")
Return CreateResponseMessage(Request, $"Benutzer {userId} wurde nicht gefunden", HttpStatusCode.Unauthorized)
Else
Dim oRow As DataRow = DT.Rows.Item(0)
Domain = oRow.Item("DOMAIN")
Username = oRow.Item("USERNAME")
Password = oRow.Item("PW")
_logger.Write($"[DATABASE] BenutzerID {userId} wurde gefunden.")
End If
Dim loggedIn As Boolean = CreateSessionForUser(Username, Password, Domain)
If Not loggedIn Then
Return CreateResponseMessage(Request, $"Session für Benutzer {userId} konnte nicht aufgebaut werden. Weitere Informationen im Log", HttpStatusCode.BadRequest)
End If
Dim WMDoc As IWMObject7
Dim WMStream As IWMStream
Dim fileContent As Byte()
Try
WMDoc = _session.GetWMObjectById(WMEntity.WMEntityDocument, docId)
Catch ex As Exception
_logger.Write("[WINDREAM/GetWMObjectById] Ein Fehler beim Zugriff auf Windream ist aufgetreten ")
_logger.WriteError(ex)
_logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
_session.Logout()
Return CreateResponseMessage(Request, "Document not found", HttpStatusCode.NotFound)
End Try
Try
WMStream = WMDoc.OpenStream("BinaryObject", WMObjectStreamOpenMode.WMObjectStreamOpenModeRead)
fileContent = WMStream.Read(WMStream.GetSize())
Catch ex As Exception
_logger.Write("[WINDREAM/OpenStream] Ein Fehler beim Zugriff auf Windream ist aufgetreten")
_logger.WriteError(ex)
_logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
_session.Logout()
Return CreateResponseMessage(Request, HttpStatusCode.InternalServerError)
End Try
_logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen")
_session.Logout()
' Gibt die Datei zum Download zurück
Return CreateFileResponseMessage(fileContent, WMDoc.aName)
End Function
Private Function CreateFileResponseMessage(data As Byte(), filename As String) As HttpResponseMessage
_logger.Write($"[WINDREAM/Download] Datei {filename} wird für Download zur Verfügung gestellt")
Dim Res = New HttpResponseMessage With {
.StatusCode = HttpStatusCode.OK,
.Content = New ByteArrayContent(data)
}
Res.Content.Headers.ContentType = New MediaTypeHeaderValue("application/octet-stream")
Res.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {
.FileName = filename
}
Return Res
End Function
Private Function CreateSessionForUser(username As String, password As String, domain As String)
Dim WMServerBrowser As New ServerBrowser()
Dim DMSServer As String
Dim Connect As IWMConnect2
Dim Session As IWMSession6
Dim User As WMOTOOLLib.WMUserIdentity
Try
'' Get the current Windream Server
DMSServer = WMServerBrowser.GetCurrentServer()
Catch ex As Exception
_logger.Write($"[WINDREAM/ServerBrowser] DMS Server konnte nicht ausgelesen werden.")
_logger.WriteError(ex)
Return False
End Try
Try
' Create a User Object for Session
User = New WMOTOOLLib.WMUserIdentity With {
.aDomain = domain,
.aPassword = password,
.aUserName = username,
.aServerName = DMSServer
}
Catch ex As Exception
_logger.Write($"[WINDREAM/User] User Objekt konnte nicht erstellt werden.")
_logger.WriteError(ex)
Return False
End Try
_logger.Write("[WINDREAM/Session] Session wird aufgebaut")
_logger.Write($"[WINDREAM/Session] Username: {username}")
_logger.Write($"[WINDREAM/Session] Passwort: {password}")
_logger.Write($"[WINDREAM/Session] Domäne: {domain}")
_logger.Write($"[WINDREAM/Session] Windream Server: {DMSServer}")
Try
' Create Connect Object for Session
Connect = New WMConnect With {
.ModuleId = 9
}
Catch ex As Exception
_logger.Write($"[WINDREAM/Connect] Connect Objekt konnte nicht erstellt werden.")
_logger.WriteError(ex)
Return False
End Try
Try
Session = Connect.Login(User)
_logger.Write($"[WINDREAM/Session] Session wurde aufgebaut")
If Session.aLoggedin Then
_session = Session
_logger.Write($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
Return True
Else
_logger.Write($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
Return False
End If
Catch ex As Exception
_logger.Write($"[WINDREAM/Session] Fehler bei Login von Benutzer {username}!")
_logger.WriteError(ex)
If Not IsNothing(Session) AndAlso Session.aLoggedin Then
_session = Session
_logger.Write($"[WINDREAM/Session] Benutzer {username} ist eingeloggt")
Return True
Else
_logger.Write($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!")
_logger.WriteError(ex)
Return False
End If
End Try
End Function
End Class
End Namespace

View File

@ -0,0 +1,3 @@
Friend Interface IUselessModel
Property Message As String
End Interface

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,60 @@
import
{
ResponseContainerDTO,
IdLocationNameIdentityDTO,
IdLocationNameIdentityResponseDTO
} from "./Windream.WebService";
export interface IAnnotationsControllerDTO
{
GetAnnotations(parameter: GetAnnotationsDTO): GetAnnotationsResponseContainerDTO;
Create(parameter: CreateAnnotationDTO): CreateAnnotationResponseContainerDTO;
}
export interface AnnotationContentDTO
{
Title: String;
Text: String;
}
export interface AnnotationDTO extends AnnotationContentDTO
{
CreationDate: String;
Creator: String;
CreatedByRequestingUser: Boolean;
Id: number;
}
export interface AnnotationResponseDTO
{
CreationDate: String;
Creator: String;
CreatedByRequestingUser: Boolean;
Id: number;
Title: String;
Text: String;
}
export interface CreateAnnotationDTO
{
Item: IdLocationNameIdentityDTO;
Annotation: AnnotationContentDTO;
}
export interface CreateAnnotationResponseContainerDTO extends ResponseContainerDTO
{
Annotation: AnnotationResponseDTO;
Item: IdLocationNameIdentityResponseDTO;
}
export interface GetAnnotationsDTO
{
Item: IdLocationNameIdentityDTO;
}
export interface GetAnnotationsResponseContainerDTO extends ResponseContainerDTO
{
Annotations: AnnotationResponseDTO[];
Item: IdLocationNameIdentityResponseDTO;
}

View File

@ -0,0 +1,38 @@
import
{
AttributeResponseDTO,
NameValuePairDTO,
WSValueType,
ResponseContainerDTO,
ObjectTypeResponseContainerDTO
} from "./Windream.WebService";
export interface IAttributesController
{
GetAttributes(parameter: AttributeFlagsValuesDTO): GetAttributesResponseContainerDTO;
}
export const enum AttributeFlagsDTO
{
NonSortable = 256
}
export interface AttributeFlagsValuesDTO
{
AttributeFlags: AttributeFlagsDTO;
Values: string[];
}
export interface GetAttributesResponseContainerDTO extends ResponseContainerDTO
{
Attributes: AttributeResponseDTO[];
}
export interface GetAllAttributesResponseContainerDTO extends ResponseContainerDTO
{
RelationalAttributes: AttributeResponseDTO[];
SystemAttributes: AttributeResponseDTO[];
TypeSpecificAttributes: ObjectTypeResponseContainerDTO[];
VirtualAttributes: AttributeResponseDTO[];
}

View File

@ -0,0 +1,6 @@
import { ResponseContainerDTO } from "./Windream.WebService";
export interface IAuthenticationController
{
Logout(): ResponseContainerDTO;
}

View File

@ -0,0 +1,122 @@
import
{
AttributeDTO,
ResponseContainerDTO,
AttributeResponseDTO,
IdLocationNameIdentityDTO,
LocationNameIdentityDTO,
IdLocationNameIdentityResponseDTO,
ObjectTypeIdentityDTO,
ItemResponseContainerDTO,
ExistingItemIdentityDTO,
ResponseDetailsType,
WSAttributeFlags,
ItemEntityDTO,
NewItemIdentityDTO
} from './Windream.WebService';
export interface IDirectoriesController
{
Create(parameter: CreateDirectoryDTO): DirectoryResponseContainerDTO;
CreateBulk(parameters: CreateDirectoryDTO[]): DirectoryResponseContainerDTO[];
Delete(parameter: DeleteDirectoryDTO): DirectoryResponseContainerDTO;
DeleteBulk(parameters: DeleteDirectoryDTO[]): DirectoryResponseContainerDTO[];
Update(parameter: UpdateDirectoryDTO): DirectoryResponseContainerDTO;
UpdateBulk(parameters: UpdateDirectoryDTO[]): DirectoryResponseContainerDTO[];
GetDetails(id: Number): DirectoryResponseContainerDTO;
GetDetails(parameter: GetDirectoryDetailsDTO): DirectoryResponseContainerDTO;
GetDetailsBulk(parameters: GetDirectoryDetailsDTO[]): DirectoryResponseContainerDTO[];
GetSubObjects(parameter: GetSubObjectsDTO): ItemResponseContainerDTO[];
Move(parameter: MoveDirectoryDTO): DirectoryResponseContainerDTO;
MoveBulk(parameters: MoveDirectoryDTO[]): DirectoryResponseContainerDTO[];
Copy(parameter: CopyDirectoryDTO): DirectoryResponseContainerDTO;
CopyBulk(parameters: CopyDirectoryDTO[]): DirectoryResponseContainerDTO[];
}
export const enum CopyDirectoryFlags
{
FolderOnly = 0,
WithFiles = 2,
WithSubTree = 4
}
export const enum SubObjectFlags
{
None = 1,
IncludePreVersions = 2,
Recursive = 4
}
export interface CopyDirectoryDTO
{
Flags: CopyDirectoryFlags;
Item: IdLocationNameIdentityDTO;
Target: LocationNameIdentityDTO;
}
export interface CreateDirectoryDTO
{
CreateTree: boolean;
Item: NewDirectoryDTO;
ResponseDetails: ResponseDetailsType;
}
export interface DeleteDirectoryDTO
{
Item: IdLocationNameIdentityDTO;
Recursive: boolean;
ResponseDetails: ResponseDetailsType;
}
export interface DirectoryResponseContainerDTO extends ResponseContainerDTO
{
Item: DirectoryResponseDTO;
}
export interface DirectoryResponseDTO extends IdLocationNameIdentityResponseDTO
{
Attributes: AttributeResponseDTO[];
ObjectType: ObjectTypeIdentityDTO;
ParentWindreamObject: IdLocationNameIdentityResponseDTO;
}
export interface ExistingDirectoryIdentityDTO extends ExistingItemIdentityDTO
{
Attributes: AttributeDTO[];
ObjectType: ObjectTypeIdentityDTO;
}
export interface GetDirectoryDetailsDTO
{
AttributeFlags: WSAttributeFlags;
Item: IdLocationNameIdentityDTO;
Values: string[];
}
export interface GetSubObjectsDTO
{
Entity: ItemEntityDTO;
Filter: string;
Flags: SubObjectFlags;
Item: IdLocationNameIdentityDTO;
}
export interface MoveDirectoryDTO
{
Item: IdLocationNameIdentityDTO;
ResponseDetails: ResponseDetailsType;
Target: LocationNameIdentityDTO;
}
export interface NewDirectoryDTO extends NewItemIdentityDTO
{
Attributes: AttributeDTO[];
ObjectType: ObjectTypeIdentityDTO;
}
export interface UpdateDirectoryDTO
{
Item: ExistingDirectoryIdentityDTO;
ResponseDetails: ResponseDetailsType;
}

View File

@ -0,0 +1,267 @@
import
{
AttributeResponseDTO,
AttributeDTO,
ResponseContainerDTO,
ItemContainerDTO,
LocationNameIdentityDTO,
IdLocationNameIdentityDTO,
ResponseDetailsType,
IdLocationNameEntityIdentityResponseDTO,
IdLocationNameIdentityResponseDTO,
ExistingItemIdentityDTO,
ObjectTypeIdentityDTO,
WSAttributeFlags,
NewItemIdentityDTO,
ItemResponseContainerDTO
} from "./Windream.WebService";
import { IndexingDetailsResponseDTO } from './Windream.WebService.Indexing';
export interface IDocumentsController
{
Create(parameter: CreateDocumentDTO): DocumentResponseContainerDTO;
CreateBulk(parameters: CreateDocumentDTO[]): DocumentResponseContainerDTO[];
Delete(parameter: DeleteDocumentDTO): DocumentResponseContainerDTO;
DeleteBulk(parameters: DeleteDocumentDTO[]): DocumentResponseContainerDTO[];
Update(parameter: UpdateDocumentDTO): DocumentResponseContainerDTO;
UpdateBulk(parameters: UpdateDocumentDTO[]): DocumentResponseContainerDTO[];
GetDetails(id: Number): DocumentResponseContainerDTO;
GetDetails(parameter: GetDocumentDetailsDTO): DocumentResponseContainerDTO;
GetDetailsBulk(parameters: GetDocumentDetailsDTO[]): DocumentResponseContainerDTO[];
GetHistory(parameters: GetDocumentDetailsDTO): HistoryResponseContainerDTO[];
Move(parameter: MoveDocumentDTO): DocumentResponseContainerDTO;
MoveBulk(parameters: MoveDocumentDTO[]): DocumentResponseContainerDTO[];
Copy(parameter: CopyDocumentDTO): DocumentResponseContainerDTO;
CopyBulk(parameters: CopyDocumentDTO[]): DocumentResponseContainerDTO[];
UndoCheckOut(parameter: DocumentItemContainerDTO): DocumentResponseContainerDTO;
UndoCheckOutBulk(parameters: DocumentItemContainerDTO[]): DocumentResponseContainerDTO[];
Archive(parameter: DocumentItemContainerDTO): DocumentResponseContainerDTO;
ArchiveBulk(parameters: DocumentItemContainerDTO[]): DocumentResponseContainerDTO[];
HtmlPreview(parameter: HtmlPreviewDTO): HtmlPreviewResponseContainerDTO;
Download(parameter: DownloadDocumentDTO): ResponseContainerDTO;
Upload(parameter: UploadDocumentDTO): DocumentResponseContainerDTO;
GetBinarySize(parameter: DocumentItemContainerDTO): DocumentResponseContainerDTO;
}
export const enum CopyDocumentFlags
{
DocumentOnly = 0,
WithPreVersions = 1
}
export const enum DeleteDocumentFlags
{
IncludePreVersions = 2
}
export const enum DownloadFlags
{
Checkout = 1
}
export const enum UploadFlags
{
CreateObject = 1,
CheckIn = 2,
CreateNewVersion = 4,
UseDefaultLocation = 8
}
export interface DownloadDocumentDTO
{
Flags: DownloadFlags;
Item: IdLocationNameIdentityDTO;
}
export interface DownloadIDocumentResponseContainerDTO extends ItemResponseContainerDTO
{
ContentLength: number;
Stream: any;
}
export interface UploadDocumentDTO
{
Flags: UploadFlags;
Item: IdLocationNameIdentityDTO;
Stream: any;
}
export interface UploadDocumentResponseContainerDTO extends DocumentResponseContainerDTO
{
IndexingDetails: IndexingDetailsResponseDTO;
}
export interface CopyDocumentDTO
{
Flags: CopyDocumentFlags;
Item: IdLocationNameIdentityDTO;
ResponseDetails: ResponseDetailsType;
Target: LocationNameIdentityDTO;
}
export interface CreateDocumentDTO
{
CreateFolder: boolean;
Item: NewDocumentDTO;
ResponseDetails: ResponseDetailsType;
}
export interface DeleteDocumentDTO
{
Flags: DeleteDocumentFlags;
Item: IdLocationNameIdentityDTO;
ResponseDetails: ResponseDetailsType;
}
export interface DocumentItemContainerDTO extends ItemContainerDTO
{
}
export interface DocumentResponseContainerDTO extends ResponseContainerDTO
{
Item: DocumentResponseDTO;
}
export interface DocumentResponseDTO extends IdLocationNameEntityIdentityResponseDTO
{
Attributes: AttributeResponseDTO[];
ObjectType: ObjectTypeIdentityDTO;
ParentWindreamObject: IdLocationNameIdentityResponseDTO;
}
export interface ExistingDocumentDTO extends ExistingItemIdentityDTO
{
Attributes: AttributeDTO[];
ObjectType: ObjectTypeIdentityDTO;
}
export interface GetDocumentDetailsDTO
{
AttributeFlags: WSAttributeFlags;
Item: IdLocationNameIdentityDTO;
Values: string[];
}
export interface MoveDocumentDTO
{
IncludePreVersions: boolean;
Item: IdLocationNameIdentityDTO;
ResponseDetails: ResponseDetailsType;
Target: LocationNameIdentityDTO;
}
export interface NewDocumentDTO extends NewItemIdentityDTO
{
Attributes: AttributeDTO[];
ObjectType: ObjectTypeIdentityDTO;
}
export interface UpdateDocumentDTO
{
CreateNewVersion: boolean;
Item: ExistingDocumentDTO;
ResponseDetails: ResponseDetailsType;
}
export interface HistoryResponseContainerDTO extends DocumentResponseContainerDTO
{
History: HistoryItemResponseDTO[];
CanAddNewEntries: boolean;
}
export interface HistoryItemResponseDTO
{
HistoryDate: string;
HistoryCreatorName: string;
HistoryAction: string;
HistoryComment: string;
}
export interface HistoryItemContainerDTO
{
HistoryComment: string;
Item: IdLocationNameIdentityDTO;
}
export interface HtmlPreviewDTO
{
AbsoluteCacheDir: string;
AbsoluteTemplatePath: string;
FontDpi: number;
GraphicType: GraphicType;
HttpUrlPrefix: string;
Item: IdLocationNameIdentityDTO;
JpegQuality: number;
NumberOfPages: number;
Resolution: ResolutionDTO;
}
export interface HtmlPreviewResponseContainerDTO extends ItemResponseContainerDTO
{
PreviewUrl: string;
}
export interface ResolutionDTO
{
Height: number;
Width: number;
}
export const enum GraphicType
{
Undefined = 0,
Jpeg = 1,
Gif = 2,
Png = 3
}
export const enum LifecyclePeriodNorms {
None = 131072,
MonthFirst = 262144,
MonthLast = 524288,
QuarterFirst = 1048576,
QuarterLast = 2097152,
YearFirst = 4194304,
YearLast = 8388608
}
export const enum LifecyclePeriodUnits {
Day = 16777216,
Week = 33554432,
Month = 67108864,
Year = 134217728
}
export const enum LifecyclePeriodBases {
EndEditPeriod = 1,
Created = 16384,
Updated = 32768,
EndPreviousPeriod = 65536
}
export interface LifecycleParameterDTO {
Start: string,
End: string,
Norm: LifecyclePeriodNorms;
Unit: LifecyclePeriodUnits;
Period: number;
PeriodBase: LifecyclePeriodBases;
IsLifeCycleRuleChanged: boolean;
IsManualChanged: boolean;
IsManualEdit: boolean;
IsManualMove: boolean;
IsNoAutoMove: boolean;
IsNoSelfContained: boolean;
}
export interface LifecycleResponseContainerDTO extends ResponseContainerDTO {
Document: LifecycleResponseDTO;
ObjectType: LifecycleResponseDTO;
}
export interface LifecycleResponseDTO {
Editable: LifecycleParameterDTO;
Archived: LifecycleParameterDTO;
}

View File

@ -0,0 +1,71 @@
import
{
IdLocationNameIdentityDTO,
ResponseContainerDTO
} from "./Windream.WebService";
import { DocumentResponseDTO } from "./Windream.WebService.Documents";
import { AttributeFlagsValuesDTO } from "./Windream.WebService.Attributes";
export interface IFavoritesControllerDTO
{
GetMyWindreamFolders(): MyWindreamFolderResponseContainerDTO[];
GetFavorites(parameter: GetFavoritesContentDTO): FavoritesItemResponseContainerDTO[];
AddFavorites(parameter: SetFavoritesContentDTO): FavoritesItemResponseContainerDTO[];
RemoveFavorites(parameter: SetFavoritesContentDTO): FavoritesItemResponseContainerDTO[];
}
export enum MyWindreamSections
{
Undefined = 0,
Global = 1,
Private = 2
}
export enum MyWindreamObjectTypes
{
Undefined = 0,
Folder = 1,
FavoritesFolder = 4,
RecycleBin = 9,
PrivateFolder = 11,
PrivateUser = 12
}
export interface FavoritesFolderIdentityDTO
{
MyWindreamSection: MyWindreamSections;
Location: String;
}
export interface FavoritesItemResponseContainerDTO extends ResponseContainerDTO
{
Item: DocumentResponseDTO;
FavoritesFolder: FavoritesFolderIdentityDTO;
}
export interface GetFavoritesContentDTO extends AttributeFlagsValuesDTO
{
FavoritesFolder: FavoritesFolderIdentityDTO;
}
export interface MyWindreamFolderResponseContainerDTO extends ResponseContainerDTO
{
Item: NodeLeafResponseDTO;
}
export interface NodeLeafResponseDTO
{
MyWindreamType: MyWindreamObjectTypes;
NodeLeafId: number;
ParentId: number;
Name: String;
DisplayName: String;
}
export interface SetFavoritesContentDTO
{
Items: IdLocationNameIdentityDTO;
FavoritesFolder: FavoritesFolderIdentityDTO;
}

View File

@ -0,0 +1,4 @@
export interface IndexingDetailsResponseDTO
{
IndexEventRequired: boolean;
}

View File

@ -0,0 +1,12 @@
import { ItemResponseContainerDTO } from "./Windream.WebService";
export interface IJournalControllerDTO
{
GetLastModifiedDocuments(parameter: GetLastModifiedDocumentsDTO): ItemResponseContainerDTO[];
}
export interface GetLastModifiedDocumentsDTO
{
NumberOfResults: number;
}

View File

@ -0,0 +1,49 @@
import
{
IdLocationNameIdentityDTO,
IdLocationNameEntityIdentityResponseDTO,
ItemResponseDTO,
ObjectTypeIdentityDTO,
ResponseContainerDTO,
SortConditionDTO,
IdLocationNameEntityIdentityDTO
} from "./Windream.WebService";
export interface INavigationControllerDTO
{
FetchNodes(parameter: FetchNodesDTO): FetchNodesResponseContainerDTO;
FullRootlineFetchNodes(parameter: FetchNodesDTO): FullRootlineFetchNodesResponseContainerDTO;
}
export interface FetchNodesDTO
{
Item: IdLocationNameEntityIdentityDTO;
Sorting: SortConditionDTO;
Values: String[];
}
export interface FetchNodesResponseContainerDTO extends ResponseContainerDTO
{
Rootline: IdLocationNameEntityIdentityResponseDTO[];
Children: ItemResponseDTO[];
Item: ItemResponseDTO;
}
export interface FullRootlineFetchNodesResponseContainerDTO extends ResponseContainerDTO
{
Rootline: FullRootlineWSObjectIdentityDTO[];
Children: ItemResponseDTO[];
Item: ItemResponseDTO;
}
export interface FullRootlineWSObjectIdentityDTO extends IdLocationNameEntityIdentityResponseDTO
{
Children: RootlineChildItemDTO[];
ObjectType: ObjectTypeIdentityDTO;
}
export interface RootlineChildItemDTO extends IdLocationNameEntityIdentityResponseDTO
{
ObjectType: ObjectTypeIdentityDTO;
}

View File

@ -0,0 +1,161 @@
import
{
AttributeResponseDTO,
IdNameIdentityDTO,
ObjectTypeEntityDTO,
ResponseContainerDTO,
WSAttributeFlags,
WSValueType,
VectorDetailsDTO
} from './Windream.WebService';
export interface IObjectTypesController
{
GetIndexMaskData(parameter: GetIndexMaskDataDTO): IndexMaskDataResponseContainerDTO;
GetObjectType(parameter: IGetObjectTypeDTO): IObjectTypeResponseContainerDTO;
GetObjectTypes(): IObjectTypeResponseContainerDTO[];
}
export interface GetIndexMaskDataDTO
{
Item: ObjectTypeIdentityDTO;
IndexMaskMode?: IndexMaskModes;
}
export interface IndexMaskDataResponseContainerDTO extends ResponseContainerDTO
{
TabPages: IndexMaskTabPageResponseDTO[];
}
export interface IndexMaskTabPageResponseDTO
{
Id: number;
Name: String;
Title: String;
ScriptTrigger: IndexMaskScriptTriggerDTO;
Elements: ElementResponseDTO[];
Styles: StylesResponseDTO;
}
export interface ElementResponseDTO
{
Id: String;
LabelFor?: String;
LabelRef?: String;
TabPageId: number;
Type: IndexMaskElementTypes;
Index: IndexResponseDTO;
Title: String;
ScriptTrigger: IndexMaskScriptTriggerDTO;
TabOrder: number;
Name: String;
IsReadOnly: Boolean;
Position: ElementPositionResponseDTO;
Size: ElementSizeResponseDTO;
Styles: StylesResponseDTO;
Min?: number;
Max?: number;
MaxLength?: number;
Values: Object[];
}
export interface ElementSizeResponseDTO
{
Width: number;
Height: number;
}
export interface IGetObjectTypeDTO
{
AttributeFlags: WSAttributeFlags;
Item: ObjectTypeIdentityDTO;
Values: string[];
}
export interface ObjectTypeFullIdentityDTO extends IdNameIdentityDTO
{
Entity: ObjectTypeEntityDTO;
}
export interface ObjectTypeIdentityDTO extends IdNameIdentityDTO
{
}
export interface IObjectTypeResponseContainerDTO extends ResponseContainerDTO
{
Item: IObjectTypeResponseDTO;
}
export interface IObjectTypeResponseDTO extends ObjectTypeFullIdentityDTO
{
Attributes: AttributeResponseDTO[];
ObjectType: ObjectTypeFullIdentityDTO;
}
export enum IndexMaskModes
{
Default = 0,
Indexing = 1,
Searching = 2
}
export enum IndexMaskElementTypes
{
Undefined = 0,
Image = 1,
Label = 2,
Frame = 3,
TextBox = 4,
TextArea = 5,
Button = 6,
CheckBox = 7,
ListBox = 8,
ComboBox = 9,
DropDownList = 10,
DatePicker = 11,
Clipboard = 12,
Option = 13,
CheckBoxList = 14,
List = 15,
FlexGrid = 16,
TimePicker = 17,
DateTimePicker = 18
}
export interface ElementPositionResponseDTO
{
X: number;
Y: number;
}
export interface IndexMaskScriptTriggerDTO
{
OnBlur: Boolean;
OnFocus: Boolean;
OnChange: Boolean;
OnClick: Boolean;
}
export interface IndexResponseDTO
{
Column: String;
GlobalName: String;
ObjectTypeSpecificName: String;
DisplayName: String;
Type: WSValueType;
UnderlyingType?: WSValueType;
IsRequired: Boolean;
IsReadOnly: Boolean;
DefaultValue: Object;
VectorDetails?: VectorDetailsDTO;
}
export interface StylesResponseDTO
{
BackgroundImage: String;
BackgroundColor: String;
TextColor: String;
}

View File

@ -0,0 +1,124 @@
import
{
SortDirection,
ResponseContainerDTO,
IdLocationNameEntityIdentityDTO,
BaseEntityDTO,
ItemResponseDTO,
SortConditionDTO
} from "./Windream.WebService";
export interface ISearchController
{
Search(parameter: SearchDTO): SearchResponseContainerDTO;
GetResult(parameter: GetSearchResultDTO): SearchResponseContainerDTO;
DisposeSearch(parameter: DisposeSearchDTO): ResponseContainerDTO;
}
export const enum SearchAttributeFlagsDTO
{
Default = 0,
Objecttype = 2,
Values = 16,
System = 32,
OnlySearchable = 128
}
export const enum SearchMode
{
Undefined = 0,
Synchronous = 1,
Asynchronous = 2
}
export const enum SearchOperator
{
Undefined = 0,
Equal = 1,
NotEqual = 2,
Lesser = 3,
Greater = 4,
LesserEqual = 5,
GreaterEqual = 6,
StringLike = 7,
BitSet = 8,
BitNotSet = 9,
In = 10,
NotIn = 11,
Exists = 12,
NotExists = 13,
StringNotLike = 14,
InSubTree = 15,
NotInSubTree = 16,
SetExactMatch = 17,
NotSetExactMatch = 18,
SetMatchesAny = 19,
NotSetMatchesAny = 20,
SetMatchesAll = 21,
NotSetMatchesAll = 22,
FulltextSpecial = 23,
Between = 24,
BetweenEqual = 25
}
export const enum SearchRelation
{
Undefined = 0,
And = 1,
Or = 2,
GroupBy = 3,
Having = 4
}
export const enum SearchState
{
Searching = 0,
Finished = 1,
Error = 2,
Extracting = 3
}
export interface DisposeSearchDTO
{
ResultId: String;
}
export interface GetSearchResultDTO
{
Amount: number;
DisposeResult: boolean;
Offset: number;
SearchId: String;
}
export interface SearchConditionDTO
{
AutoWildcards?: boolean;
Column?: string;
LeftBrackets?: number;
Name?: string;
RightBrackets?: number;
SearchOperator: SearchOperator;
SearchRelation?: SearchRelation;
Value: any | null;
SubItems?: IdLocationNameEntityIdentityDTO[];
}
export interface SearchDTO
{
AttributeFlags?: SearchAttributeFlagsDTO;
Conditions: SearchConditionDTO[];
Entity: BaseEntityDTO;
Mode: SearchMode;
Sorting?: SortConditionDTO;
Values?: string[];
}
export interface SearchResponseContainerDTO extends ResponseContainerDTO
{
Count: number;
Result: ItemResponseDTO[];
ResultId: String;
State: SearchState;
}

View File

@ -0,0 +1,252 @@
// As found in WINDREAMLib
export const enum WMObjectStatus
{
WMObjectStatusCreated = 0,
WMObjectStatusLocked = 1,
WMObjectStatusDeleted = 2,
WMObjectStatusNew = 4,
WMObjectStatusIndexEdit = 4,
WMObjectStatusSaved = 8,
WMObjectStatusSystemEdit = 8,
WMObjectStatusReadOnly = 16,
WMObjectStatusDirty = 32,
WMObjectStatusVirtual = 64,
WMObjectStatusNoContentRead = 64,
WMObjectStatusAdminEdit = 128,
WMObjectStatusTTSUserDeleted = 128,
WMObjectStatusEdit = 256,
WMObjectStatusNoIndex = 512,
WMObjectStatusHasExtension = 1024,
WMObjectStatusLoggedIn = 1024,
WMObjectStatusAttrDBIndex = 1024,
WMObjectStatusPreVersion = 2048,
WMObjectStatusFulltextNeed = 4096,
WMObjectStatusMainUser = 4096,
WMObjectStatusArchived = 8192,
WMObjectStatusDelegateUser = 8192,
WMObjectStatusRefresh = 16384,
WMObjectStatusWorkLockEditOnly = 16384,
WMObjectStatusNoRights = 32768,
WMObjectStatusTemporary = 65536,
WMObjectStatusFulltextError = 131072,
WMObjectStatusPermanentLock = 262144,
WMObjectStatusRelationLock = 524288,
WMObjectStatusOTArchivedEditable = 524288,
WMObjectStatusMarkedForArchive = 1048576,
WMObjectStatusManualArchived = 2097152,
WMObjectStatusObjectDefault = 2097152,
WMObjectStatusSBX = 4194304,
WMObjectStatusTypeAssigned = 4194304,
WMObjectStatusCheckOutEditOnly = 8388608,
WMObjectStatusOwnerRights = 8388608,
WMObjectStatusVersionable = 16777216,
WMObjectStatusInUse = 16777216,
WMObjectStatusInactive = 33554432,
WMObjectStatusManualFulltext = 33554432,
WMObjectStatusAsyncProxyBinary = 33554432,
WMObjectStatusBinaryReadOnly = 67108864,
WMObjectStatusArchiveCertified = 67108864,
WMObjectStatusParentOwnerRights = 67108864,
WMObjectStatusUserWorkLock = 134217728,
WMObjectStatusExternalHistory = 268435456,
WMObjectStatusSubscribe = 268435456,
WMObjectStatusLifeCycleEditDenied = 536870912,
WMObjectStatusHSMBinary = 1073741824
}
export const enum WSAttributeFlags
{
Default = 0,
Objecttype = 2,
Parent = 4,
ValuesOnly = 8,
Values = 16,
System = 32,
IndexmaskData = 64,
OnlySearchable = 128,
NonSortable = 256,
Virtual = 512,
Global = 1024
}
export const enum WSValueType
{
Undefined = 0,
Int = 1,
Int64 = 2,
String = 3,
Double = 4,
Vector = 5,
Boolean = 6,
Float = 7,
DateTime = 8,
Date = 9,
Decimal = 10
}
export const enum BaseEntityDTO
{
DocumentAndMap = 0,
Document = 1,
Folder = 2
}
export const enum ItemEntityDTO
{
DocumentAndMap = 0,
Document = 1,
Folder = 2
}
export interface ExistingItemIdentityDTO extends IdLocationNameIdentityDTO
{
}
export interface IdLocationNameEntityIdentityDTO extends IdLocationNameIdentityDTO
{
Entity: BaseEntityDTO;
}
export interface IdLocationNameEntityIdentityResponseDTO extends IdLocationNameIdentityResponseDTO
{
Entity: BaseEntityDTO;
}
export interface IdLocationNameIdentityDTO extends LocationNameIdentityDTO
{
Id: number;
}
export interface IdLocationNameIdentityResponseDTO extends IdLocationNameIdentityDTO
{
LocationComplete: string;
}
export interface IdNameIdentityDTO extends NameIdentityDTO
{
Id: number;
}
export interface ItemContainerDTO
{
Item: IdLocationNameIdentityDTO;
}
export interface ItemResponseDTO extends IdLocationNameEntityIdentityResponseDTO
{
Attributes: AttributeResponseDTO[];
ObjectType: ObjectTypeIdentityDTO;
ParentWindreamObject: IdLocationNameEntityIdentityResponseDTO;
}
export interface LocationNameIdentityDTO extends NameIdentityDTO
{
Location: string;
}
export interface NameIdentityDTO
{
Name: string;
}
export interface NameValuePairDTO extends NameIdentityDTO
{
Value: any;
}
export interface NewItemIdentityDTO extends LocationNameIdentityDTO
{
}
export interface VectorDetailsDTO
{
EntriesLimit?: number;
}
export interface AttributeResponseDTO
{
DisplayName: string;
IsSortable: boolean;
IsSystem: boolean;
Name: string;
Type: WSValueType;
UnderlyingType?: WSValueType;
Value: any;
VectorDetails?: VectorDetailsDTO;
}
export interface AttributeDTO extends NameValuePairDTO
{
}
export interface ErrorResponseDTO
{
ErrorCode: number;
Message: string;
}
export const enum ObjectTypeEntityDTO
{
DocumentAndMap = 0,
Document = 1,
Folder = 2,
ObjectType = 10
}
export interface GetObjectTypeDTO
{
AttributeFlags: WSAttributeFlags;
Item: ObjectTypeIdentityDTO;
Values: string[];
}
export interface ObjectTypeFullIdentityDTO extends IdNameIdentityDTO
{
Entity: ObjectTypeEntityDTO;
}
export interface ObjectTypeIdentityDTO extends IdNameIdentityDTO
{
}
export interface ObjectTypeResponseContainerDTO extends ResponseContainerDTO
{
Item: ObjectTypeResponseDTO;
}
export interface ObjectTypeResponseDTO extends ObjectTypeFullIdentityDTO
{
Attributes: AttributeResponseDTO[];
ObjectType: ObjectTypeFullIdentityDTO;
}
export const enum ResponseDetailsType
{
Always = 0,
Failed = 1,
Succeeded = 2,
None = 3
}
export interface ItemResponseContainerDTO extends ResponseContainerDTO
{
Item: IdLocationNameEntityIdentityResponseDTO;
}
export interface ResponseContainerDTO
{
Error?: ErrorResponseDTO;
HasErrors: boolean;
}
export const enum SortDirection
{
Ascending = 0,
Descending = 1
}
export interface SortConditionDTO
{
AttributeName: string;
Direction: SortDirection;
}

View File

@ -1,9 +0,0 @@
Namespace Models
Public Class TemplateModel
Public Property Message As String
End Class
End Namespace

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", "4.0.0.0"), _
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _

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.0.1.0"), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase

View File

@ -1,22 +1,10 @@
Imports Microsoft.Practices.Unity
Imports Windream.WebService.Logging
Imports Windream.WebService.Logging.Impl
Imports Microsoft.practices.unity
Imports Windream.WebService.PlugIns
Imports Windream.WebService.Documents
Imports Windream.WebService.Documents.Impl
Namespace WindreamWebServicePlugin1
Public Class ServiceRegistrator
Implements IServiceRegistrator
Public Class ServiceRegistrator
Implements IServiceRegistrator
Public Sub RegisterServices(container As IUnityContainer) Implements IServiceRegistrator.RegisterServices
' container.RegisterType(Of TInterface, TImpl)()
container.RegisterType(Of ILogging, LoggingForNet)
Dim l = New LoggingForNet()
End Sub
End Class
End Namespace
Public Sub RegisterServices(container As IUnityContainer) Implements IServiceRegistrator.RegisterServices
container.RegisterType(Of IUselessModel, UselessModel)()
End Sub
End Class

View File

@ -0,0 +1,5 @@
Public Class UselessModel
Implements IUselessModel
Public Property Message As String Implements IUselessModel.Message
End Class

View File

@ -8,4 +8,4 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<config>
<connectionString>Data Source=dub1sql202;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd</connectionString>
<connectionString>Data Source=dub1sql202;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd</connectionString>
<logString>E:\LogFiles\Digital Data\WMWebServiceBNS</logString>
</config>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.4.12" targetFramework="net451" />
<package id="NLog" version="5.0.5" targetFramework="net462" />
</packages>

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff