Entwicklung_BLAZOR/InterneDLLs/LambertzEssentials/KernParameterSingelton.cs
2025-08-23 19:30:21 +02:00

126 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using Microsoft.Data.SqlClient;
namespace De.Lambertz.Essentials
{
public class KernParameterSingelton : ISingelton
{
private static KernParameterSingelton me = null;
static readonly object padlock0 = new object(); //Threadsafe!!
//
private String sessionID = null;
private Encoding encoding = Encoding.Default;
//
private Dictionary<String, String> programmVerknüpfungen = null;
private bool istProgrammVerknüpfungenDirty = true;
private KernParameterSingelton()
{
}
public static KernParameterSingelton GetInstance()
{
lock (padlock0)
{
if (me == null)
{
me = new KernParameterSingelton();
SingeltonManager.GetInstance().RegisterSingelton(me);
}
return me;
}
}
public void ManagedReset(string userName)
{
lock (padlock0)
{
me = new KernParameterSingelton();
}
}
public void ManagedKill()
{
lock (padlock0)
{
me = null;
}
}
public String SessionID
{
get { return sessionID; }
set { sessionID = value; }
}
public Encoding Encoding
{
get { return encoding; }
set { encoding = value; }
}
public void ProgrammVerknüpfungenSindDirty()
{
istProgrammVerknüpfungenDirty = true;
}
public String ProgrammVerknüpfung(String endungMitPunkt)
{
if (istProgrammVerknüpfungenDirty)
{
programmVerknüpfungenLaden();
}
String result = null;
if (programmVerknüpfungen.ContainsKey(endungMitPunkt))
{
result = programmVerknüpfungen[endungMitPunkt];
}
return result;
}
public Dictionary<String, String> ProgrammVerknüpfungen
{
get
{
if (istProgrammVerknüpfungenDirty)
{
programmVerknüpfungenLaden();
}
return programmVerknüpfungen;
}
}
private void programmVerknüpfungenLaden()
{
programmVerknüpfungen = new Dictionary<string, string>();
using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringLAMBERTZ()))
{
con.Open();
String sql = "SELECT [Endung], [ProgrammPfad] FROM [Lambertz].[LA].[PortalReProVer] where [RechnerName] = @p1 order by [Endung]";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", EssentialTools.RechnerName());
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
String key = DBTools.DBGetString(reader, 0);
if (!programmVerknüpfungen.ContainsKey(key))
{
programmVerknüpfungen.Add(key, DBTools.DBGetString(reader, 1));
}
}
}
}
istProgrammVerknüpfungenDirty = false;
}
}
}