Modernized xml reading and saving

This commit is contained in:
Marco 2025-09-19 10:56:39 +02:00
commit c722d39eb1
2 changed files with 187 additions and 124 deletions

View file

@ -480,15 +480,18 @@ public partial class MainForm
Text = "Image Catalog - " + LeggiSoloNomeFile(ilNome); Text = "Image Catalog - " + LeggiSoloNomeFile(ilNome);
// 2021 // 2021
if (int.TryParse(_parametriSetup.LeggiParametroString("ChunkSize"), out var chunkSize)) Model.ChunkSize = _parametriSetup.LeggiParametro("ChunkSize", Model.ChunkSize);
{ Model.ThreadsCount = _parametriSetup.LeggiParametro("ThreadsCount", Model.ThreadsCount);
Model.ChunkSize = chunkSize;
}
if (int.TryParse(_parametriSetup.LeggiParametroString("ThreadsCount"), out var threadsCount)) // if (int.TryParse(_parametriSetup.LeggiParametroString("ChunkSize"), out var chunkSize))
{ // {
Model.ThreadsCount = threadsCount; // Model.ChunkSize = chunkSize;
} // }
// if (int.TryParse(_parametriSetup.LeggiParametroString("ThreadsCount"), out var threadsCount))
// {
// Model.ThreadsCount = threadsCount;
// }
// Model.ChunkSize = int.Parse(_parametriSetup.LeggiParametroString("ChunkSize")); // Model.ChunkSize = int.Parse(_parametriSetup.LeggiParametroString("ChunkSize"));
// Model.ThreadsCount = int.Parse(_parametriSetup.LeggiParametroString("ThreadsCount")); // Model.ThreadsCount = int.Parse(_parametriSetup.LeggiParametroString("ThreadsCount"));

View file

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