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 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 ProgrammVerknüpfungen { get { if (istProgrammVerknüpfungenDirty) { programmVerknüpfungenLaden(); } return programmVerknüpfungen; } } private void programmVerknüpfungenLaden() { programmVerknüpfungen = new Dictionary(); 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; } } }