diff --git a/DigitalDataBNSPlugin/DigitalDataBNSPlugin.vbproj b/DigitalDataBNSPlugin/DigitalDataBNSPlugin.vbproj index 14ada9e..715430a 100644 --- a/DigitalDataBNSPlugin/DigitalDataBNSPlugin.vbproj +++ b/DigitalDataBNSPlugin/DigitalDataBNSPlugin.vbproj @@ -50,6 +50,7 @@ + True @@ -67,6 +68,7 @@ True + @@ -95,14 +97,6 @@ - - False - ..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll - - - False - ..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll - P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll True @@ -119,10 +113,7 @@ P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll True - - False - D:\ProgramFiles\windream\windream Web Service SDK\Libraries\3rdParty\Microsoft.Practices.Unity.dll - + False ..\packages\NLog.5.0.5\lib\net46\NLog.dll diff --git a/DigitalDataBNSPlugin/DigitalDataController.vb b/DigitalDataBNSPlugin/DigitalDataController.vb index 8d16324..39d0f09 100644 --- a/DigitalDataBNSPlugin/DigitalDataController.vb +++ b/DigitalDataBNSPlugin/DigitalDataController.vb @@ -1,7 +1,6 @@ -Imports DigitalData.Modules.Database -Imports DigitalData.Modules.Logging -Imports System.Collections.Generic +Imports System.Collections.Generic Imports System.Data +Imports System.Data.SqlClient Imports System.Net Imports System.Net.Http Imports System.Net.Http.Headers @@ -12,6 +11,7 @@ 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 @@ -22,14 +22,9 @@ Namespace Controllers Public Class DigitalDataController Inherits PlugInBaseController - Private ReadOnly _routesSettings As IEnumerable(Of RouteSettings) Private ReadOnly _docController As IDocumentsController Private _session As IWMSession6 - - Private ReadOnly _logConfig As LogConfig - Private ReadOnly _logger As Logger - - Private ReadOnly _database As MSSQLServer + Private _logger As ILogging ''' ''' Gets the routes settings for the controller. @@ -40,61 +35,21 @@ Namespace Controllers ''' Public Overrides ReadOnly Property RoutesSettings As IEnumerable(Of RouteSettings) Get - Return _routesSettings + Return New List(Of RouteSettings) From { + New RouteSettings("DigitalDataController", "DigitalData/{action}/{id}", New With { + .id = RouteParameter.Optional, .controller = "DigitalData" + }) + } 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 - ''' ''' Initializes a new instance of the class. ''' - Sub New() - MyBase.New() + Sub New(pLogger As ILogging) + _logger = pLogger - Dim routesSettings As New List(Of RouteSettings) From { - New RouteSettings("DigitalDataController", "DigitalData/{action}/{id}", New With { - .id = RouteParameter.Optional, .controller = "DigitalData" - }) - } - _routesSettings = routesSettings - - Dim oLogPath = GetLogPath() - _logConfig = New LogConfig(LogPath:=LogConfig.PathType.CustomPath, oLogPath) - _logger = _logConfig.GetLogger() - - '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 oConnectionString = GetConnectionString() - - _logger.Info($"[DATABASE] Verbindung zu {oConnectionString}") - - _database = New MSSQLServer(_logConfig, oConnectionString) - - If _database.DBInitialized = 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.") + _logger.Write("[INIT] Die Initialisierung wurde abgeschlossen.") End Sub Private Function GetPluginPath() @@ -117,7 +72,7 @@ Namespace Controllers Return Doc Else - _logger.Info($"[CONFIG] Konfigurations Datei {configFile} wurde NICHT gefunden!") + _logger.Write($"[CONFIG] Konfigurations Datei {configFile} wurde NICHT gefunden!") Return Nothing End If @@ -134,17 +89,6 @@ Namespace Controllers End If End Function - Private Function GetLogPath() As String - Dim oConfig = GetConfig() - - If oConfig IsNot Nothing Then - Dim oLogPath As String = oConfig.DocumentElement.SelectSingleNode("/config/logPath").InnerText - Return oLogPath - Else - Return Nothing - End If - End Function - ''' ''' A simple example of a http-get service method implementation. ''' @@ -153,31 +97,37 @@ Namespace Controllers ''' This method creates a nice greeting. Public Function BNSDownload( docId As Integer, userId As String) As HttpResponseMessage - Dim DT As DataTable + Dim DT As New DataTable("DDRESULT") Dim Domain, Username, Password As String - _logger.Info($"[REQUEST] Anfrage von Benutzer-ID {userId} für Dokument-ID {docId}") + _logger.Write($"[REQUEST] Anfrage von Benutzer-ID {userId} für Dokument-ID {docId}") Try - DT = _database.GetDatatable($"SELECT DOMAIN, USERNAME, PW FROM TBDD_WEBSERVICE_USER_EX WHERE USERNAME_LINK = '{userId}'") + 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.Info("[DATABASE] Fehler beim Zugriff auf die Datenbank ") - _logger.Info(ex.Message) + _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.Info($"[DATABASE] BenutzerID {userId} wurde nicht in der Datenbank gefunden.") + _logger.Write($"[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) + Dim oRow As DataRow = DT.Rows.Item(0) - Domain = firstRow.Item("DOMAIN") - Username = firstRow.Item("USERNAME") - Password = firstRow.Item("PW") + Domain = oRow.Item("DOMAIN") + Username = oRow.Item("USERNAME") + Password = oRow.Item("PW") - _logger.Info($"[DATABASE] BenutzerID {userId} wurde gefunden.") + _logger.Write($"[DATABASE] BenutzerID {userId} wurde gefunden.") End If Dim loggedIn As Boolean = CreateSessionForUser(Username, Password, Domain) @@ -194,9 +144,9 @@ Namespace Controllers 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") + _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) @@ -206,15 +156,15 @@ Namespace Controllers 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") + _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.Info($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen") + _logger.Write($"[WINDREAM/Session] Session für Benutzer {Username} wird geschlossen") _session.Logout() ' Gibt die Datei zum Download zurück @@ -222,10 +172,11 @@ Namespace Controllers 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) + _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 @@ -244,66 +195,68 @@ Namespace Controllers '' 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) + _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() - User.aDomain = domain - User.aPassword = password - User.aUserName = username - User.aServerName = DMSServer + User = New WMOTOOLLib.WMUserIdentity With { + .aDomain = domain, + .aPassword = password, + .aUserName = username, + .aServerName = DMSServer + } Catch ex As Exception - _logger.Info($"[WINDREAM/User] User Objekt konnte nicht erstellt werden.") - _logger.Info(ex.Message) + _logger.Write($"[WINDREAM/User] User Objekt konnte nicht erstellt werden.") + _logger.WriteError(ex) 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}") + _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() - Connect.ModuleId = 9 + Connect = New WMConnect With { + .ModuleId = 9 + } Catch ex As Exception - _logger.Info($"[WINDREAM/Connect] Connect Objekt konnte nicht erstellt werden.") - _logger.Info(ex.Message) + _logger.Write($"[WINDREAM/Connect] Connect Objekt konnte nicht erstellt werden.") + _logger.WriteError(ex) Return False End Try Try Session = Connect.Login(User) - _logger.Info($"[WINDREAM/Session] Session wurde aufgebaut") + _logger.Write($"[WINDREAM/Session] Session wurde aufgebaut") If Session.aLoggedin Then _session = Session - _logger.Info($"[WINDREAM/Session] Benutzer {username} ist eingeloggt") + _logger.Write($"[WINDREAM/Session] Benutzer {username} ist eingeloggt") Return True Else - _logger.Info($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!") + _logger.Write($"[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) + _logger.Write($"[WINDREAM/Session] Fehler bei Login von Benutzer {username}!") + _logger.WriteError(ex) If Not IsNothing(Session) AndAlso Session.aLoggedin Then _session = Session - _logger.Info($"[WINDREAM/Session] Benutzer {username} ist eingeloggt") + _logger.Write($"[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) + _logger.Write($"[WINDREAM/Session] Fehler beim Aufbau der Session. Benutzer {username} ist nicht eingeloggt!") + _logger.WriteError(ex) Return False End If End Try diff --git a/DigitalDataBNSPlugin/IUselessModel.vb b/DigitalDataBNSPlugin/IUselessModel.vb new file mode 100644 index 0000000..1b94286 --- /dev/null +++ b/DigitalDataBNSPlugin/IUselessModel.vb @@ -0,0 +1,3 @@ +Friend Interface IUselessModel + Property Message As String +End Interface diff --git a/DigitalDataBNSPlugin/ServiceRegistrator.vb b/DigitalDataBNSPlugin/ServiceRegistrator.vb index ebd12ec..66e3417 100644 --- a/DigitalDataBNSPlugin/ServiceRegistrator.vb +++ b/DigitalDataBNSPlugin/ServiceRegistrator.vb @@ -1,10 +1,10 @@ -Imports Microsoft.Practices.Unity +Imports Microsoft.practices.unity Imports Windream.WebService.PlugIns Public Class ServiceRegistrator Implements IServiceRegistrator Public Sub RegisterServices(container As IUnityContainer) Implements IServiceRegistrator.RegisterServices - ' container.RegisterType(Of TInterface, TImpl)() + container.RegisterType(Of IUselessModel, UselessModel)() End Sub End Class diff --git a/DigitalDataBNSPlugin/UselessModel.vb b/DigitalDataBNSPlugin/UselessModel.vb new file mode 100644 index 0000000..f72d052 --- /dev/null +++ b/DigitalDataBNSPlugin/UselessModel.vb @@ -0,0 +1,5 @@ +Public Class UselessModel + Implements IUselessModel + + Public Property Message As String Implements IUselessModel.Message +End Class