You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
4.0 KiB
136 lines
4.0 KiB
|
|
'''<summary>Verwaltet eine hashtable mit den parametern, damit nicht jedes mal ein dbzugriff erfolgt</summary>
|
|
Public Class Config
|
|
|
|
#Region "Members"
|
|
Private Shared _parameterList As New Hashtable() 'parameter für alle benutzer (benutzerNr = 0)
|
|
Private Shared _userList As New Hashtable() 'liste für benutzer
|
|
#End Region
|
|
|
|
#Region "Private Functions"
|
|
'''<summary>Fügt einen neuen Parameter hinzu</summary>
|
|
Private Shared Sub Add(ByVal p As Parameter)
|
|
Try
|
|
_parameterList.Add(p.Name, p)
|
|
Catch ex As Exception
|
|
TKBLib.Errorhandling.TraceHelper.Msg("EDOKALib.BF.Config.Add", ex.Message + " " + ex.StackTrace, TraceLevel.Error)
|
|
Throw ex
|
|
End Try
|
|
End Sub
|
|
|
|
'''<summary>Fügt einen neuen Parameter hinzu</summary>
|
|
Private Shared Sub AddUserParam(ByVal p As Parameter)
|
|
Try
|
|
Dim h As Hashtable
|
|
|
|
h = _userList(p.BenutzerNr)
|
|
If h Is Nothing Then 'noch keine param für diesen benutzer
|
|
h = New Hashtable() 'neue param liste für benutzer erstellen
|
|
h.Add(p.Name, p) 'parameter hinzufügen
|
|
_userList.Add(p.BenutzerNr, h) 'parameter liste zur benutzerliste hinzufügen
|
|
Else 'user hat eine liste
|
|
h.Add(p.Name, p) 'parameter hinzufügen
|
|
End If
|
|
Catch ex As Exception
|
|
TKBLib.Errorhandling.TraceHelper.Msg("EDOKALib.BF.Config.AddUserParam", ex.Message + " " + ex.StackTrace, TraceLevel.Error)
|
|
Throw ex
|
|
End Try
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "Public Functions"
|
|
'''<summary>Gibt den Wert eines Parameters zurück</summary>
|
|
'''<param name="name">Name des Parameters</param>
|
|
Public Shared Function GetParameterValue(ByVal name As String) As String
|
|
Return GetParameter(name).Wert
|
|
End Function
|
|
|
|
'''<summary>Gibt den Wert eines Benuzer spzifischen Parameters zurück</summary>
|
|
'''<param name="name">Name des Parameters</param>
|
|
'''<param name="benutzerNr"></param>
|
|
Public Shared Function GetParameterValue(ByVal name As String, ByVal benutzerNr As Integer) As String
|
|
If benutzerNr = 0 Then
|
|
Return GetParameter(name).Wert
|
|
Else
|
|
Return GetUserParameter(name, benutzerNr).Wert
|
|
End If
|
|
End Function
|
|
|
|
Public Shared Function GetParameter(ByVal name As String) As Parameter
|
|
Try
|
|
Dim p As Parameter
|
|
|
|
p = _parameterList(name) 'suche nach param
|
|
|
|
If Not p Is Nothing Then
|
|
Return p 'gefunden & return
|
|
Else
|
|
'try to load from db
|
|
p = New Parameter(name, 0)
|
|
If p.ParameterId <> 0 Then
|
|
Add(p) 'zur hashtabelle hinzufügen
|
|
Return p
|
|
Else
|
|
Throw New ConfigException("Parameter wurde nicht gefunden!") 'weder in der db noch in der hashtable gefunden
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
TKBLib.Errorhandling.TraceHelper.Msg("EDOKALib.BF.Config.GetParameter", ex.Message + " " + ex.StackTrace, TraceLevel.Error)
|
|
Throw ex
|
|
End Try
|
|
End Function
|
|
|
|
Public Shared Function GetUserParameter(ByVal name As String, ByVal benutzerNr As Integer) As Parameter
|
|
Try
|
|
Dim p As Parameter
|
|
Dim h As Hashtable
|
|
|
|
If benutzerNr = 0 Then
|
|
Return GetParameter(name)
|
|
End If
|
|
|
|
h = _userList(benutzerNr) 'benutzer parameterliste suchen
|
|
If h Is Nothing Then
|
|
h = New Hashtable() 'nicht gefunden neuerstellen
|
|
End If
|
|
p = h(name) 'nach parameter suchen
|
|
|
|
If Not p Is Nothing Then
|
|
Return p 'parameter gefunden und zurückgeben
|
|
Else
|
|
'try to load from db
|
|
p = New Parameter(name, benutzerNr)
|
|
If p.ParameterId <> 0 Then
|
|
AddUserParam(p)
|
|
Return p
|
|
Else
|
|
Throw New ConfigException("Parameter wurde nicht gefunden!") 'weder in der db noch in der hashtable gefunden
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
TKBLib.Errorhandling.TraceHelper.Msg("EDOKALib.BF.Config.GetParameter(...)", ex.Message + " " + ex.StackTrace, TraceLevel.Error)
|
|
Throw ex
|
|
End Try
|
|
End Function
|
|
#End Region
|
|
|
|
End Class
|
|
|
|
'''<summary>Diese Klasse behandelt eine Configuration spezifische Ausnahme</summary>
|
|
Public Class ConfigException
|
|
Inherits Exception
|
|
|
|
Dim _message As String
|
|
|
|
Public Sub New(ByVal message As String)
|
|
_message = message
|
|
End Sub
|
|
|
|
Public Overrides ReadOnly Property Message() As String
|
|
Get
|
|
Return _message
|
|
End Get
|
|
End Property
|
|
|
|
End Class
|