using System; using System.Data; namespace ImageCatalog { public class ParametriSetup { private DataSet _elencoParametri; public string NomeFileSetup { get; set; } public ParametriSetup(string fileSetup) { _elencoParametri = new DataSet(); NomeFileSetup = fileSetup; if (!string.IsNullOrWhiteSpace(fileSetup)) { CaricaParametriSetup(); } } public ParametriSetup() : this(string.Empty) { } public void CaricaParametriSetup() { if (string.IsNullOrEmpty(NomeFileSetup) || !File.Exists(NomeFileSetup)) { _elencoParametri = new DataSet(); return; } _elencoParametri = LeggiXmlDataSet("Setup", NomeFileSetup, "Nome"); } public void SalvaParametriSetup() { if (string.IsNullOrWhiteSpace(NomeFileSetup)) throw new InvalidOperationException("NomeFileSetup is not set."); // overwrite without FileSystem.Kill _elencoParametri.WriteXml(NomeFileSetup, XmlWriteMode.WriteSchema); } // public string LeggiParametroString(string NomeParametro) // { // string Risposta = ""; // try // { // var LElenco = _elencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'"); // foreach (var LaRiga in LElenco) // Risposta = LaRiga["Valore"].ToString(); // } // catch // { // Risposta = ""; // } // // return Risposta; // } // // public bool LeggiParametroBoolean(string nomeParametro) // { // var risposta = ""; // try // { // var lElenco = _elencoParametri.Tables["Setup"].Select("Nome='" + nomeParametro + "'"); // foreach (var laRiga in lElenco) // risposta = laRiga["Valore"].ToString(); // } // catch // { // risposta = ""; // } // // switch (risposta.ToUpper() ?? "") // { // case "TRUE": // case "OK": // case "SI": // case "1": // case "YES": // case "VERO": // { // return true; // } // // default: // { // return false; // } // } // } public string LeggiParametroString(string nomeParametro) { return GetRow(nomeParametro)?["Valore"]?.ToString() ?? string.Empty; } public bool LeggiParametroBoolean(string nomeParametro) { var raw = LeggiParametroString(nomeParametro); return raw?.ToUpperInvariant() switch { "TRUE" or "OK" or "SI" or "1" or "YES" or "VERO" => true, _ => false }; } public void AggiornaParametro(string nomeParametro, object valoreParametro) { var table = EnsureSetupTable(); var rows = table.Select($"Nome='{nomeParametro.Replace("'", "''")}'"); if (rows.Length == 0) { var newRow = table.NewRow(); newRow["Nome"] = nomeParametro; newRow["Valore"] = valoreParametro?.ToString() ?? string.Empty; table.Rows.Add(newRow); } else { rows[0]["Valore"] = valoreParametro?.ToString() ?? string.Empty; } } public T LeggiParametro(string nomeParametro, T defaultValue = default!) { var raw = LeggiParametroString(nomeParametro); if (string.IsNullOrEmpty(raw)) return defaultValue; try { return (T)Convert.ChangeType(raw, typeof(T)); } catch { return defaultValue; } } private static DataSet LeggiXmlDataSet(string nomeTabella, string nomeFileXml, string nomeColonnaChiave = "") { var ds = new DataSet(); ds.ReadXml(nomeFileXml); if (!string.IsNullOrEmpty(nomeColonnaChiave) && ds.Tables.Contains(nomeTabella)) { var table = ds.Tables[nomeTabella]; if (table.Constraints[nomeColonnaChiave] == null) { table.Constraints.Add(nomeColonnaChiave, table.Columns[nomeColonnaChiave], true); } } return ds; } private DataTable EnsureSetupTable() { if (!_elencoParametri.Tables.Contains("Setup")) { var table = new DataTable("Setup"); table.Columns.Add("Nome", typeof(string)); table.Columns.Add("Valore", typeof(string)); _elencoParametri.Tables.Add(table); } return _elencoParametri.Tables["Setup"]; } private DataRow? GetRow(string nomeParametro) { if (!_elencoParametri.Tables.Contains("Setup")) return null; var rows = _elencoParametri.Tables["Setup"] .Select($"Nome='{nomeParametro.Replace("'", "''")}'"); return rows.FirstOrDefault(); } } // public void AggiornaParametro(string NomeParametro, object ValoreParametro) // { // try // { // if (_elencoParametri.Tables["Setup"] is null) // { // var TabellaTmp = new DataTable("Setup"); // DataRow RigaTmp; // DataColumn LaColonna; // LaColonna = TabellaTmp.Columns.Add("Nome", Type.GetType("System.String")); // LaColonna = TabellaTmp.Columns.Add("Valore", Type.GetType("System.String")); // // // * Aggiunge alla tabella tutte le righe // RigaTmp = TabellaTmp.NewRow(); // RigaTmp["Nome"] = NomeParametro; // RigaTmp["Valore"] = ValoreParametro; // TabellaTmp.Rows.Add(RigaTmp); // _elencoParametri.Tables.Add(TabellaTmp); // } // else // { // var LElenco = _elencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'"); // if (LElenco.Length == 0) // { // DataRow LaRiga; // LaRiga = _elencoParametri.Tables["Setup"].NewRow(); // LaRiga["Nome"] = NomeParametro; // LaRiga["Valore"] = ValoreParametro; // _elencoParametri.Tables["Setup"].Rows.Add(LaRiga); // } // else // { // LElenco[0]["Valore"] = ValoreParametro; // } // } // } // catch // { // } // } // private static DataSet LeggiXmlDataSet(string NomeTabella, string NomeFileXml, string NomeColonnaChiave = "") // { // // * Crea e Legge il dataset dal file xml // var DataSetXml = new DataSet(); // DataSetXml.ReadXml(NomeFileXml); // // // * Aggiunge il campo chiave // if (!string.IsNullOrEmpty(NomeColonnaChiave)) // { // DataSetXml.Tables[NomeTabella].Constraints.Add(NomeColonnaChiave, DataSetXml.Tables[NomeTabella].Columns[NomeColonnaChiave], true); // } // // // * Restituisce la risposta // return DataSetXml; // } //} }