EDMIService: First version of GetAccessRight

This commit is contained in:
Jonathan Jenne 2020-12-22 11:58:42 +01:00
parent 867cce7c13
commit 69621f707b
12 changed files with 157 additions and 84 deletions

View File

@ -5,8 +5,9 @@ Imports DigitalData.Modules
Imports System.IO Imports System.IO
Imports System.ServiceModel Imports System.ServiceModel
Imports System.Data.SqlClient Imports System.Data.SqlClient
Imports DigitalData.Services.EDMIService.Results
Imports System.ServiceModel.Description Imports System.ServiceModel.Description
Imports DigitalData.Services.EDMIService.Messages
Imports DigitalData.Services.EDMIService.Rights
<ServiceBehavior(InstanceContextMode:=InstanceContextMode.PerSession)> <ServiceBehavior(InstanceContextMode:=InstanceContextMode.PerSession)>
Public Class EDMIService Public Class EDMIService
@ -22,10 +23,9 @@ Public Class EDMIService
Public Shared GlobalState As GlobalState Public Shared GlobalState As GlobalState
Public Shared Scheduler As Scheduler Public Shared Scheduler As Scheduler
Private ReadOnly _logger As Logger Private ReadOnly _Logger As Logger
Private ReadOnly _Debug As Boolean = False
Private ReadOnly _debug As Boolean = False Private ReadOnly _Username As String
Private ReadOnly _username As String
Public Shared Sub Configure(Config As ServiceConfiguration) Public Shared Sub Configure(Config As ServiceConfiguration)
Dim oBaseAddress = Config.BaseAddresses.Item(0) Dim oBaseAddress = Config.BaseAddresses.Item(0)
@ -35,8 +35,6 @@ Public Class EDMIService
Dim oDescription = ContractDescription.GetContract(GetType(IEDMIService), GetType(EDMIService)) Dim oDescription = ContractDescription.GetContract(GetType(IEDMIService), GetType(EDMIService))
Dim oEndpoint As New ServiceEndpoint(oDescription, oBinding, oAddress) Dim oEndpoint As New ServiceEndpoint(oDescription, oBinding, oAddress)
Config.AddServiceEndpoint(oEndpoint) Config.AddServiceEndpoint(oEndpoint)
Config.Description.Behaviors.Add(New ServiceDebugBehavior With {.IncludeExceptionDetailInFaults = True}) Config.Description.Behaviors.Add(New ServiceDebugBehavior With {.IncludeExceptionDetailInFaults = True})
End Sub End Sub
@ -46,12 +44,12 @@ Public Class EDMIService
Dim oInstanceContext As InstanceContext = oOperationContext.InstanceContext Dim oInstanceContext As InstanceContext = oOperationContext.InstanceContext
Dim oUsername = StripDomainFromUsername(oOperationContext.ServiceSecurityContext.WindowsIdentity.Name) Dim oUsername = StripDomainFromUsername(oOperationContext.ServiceSecurityContext.WindowsIdentity.Name)
_username = oUsername _Username = oUsername
_logger = LogConfig.GetLogger() _Logger = LogConfig.GetLogger()
_logger.Debug("New Request by User [{0}]", _username) _Logger.Debug("New Request by User [{0}]", _Username)
End Sub End Sub
Public Function StripDomainFromUsername(UserName As String) Private Function StripDomainFromUsername(UserName As String)
If UserName.Contains("\") Then If UserName.Contains("\") Then
Return UserName.Split("\")(1) Return UserName.Split("\")(1)
ElseIf UserName.Contains("@") Then ElseIf UserName.Contains("@") Then
@ -61,34 +59,21 @@ Public Class EDMIService
End If End If
End Function End Function
#Region "=== Authorization ==="
Private Function TestUserAuth() As Boolean
Try
'Dim oSQL As String = $"SELECT FNIDB_AUTH_USER('{_username}') FROM RDB$DATABASE;"
'Dim oResult As Boolean = Database.GetScalarValue(oSQL)
'Return oResult
Return True
Catch ex As Exception
_logger.Error(ex)
Return False
End Try
End Function
#End Region
#Region "=== Heartbeat ===" #Region "=== Heartbeat ==="
Public Function Heartbeat() As Boolean Implements IEDMIService.Heartbeat Public Function Heartbeat() As Boolean Implements IEDMIService.Heartbeat
Return True Return True
End Function End Function
#End Region #End Region
#Region "Database" #Region "=== Database ==="
Public Function ReturnDatatableFromCache(Name As String, FilterExpression As String, SortByColumn As String) As TableResult Implements IEDMIService.ReturnDatatableFromCache Public Function ReturnDatatableFromCache(Name As String, FilterExpression As String, SortByColumn As String) As TableResult Implements IEDMIService.ReturnDatatableFromCache
Try Try
_logger.Info($"ReturnDatatableFromCache, Datatable: {Name}") _Logger.Info($"ReturnDatatableFromCache, Datatable: {Name}")
Dim oDataset As DataSet = Scheduler.DataSet Dim oDataset As DataSet = GlobalState.TableStore
Dim oDataTable As DataTable = Nothing Dim oDataTable As DataTable = Nothing
_logger.Debug("DataSet contains [{0}] datatables", oDataset.Tables.Count) _Logger.Debug("DataSet contains [{0}] datatables", oDataset.Tables.Count)
If oDataset.Tables.Contains(Name) Then If oDataset.Tables.Contains(Name) Then
oDataTable = oDataset.Tables.Item(Name).Copy() oDataTable = oDataset.Tables.Item(Name).Copy()
@ -109,16 +94,16 @@ Public Class EDMIService
oFilteredTable.TableName = Name oFilteredTable.TableName = Name
End If End If
_logger.Debug("Datatable Stats for [{0}]:", Name) _Logger.Debug("Datatable Stats for [{0}]:", Name)
_logger.Debug("Unfiltered: [{0}] rows", oDataTable.Rows.Count) _Logger.Debug("Unfiltered: [{0}] rows", oDataTable.Rows.Count)
_logger.Debug("Filtered: [{0}] rows", oFilteredTable.Rows.Count) _Logger.Debug("Filtered: [{0}] rows", oFilteredTable.Rows.Count)
Return New TableResult(oFilteredTable) Return New TableResult(oFilteredTable)
Else Else
Throw New ApplicationException($"DataTable {Name} does not exist") Throw New ApplicationException($"DataTable {Name} does not exist")
End If End If
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New TableResult(ex.Message) Return New TableResult(ex.Message)
End Try End Try
End Function End Function
@ -127,33 +112,33 @@ Public Class EDMIService
#Region "=== Database (MSSQL IDB) ===" #Region "=== Database (MSSQL IDB) ==="
Public Function ReturnDatatable_MSSQL_IDB(SQL As String) As TableResult Implements IEDMIService.ReturnDatatable_MSSQL_IDB Public Function ReturnDatatable_MSSQL_IDB(SQL As String) As TableResult Implements IEDMIService.ReturnDatatable_MSSQL_IDB
Try Try
_logger.Info($"ReturnDatatable_MSSQL_IDB, SQL: {SQL}") _Logger.Info($"ReturnDatatable_MSSQL_IDB, SQL: {SQL}")
Dim oResult As DataTable = MSSQL_IDB.GetDatatable(SQL) Dim oResult As DataTable = MSSQL_IDB.GetDatatable(SQL)
Return New TableResult(oResult) Return New TableResult(oResult)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New TableResult(ex.Message) Return New TableResult(ex.Message)
End Try End Try
End Function End Function
Public Function ReturnScalar_MSSQL_IDB(SQL As String) As ScalarResult Implements IEDMIService.ReturnScalar_MSSQL_IDB Public Function ReturnScalar_MSSQL_IDB(SQL As String) As ScalarResult Implements IEDMIService.ReturnScalar_MSSQL_IDB
Try Try
_logger.Info($"ReturnScalar_MSSQL_IDB, SQL: {SQL}") _Logger.Info($"ReturnScalar_MSSQL_IDB, SQL: {SQL}")
Dim oResult As Object = MSSQL_IDB.GetScalarValue(SQL) Dim oResult As Object = MSSQL_IDB.GetScalarValue(SQL)
Return New ScalarResult(oResult) Return New ScalarResult(oResult)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New ScalarResult(ex.Message) Return New ScalarResult(ex.Message)
End Try End Try
End Function End Function
Public Function ExecuteNonQuery_MSSQL_IDB(SQL As String) As NonQueryResult Implements IEDMIService.ExecuteNonQuery_MSSQL_IDB Public Function ExecuteNonQuery_MSSQL_IDB(SQL As String) As NonQueryResult Implements IEDMIService.ExecuteNonQuery_MSSQL_IDB
Try Try
_logger.Info($"ExecuteNonQuery_MSSQL_IDB, SQL: {SQL}") _Logger.Info($"ExecuteNonQuery_MSSQL_IDB, SQL: {SQL}")
Dim oResult As Boolean = MSSQL_IDB.ExecuteNonQuery(SQL) Dim oResult As Boolean = MSSQL_IDB.ExecuteNonQuery(SQL)
Return New NonQueryResult() Return New NonQueryResult()
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New NonQueryResult(ex.Message) Return New NonQueryResult(ex.Message)
End Try End Try
End Function End Function
@ -162,33 +147,33 @@ Public Class EDMIService
#Region "=== Database (MSSQL ECM) ===" #Region "=== Database (MSSQL ECM) ==="
Public Function ReturnDatatable_MSSQL_ECM(SQL As String) As TableResult Implements IEDMIService.ReturnDatatable_MSSQL_ECM Public Function ReturnDatatable_MSSQL_ECM(SQL As String) As TableResult Implements IEDMIService.ReturnDatatable_MSSQL_ECM
Try Try
_logger.Info($"ReturnDatatable_MSSQL_ECM, SQL: {SQL}") _Logger.Info($"ReturnDatatable_MSSQL_ECM, SQL: {SQL}")
Dim oResult As DataTable = MSSQL_ECM.GetDatatable(SQL) Dim oResult As DataTable = MSSQL_ECM.GetDatatable(SQL)
Return New TableResult(oResult) Return New TableResult(oResult)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New TableResult(ex.Message) Return New TableResult(ex.Message)
End Try End Try
End Function End Function
Public Function ReturnScalar_MSSQL_ECM(SQL As String) As ScalarResult Implements IEDMIService.ReturnScalar_MSSQL_ECM Public Function ReturnScalar_MSSQL_ECM(SQL As String) As ScalarResult Implements IEDMIService.ReturnScalar_MSSQL_ECM
Try Try
_logger.Info($"ReturnScalar_MSSQL_ECM, SQL: {SQL}") _Logger.Info($"ReturnScalar_MSSQL_ECM, SQL: {SQL}")
Dim oResult As Object = MSSQL_ECM.GetScalarValue(SQL) Dim oResult As Object = MSSQL_ECM.GetScalarValue(SQL)
Return New ScalarResult(oResult) Return New ScalarResult(oResult)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New ScalarResult(ex.Message) Return New ScalarResult(ex.Message)
End Try End Try
End Function End Function
Public Function ExecuteNonQuery_MSSQL_ECM(SQL As String) As NonQueryResult Implements IEDMIService.ExecuteNonQuery_MSSQL_ECM Public Function ExecuteNonQuery_MSSQL_ECM(SQL As String) As NonQueryResult Implements IEDMIService.ExecuteNonQuery_MSSQL_ECM
Try Try
_logger.Info($"ExecuteNonQuery_MSSQL_ECM, SQL: {SQL}") _Logger.Info($"ExecuteNonQuery_MSSQL_ECM, SQL: {SQL}")
Dim oResult As Boolean = MSSQL_ECM.ExecuteNonQuery(SQL) Dim oResult As Boolean = MSSQL_ECM.ExecuteNonQuery(SQL)
Return New NonQueryResult() Return New NonQueryResult()
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New NonQueryResult(ex.Message) Return New NonQueryResult(ex.Message)
End Try End Try
End Function End Function
@ -197,39 +182,38 @@ Public Class EDMIService
#Region "=== Database (Firebird) ===" #Region "=== Database (Firebird) ==="
Public Function ReturnDatatable_Firebird(SQL As String) As TableResult Implements IEDMIService.ReturnDatatable_Firebird Public Function ReturnDatatable_Firebird(SQL As String) As TableResult Implements IEDMIService.ReturnDatatable_Firebird
Try Try
_logger.Info($"ReturnDatatable, SQL: {SQL}") _Logger.Info($"ReturnDatatable, SQL: {SQL}")
Dim oResult As DataTable = Firebird.GetDatatable(SQL) Dim oResult As DataTable = Firebird.GetDatatable(SQL)
Return New TableResult(oResult) Return New TableResult(oResult)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New TableResult(ex.Message) Return New TableResult(ex.Message)
End Try End Try
End Function End Function
Public Function ReturnScalar_Firebird(SQL As String) As ScalarResult Implements IEDMIService.ReturnScalar_Firebird Public Function ReturnScalar_Firebird(SQL As String) As ScalarResult Implements IEDMIService.ReturnScalar_Firebird
Try Try
_logger.Info($"ReturnScalar, SQL: {SQL}") _Logger.Info($"ReturnScalar, SQL: {SQL}")
Dim oResult As Object = Firebird.GetScalarValue(SQL) Dim oResult As Object = Firebird.GetScalarValue(SQL)
Return New ScalarResult(oResult) Return New ScalarResult(oResult)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New ScalarResult(ex.Message) Return New ScalarResult(ex.Message)
End Try End Try
End Function End Function
Public Function ExecuteNonQuery_Firebird(SQL As String) As NonQueryResult Implements IEDMIService.ExecuteNonQuery_Firebird Public Function ExecuteNonQuery_Firebird(SQL As String) As NonQueryResult Implements IEDMIService.ExecuteNonQuery_Firebird
Try Try
_logger.Info($"ExecuteNonQuery, SQL: {SQL}") _Logger.Info($"ExecuteNonQuery, SQL: {SQL}")
Dim oResult As Boolean = Firebird.ExecuteNonQuery(SQL) Dim oResult As Boolean = Firebird.ExecuteNonQuery(SQL)
Return New NonQueryResult() Return New NonQueryResult()
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Return New NonQueryResult(ex.Message) Return New NonQueryResult(ex.Message)
End Try End Try
End Function End Function
#End Region #End Region
#Region "=== Document ===" #Region "=== Document ==="
''' <summary> ''' <summary>
''' Imports a file according to ObjectStoreId ''' Imports a file according to ObjectStoreId
@ -261,14 +245,14 @@ Public Class EDMIService
Try Try
Directory.CreateDirectory(oDirectoryPath) Directory.CreateDirectory(oDirectoryPath)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Throw New FaultException(ex.Message) Throw New FaultException(ex.Message)
End Try End Try
Try Try
Dim oVersionedFileName As String = Filesystem.GetVersionedFilename(oAbsolutePath) Dim oVersionedFileName As String = Filesystem.GetVersionedFilename(oAbsolutePath)
_logger.Info("ImportFile: Saving file [{0}] to path [{1}]", Data.FileName, oVersionedFileName) _Logger.Info("ImportFile: Saving file [{0}] to path [{1}]", Data.FileName, oVersionedFileName)
Using oStream = New FileStream(oVersionedFileName, FileMode.CreateNew) Using oStream = New FileStream(oVersionedFileName, FileMode.CreateNew)
oStream.Write(Data.Contents, 0, Data.Contents.Length) oStream.Write(Data.Contents, 0, Data.Contents.Length)
oStream.Flush(True) oStream.Flush(True)
@ -279,7 +263,7 @@ Public Class EDMIService
Dim oCommand As New SqlCommand("PRIDB_NEW_DOCUMENT") Dim oCommand As New SqlCommand("PRIDB_NEW_DOCUMENT")
oCommand.Parameters.AddWithValue("@OBJ_ST_ID", 1) oCommand.Parameters.AddWithValue("@OBJ_ST_ID", 1)
oCommand.Parameters.AddWithValue("@REL_PATH", oRelativePath) oCommand.Parameters.AddWithValue("@REL_PATH", oRelativePath)
oCommand.Parameters.AddWithValue("@WHO", _username) oCommand.Parameters.AddWithValue("@WHO", _Username)
oCommand.Parameters.AddWithValue("@REF_DOCID", 0) oCommand.Parameters.AddWithValue("@REF_DOCID", 0)
oCommand.Parameters.Add(New SqlParameter("@IDB_OBJ_ID", SqlDbType.BigInt)) oCommand.Parameters.Add(New SqlParameter("@IDB_OBJ_ID", SqlDbType.BigInt))
@ -287,7 +271,7 @@ Public Class EDMIService
Return New Messages.DocumentImportResponse() With {.ObjectId = oObjectId} Return New Messages.DocumentImportResponse() With {.ObjectId = oObjectId}
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Throw New FaultException(ex.Message) Throw New FaultException(ex.Message)
End Try End Try
End Function End Function
@ -312,7 +296,7 @@ Public Class EDMIService
Dim EDMIPath As New EDMI.File.Path(LogConfig, oObjectStore.Path) Dim EDMIPath As New EDMI.File.Path(LogConfig, oObjectStore.Path)
Dim oFullPath = EDMIPath.GetFullPathFromRelativePath(oPath) Dim oFullPath = EDMIPath.GetFullPathFromRelativePath(oPath)
_logger.Debug("GetFileByObjectId: Loading file [{0}]", oFullPath) _Logger.Debug("GetFileByObjectId: Loading file [{0}]", oFullPath)
Dim oFileInfo As New FileInfo(oFullPath) Dim oFileInfo As New FileInfo(oFullPath)
@ -333,10 +317,10 @@ Public Class EDMIService
Return oMessage Return oMessage
Catch ex As IOException Catch ex As IOException
_logger.Error(ex) _Logger.Error(ex)
Throw New FaultException($"Object [{Data.ObjectId}] could not be streamed!") Throw New FaultException($"Object [{Data.ObjectId}] could not be streamed!")
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Throw New FaultException(ex.Message) Throw New FaultException(ex.Message)
End Try End Try
End Function End Function
@ -351,9 +335,46 @@ Public Class EDMIService
.Datatable = oDatatable .Datatable = oDatatable
} }
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _Logger.Error(ex)
Throw New FaultException(ex.Message) Throw New FaultException(ex.Message)
End Try End Try
End Function End Function
#End Region #End Region
#Region "=== Access Rights ==="
Public Function GetAccessRight(UserId As Long, ObjectId As Long) As AccessRightResult Implements IEDMIService.GetAccessRight
Try
Dim oTableName As String = "TBIDB_ACCESSRIGHT"
If Not GlobalState.TableStore.Tables.Contains(oTableName) Then
_Logger.Warn("GetAccessRight: Access right table does not exist!")
Return New AccessRightResult(AccessRight.VIEW_ONLY)
End If
Dim oTable As DataTable = GlobalState.TableStore.Tables.Item(oTableName)
Dim oRows As List(Of DataRow) = oTable.Select($"IDB_OBJ_ID = {ObjectId} AND USR_ID = {UserId}").ToList()
Dim oRight As AccessRight = AccessRight.VIEW_ONLY
If oRows.Count = 0 Then
_Logger.Warn("GetAccessRight: Access right assignment does not exist for user [{0}] on object [{1}]", UserId, ObjectId)
Return New AccessRightResult(AccessRight.VIEW_ONLY)
Else
If oRows.Count > 1 Then
_Logger.Warn("GetAccessRight: More than one access right assignment found for user [{0}] on object [{1}]", UserId, ObjectId)
End If
Dim oRow As DataRow = oRows.First()
Dim oRightAsInt = oRow.Item("ACCESSRIGHT")
oRight = Utils.ToEnum(Of AccessRight)(oRightAsInt)
End If
Return New AccessRightResult(oRight)
Catch ex As Exception
_Logger.Warn("GetAccessRight: Exception while getting access right for user [{0}] on object [{1}]", UserId, ObjectId)
_Logger.Error(ex)
Return New AccessRightResult(ex)
End Try
End Function
#End Region
End Class End Class

View File

@ -126,11 +126,14 @@
<ItemGroup> <ItemGroup>
<Compile Include="Config.vb" /> <Compile Include="Config.vb" />
<Compile Include="GlobalState.vb" /> <Compile Include="GlobalState.vb" />
<Compile Include="Messages.vb" /> <Compile Include="Results.vb" />
<Compile Include="Results\AccessRightResult.vb" />
<Compile Include="Results\Messages.vb" />
<Compile Include="Results\BaseResult.vb" /> <Compile Include="Results\BaseResult.vb" />
<Compile Include="Exceptions.vb" /> <Compile Include="Exceptions.vb" />
<Compile Include="Results\DatabaseResult.vb" /> <Compile Include="Results\DatabaseResult.vb" />
<Compile Include="EDMIService.vb" /> <Compile Include="EDMIService.vb" />
<Compile Include="Rights.vb" />
<Compile Include="Scheduler.vb" /> <Compile Include="Scheduler.vb" />
<Compile Include="Scheduler\DatatableJob.vb" /> <Compile Include="Scheduler\DatatableJob.vb" />
<Compile Include="Scheduler\JobListener.vb" /> <Compile Include="Scheduler\JobListener.vb" />

View File

@ -9,6 +9,8 @@ Public Class GlobalState
Public Property ObjectStores As New List(Of ObjectStore) Public Property ObjectStores As New List(Of ObjectStore)
Public Property TableStore As New DataSet
Public Sub New(LogConfig As LogConfig, MSSQL_IDB As MSSQLServer, MSSQL_ECM As MSSQLServer) Public Sub New(LogConfig As LogConfig, MSSQL_IDB As MSSQLServer, MSSQL_ECM As MSSQLServer)
_LogConfig = LogConfig _LogConfig = LogConfig
_Logger = LogConfig.GetLogger() _Logger = LogConfig.GetLogger()

View File

@ -1,6 +1,7 @@
Imports System.IO Imports System.IO
Imports System.ServiceModel Imports System.ServiceModel
Imports DigitalData.Modules.Filesystem Imports DigitalData.Modules.Filesystem
Imports DigitalData.Services.EDMIService.Messages
Imports DigitalData.Services.EDMIService.Results Imports DigitalData.Services.EDMIService.Results
<ServiceContract(Name:="IEDMIService", [Namespace]:="http://DigitalData.Services.EDMIService")> <ServiceContract(Name:="IEDMIService", [Namespace]:="http://DigitalData.Services.EDMIService")>
@ -49,6 +50,10 @@ Interface IEDMIService
Function ExecuteNonQuery_MSSQL_ECM(SQL As String) As NonQueryResult Function ExecuteNonQuery_MSSQL_ECM(SQL As String) As NonQueryResult
#End Region #End Region
#Region "Access Rights"
Function GetAccessRight(UserId As Long, ObjectId As Long) As AccessRightResult
#End Region
#Region "Document (New)" #Region "Document (New)"
<OperationContract> <OperationContract>
Function ImportFile(Data As Messages.DocumentImportRequest) As Messages.DocumentImportResponse Function ImportFile(Data As Messages.DocumentImportRequest) As Messages.DocumentImportResponse

View File

@ -0,0 +1,2 @@
Friend Class Results
End Class

View File

@ -0,0 +1,23 @@
Imports System.Runtime.Serialization
Imports DigitalData.Services.EDMIService.Rights
Imports DigitalData.Modules.Language
Namespace Messages
Public Class AccessRightResult
Inherits BaseResult
Public Property Right As AccessRight = AccessRight.VIEW_ONLY
Public Sub New(AccessRight As AccessRight)
MyBase.New()
Right = AccessRight
End Sub
Public Sub New(Exception As Exception)
MyBase.New()
OK = False
ErrorMessage = Exception.Message
End Sub
End Class
End Namespace

View File

@ -1,6 +1,6 @@
Imports System.Runtime.Serialization Imports System.Runtime.Serialization
Namespace Results Namespace Messages
<Serializable> <Serializable>
<DataContract> <DataContract>
<KnownType(GetType(DBNull))> <KnownType(GetType(DBNull))>
@ -14,9 +14,14 @@ Namespace Results
OK = True OK = True
End Sub End Sub
Public Sub New(ErrorMessage As String) Public Sub New(Message As String)
OK = False OK = False
Me.ErrorMessage = ErrorMessage ErrorMessage = Message
End Sub
Public Sub New(Exception As Exception)
OK = False
ErrorMessage = Exception.Message
End Sub End Sub
End Class End Class
End Namespace End Namespace

View File

@ -1,6 +1,6 @@
Imports System.Runtime.Serialization Imports System.Runtime.Serialization
Namespace Results Namespace Messages
<Serializable> <Serializable>
<DataContract> <DataContract>

View File

@ -0,0 +1,7 @@
Public Class Rights
Public Enum AccessRight
VIEW_ONLY = 1
VIEW_EXPORT = 2
FULL = 4
End Enum
End Class

View File

@ -20,20 +20,12 @@ Public Class Scheduler
Private Const JOB_GROUP As String = "DatatableJobs" Private Const JOB_GROUP As String = "DatatableJobs"
Public ReadOnly Property DataSet As DataSet Public Sub New(LogConfig As LogConfig, MSSQL_ECM As MSSQLServer, TableStore As DataSet)
Get
Return _JobListener.Dataset
End Get
End Property
Public Sub New(LogConfig As LogConfig, MSSQL_ECM As MSSQLServer)
_LogConfig = LogConfig _LogConfig = LogConfig
_Logger = LogConfig.GetLogger() _Logger = LogConfig.GetLogger()
_Factory = New StdSchedulerFactory(_Props) _Factory = New StdSchedulerFactory(_Props)
_MSSQL = MSSQL_ECM _MSSQL = MSSQL_ECM
_JobListener = New JobListener(LogConfig, _MSSQL, TableStore)
Dim oDataSet As New DataSet()
_JobListener = New JobListener(LogConfig, _MSSQL, oDataSet)
Logging.LogProvider.SetCurrentLogProvider(New LogProvider(_Logger)) Logging.LogProvider.SetCurrentLogProvider(New LogProvider(_Logger))
End Sub End Sub

View File

@ -60,7 +60,7 @@ Public Class WindowsService
_Archive = New EDMI.File.Archive(_LogConfig) _Archive = New EDMI.File.Archive(_LogConfig)
_Filesystem = New Filesystem.File(_LogConfig) _Filesystem = New Filesystem.File(_LogConfig)
_Global = New GlobalState(_LogConfig, _MSSQL_IDB, _MSSQL_ECM) _Global = New GlobalState(_LogConfig, _MSSQL_IDB, _MSSQL_ECM)
_Scheduler = New Scheduler(_LogConfig, _MSSQL_ECM) _Scheduler = New Scheduler(_LogConfig, _MSSQL_ECM, _Global.TableStore)
_Logger.Debug("Loading Objectstores") _Logger.Debug("Loading Objectstores")
_Global.LoadObjectStores() _Global.LoadObjectStores()
@ -107,15 +107,28 @@ Public Class WindowsService
Private Function StartFirebird() As Firebird Private Function StartFirebird() As Firebird
_Logger.Debug("Connecting to Firebird") _Logger.Debug("Connecting to Firebird")
Dim oFirebird = New Firebird(
_LogConfig, If _Config.Firebird_Datasource = String.Empty Then
_Config.Firebird_Datasource, _Logger.Info("Firebird database not configured. Skipping.")
_Config.Firebird_DatabaseName, Return Nothing
_Config.Firebird_DatabaseUser, End If
_Config.Firebird_DatabasePassword
) Try
_Logger.Info("Database connection established.") Dim oFirebird = New Firebird(
Return oFirebird _LogConfig,
_Config.Firebird_Datasource,
_Config.Firebird_DatabaseName,
_Config.Firebird_DatabaseUser,
_Config.Firebird_DatabasePassword
)
_Logger.Info("Database connection established.")
Return oFirebird
Catch ex As Exception
_Logger.Warn("StartFirebird: Could not connect to firebird database.")
_Logger.Error(ex)
Return Nothing
End Try
End Function End Function
Private Function StartMSSQL_ECM() As MSSQLServer Private Function StartMSSQL_ECM() As MSSQLServer