Initial
This commit is contained in:
135
Backup/BusinessFacade/Config.vb
Normal file
135
Backup/BusinessFacade/Config.vb
Normal file
@@ -0,0 +1,135 @@
|
||||
|
||||
'''<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
|
||||
Reference in New Issue
Block a user