diff --git a/imagecatalog/MainForm.cs b/imagecatalog/MainForm.cs index 9f4b089..ee2c80e 100644 --- a/imagecatalog/MainForm.cs +++ b/imagecatalog/MainForm.cs @@ -480,15 +480,18 @@ public partial class MainForm Text = "Image Catalog - " + LeggiSoloNomeFile(ilNome); // 2021 - if (int.TryParse(_parametriSetup.LeggiParametroString("ChunkSize"), out var chunkSize)) - { - Model.ChunkSize = chunkSize; - } + Model.ChunkSize = _parametriSetup.LeggiParametro("ChunkSize", Model.ChunkSize); + Model.ThreadsCount = _parametriSetup.LeggiParametro("ThreadsCount", Model.ThreadsCount); + + // if (int.TryParse(_parametriSetup.LeggiParametroString("ChunkSize"), out var chunkSize)) + // { + // Model.ChunkSize = chunkSize; + // } - if (int.TryParse(_parametriSetup.LeggiParametroString("ThreadsCount"), out var threadsCount)) - { - Model.ThreadsCount = threadsCount; - } + // if (int.TryParse(_parametriSetup.LeggiParametroString("ThreadsCount"), out var threadsCount)) + // { + // Model.ThreadsCount = threadsCount; + // } // Model.ChunkSize = int.Parse(_parametriSetup.LeggiParametroString("ChunkSize")); // Model.ThreadsCount = int.Parse(_parametriSetup.LeggiParametroString("ThreadsCount")); diff --git a/imagecatalog/ParametriSetup.cs b/imagecatalog/ParametriSetup.cs index 3558b49..fa9df13 100644 --- a/imagecatalog/ParametriSetup.cs +++ b/imagecatalog/ParametriSetup.cs @@ -1,179 +1,239 @@ using System; using System.Data; -using Microsoft.VisualBasic; namespace ImageCatalog { public class ParametriSetup { - private DataSet _ElencoParametri; - private string _NomeFileSetup; + private DataSet _elencoParametri; + public string NomeFileSetup { get; set; } - public ParametriSetup(string FileSetup) + public ParametriSetup(string fileSetup) { - _ElencoParametri = new DataSet(); - _NomeFileSetup = FileSetup; - if (!string.IsNullOrEmpty(FileSetup)) + _elencoParametri = new DataSet(); + NomeFileSetup = fileSetup; + if (!string.IsNullOrWhiteSpace(fileSetup)) { CaricaParametriSetup(); } } - public ParametriSetup() + public ParametriSetup() : this(string.Empty) { - _ElencoParametri = new DataSet(); - _NomeFileSetup = ""; } public void CaricaParametriSetup() { - _ElencoParametri = LeggiXmlDataSet("Setup", _NomeFileSetup, "Nome"); + if (string.IsNullOrEmpty(NomeFileSetup) || !File.Exists(NomeFileSetup)) + { + _elencoParametri = new DataSet(); + return; + } + + _elencoParametri = LeggiXmlDataSet("Setup", NomeFileSetup, "Nome"); } public void SalvaParametriSetup() { - if (System.IO.File.Exists(_NomeFileSetup) == true) - { - FileSystem.Kill(_NomeFileSetup); - } + if (string.IsNullOrWhiteSpace(NomeFileSetup)) + throw new InvalidOperationException("NomeFileSetup is not set."); - _ElencoParametri.WriteXml(_NomeFileSetup); + // 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 = ""; - } + // 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; + // } + // } + // } - return Risposta; + public string LeggiParametroString(string nomeParametro) + { + return GetRow(nomeParametro)?["Valore"]?.ToString() ?? string.Empty; } public bool LeggiParametroBoolean(string nomeParametro) { - var risposta = ""; + 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 { - var lElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + nomeParametro + "'"); - foreach (var laRiga in lElenco) - risposta = laRiga["Valore"].ToString(); + return (T)Convert.ChangeType(raw, typeof(T)); } catch { - risposta = ""; - } - - switch (risposta.ToUpper() ?? "") - { - case "TRUE": - case "OK": - case "SI": - case "1": - case "YES": - case "VERO": - { - return true; - } - - default: - { - return false; - } + return defaultValue; } } - public void AggiornaParametro(string NomeParametro, object ValoreParametro) + private static DataSet LeggiXmlDataSet(string nomeTabella, string nomeFileXml, string nomeColonnaChiave = "") { - 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")); + var ds = new DataSet(); + ds.ReadXml(nomeFileXml); - // * Aggiunge alla tabella tutte le righe - RigaTmp = TabellaTmp.NewRow(); - RigaTmp["Nome"] = NomeParametro; - RigaTmp["Valore"] = ValoreParametro; - TabellaTmp.Rows.Add(RigaTmp); - _ElencoParametri.Tables.Add(TabellaTmp); - } - else + if (!string.IsNullOrEmpty(nomeColonnaChiave) && ds.Tables.Contains(nomeTabella)) + { + var table = ds.Tables[nomeTabella]; + if (table.Constraints[nomeColonnaChiave] == null) { - 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; - } + table.Constraints.Add(nomeColonnaChiave, table.Columns[nomeColonnaChiave], true); } } - catch - { - } + + return ds; } - private DataTable LeggiXmlDataTable(string NomeTabella, string NomeFileXml, string NomeColonnaChiave = "") + private DataTable EnsureSetupTable() { - // * Crea e Legge il dataset dal file xml - var DataSetXml = new DataSet(); - DataSetXml.ReadXml(NomeFileXml); - - // * Aggiunge il campo chiave - if (!string.IsNullOrEmpty(NomeColonnaChiave)) + if (!_elencoParametri.Tables.Contains("Setup")) { - DataSetXml.Tables[NomeTabella].Constraints.Add(NomeColonnaChiave, DataSetXml.Tables[NomeTabella].Columns[NomeColonnaChiave], true); + var table = new DataTable("Setup"); + table.Columns.Add("Nome", typeof(string)); + table.Columns.Add("Valore", typeof(string)); + _elencoParametri.Tables.Add(table); } - // * Restituisce la risposta - return DataSetXml.Tables[NomeTabella]; + return _elencoParametri.Tables["Setup"]; } - private static DataSet LeggiXmlDataSet(string NomeTabella, string NomeFileXml, string NomeColonnaChiave = "") + private DataRow? GetRow(string nomeParametro) { - // * 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; - } - - public string NomeFileSetup - { - get - { - return _NomeFileSetup; - } - - set - { - _NomeFileSetup = value; - } + 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; + // } +//} } \ No newline at end of file