'''Verwaltet eine hashtable mit den parametern, damit nicht jedes mal ein dbzugriff erfolgt 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" '''Fügt einen neuen Parameter hinzu 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 '''Fügt einen neuen Parameter hinzu 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" '''Gibt den Wert eines Parameters zurück '''Name des Parameters Public Shared Function GetParameterValue(ByVal name As String) As String Return GetParameter(name).Wert End Function '''Gibt den Wert eines Benuzer spzifischen Parameters zurück '''Name des Parameters ''' 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 '''Diese Klasse behandelt eine Configuration spezifische Ausnahme 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