From 24313ada54c15ef5347c90b9fa012eee9d1a7515 Mon Sep 17 00:00:00 2001 From: Miguel Date: Mon, 15 Apr 2024 13:38:56 +0200 Subject: [PATCH] Probado - Reducido parametros de ROI --- EstadoTrabajo.cs | 19 +++++++++ ItemPersistente.cs | 98 ++++++++++++++++++++++++++++++++++++++++++ ListaPersistente.cs | 102 +------------------------------------------- MainWindow.xaml | 29 +++++-------- MainWindow.xaml.cs | 49 ++++++++------------- ROI.cs | 12 +----- 6 files changed, 150 insertions(+), 159 deletions(-) create mode 100644 ItemPersistente.cs diff --git a/EstadoTrabajo.cs b/EstadoTrabajo.cs index 72c9887..3c18096 100644 --- a/EstadoTrabajo.cs +++ b/EstadoTrabajo.cs @@ -38,5 +38,24 @@ namespace ROIEditor { return Path.Combine(strDirectorioTrabajo, "roieditor.db"); } + + public string PNG_Folther_Path() + { + return strDirectorioTrabajo; + } + + public string Json_Extension_Path() + { + string jsonPath = Path.ChangeExtension(NombreImagenEditando, ".json"); + var imagePath = Path.Combine(strDirectorioTrabajo, jsonPath); + return imagePath; + } + public string PNG_Extension_Path() + { + string jsonPath = Path.ChangeExtension(NombreImagenEditando, ".png"); + var imagePath = Path.Combine(PNG_Folther_Path(), jsonPath); + return imagePath; + } + } } diff --git a/ItemPersistente.cs b/ItemPersistente.cs new file mode 100644 index 0000000..c449889 --- /dev/null +++ b/ItemPersistente.cs @@ -0,0 +1,98 @@ +using System.Text.Json; +using Microsoft.Data.Sqlite; + +namespace ROIEditor +{ + public class ItemPersistente where T : new() + { + private readonly string connectionString; + private readonly string tableName; + private T data; // Ahora 'data' es un objeto de tipo T + public string Clave; + + public ItemPersistente(string dbPath, string tableName) + { + connectionString = $"Data Source={dbPath}"; + this.tableName = tableName; + InitializeDatabase(); + data = new T(); // Inicializa 'data' con el constructor por defecto de T + } + + private void InitializeDatabase() + { + using (var connection = new SqliteConnection(connectionString)) + { + connection.Open(); + var command = connection.CreateCommand(); + command.CommandText = $@" + CREATE TABLE IF NOT EXISTS {tableName} ( + Id INTEGER PRIMARY KEY AUTOINCREMENT, + Clave TEXT UNIQUE, + SerializedData TEXT + )"; + command.ExecuteNonQuery(); + } + } + + public void Save() { Save(Clave); } + + public void Save(string clave) + { + if (clave == null) return; + Clave = clave; + + string serializedData = JsonSerializer.Serialize(data); + using (var connection = new SqliteConnection(connectionString)) + { + connection.Open(); + var command = connection.CreateCommand(); + command.CommandText = $@" + INSERT INTO {tableName} (Clave, SerializedData) + VALUES ($Clave, $SerializedData) + ON CONFLICT(Clave) DO UPDATE SET + SerializedData = excluded.SerializedData"; + command.Parameters.AddWithValue("$Clave", clave); + command.Parameters.AddWithValue("$SerializedData", serializedData); + command.ExecuteNonQuery(); + } + } + + public bool Load() { return Load(Clave); } + + public bool Load(string clave) + { + if (clave == null) return false; + Clave = clave; + + using (var connection = new SqliteConnection(connectionString)) + { + connection.Open(); + var command = connection.CreateCommand(); + command.CommandText = $"SELECT SerializedData FROM {tableName} WHERE Clave = $Clave"; + command.Parameters.AddWithValue("$Clave", clave); + using (var reader = command.ExecuteReader()) + { + if (reader.Read()) + { + string serializedData = reader.GetString(0); + data = JsonSerializer.Deserialize(serializedData); + return true; + } + data = new(); + return false; + } + } + } + + public T Get() + { + return data; + } + + public void Set(T newData) + { + data = newData; + } + } + +} diff --git a/ListaPersistente.cs b/ListaPersistente.cs index 0c42acb..03f9c49 100644 --- a/ListaPersistente.cs +++ b/ListaPersistente.cs @@ -1,12 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Collections.Generic; -using System.Text.Json; +using System.Text.Json; using Microsoft.Data.Sqlite; -using System.ComponentModel; namespace ROIEditor { @@ -130,97 +123,6 @@ namespace ROIEditor } } - public class ItemPersistente where T : new() - { - private readonly string connectionString; - private readonly string tableName; - private T data; // Ahora 'data' es un objeto de tipo T - public string Clave; - - public ItemPersistente(string dbPath, string tableName) - { - connectionString = $"Data Source={dbPath}"; - this.tableName = tableName; - InitializeDatabase(); - data = new T(); // Inicializa 'data' con el constructor por defecto de T - } - - private void InitializeDatabase() - { - using (var connection = new SqliteConnection(connectionString)) - { - connection.Open(); - var command = connection.CreateCommand(); - command.CommandText = $@" - CREATE TABLE IF NOT EXISTS {tableName} ( - Id INTEGER PRIMARY KEY AUTOINCREMENT, - Clave TEXT UNIQUE, - SerializedData TEXT - )"; - command.ExecuteNonQuery(); - } - } - - public void Save() { Save(Clave); } - - public void Save(string clave) - { - if (clave == null) return; - Clave = clave; - - string serializedData = JsonSerializer.Serialize(data); - using (var connection = new SqliteConnection(connectionString)) - { - connection.Open(); - var command = connection.CreateCommand(); - command.CommandText = $@" - INSERT INTO {tableName} (Clave, SerializedData) - VALUES ($Clave, $SerializedData) - ON CONFLICT(Clave) DO UPDATE SET - SerializedData = excluded.SerializedData"; - command.Parameters.AddWithValue("$Clave", clave); - command.Parameters.AddWithValue("$SerializedData", serializedData); - command.ExecuteNonQuery(); - } - } - - public bool Load() { return Load(Clave); } - - public bool Load(string clave) - { - if (clave == null) return false; - Clave = clave; - - using (var connection = new SqliteConnection(connectionString)) - { - connection.Open(); - var command = connection.CreateCommand(); - command.CommandText = $"SELECT SerializedData FROM {tableName} WHERE Clave = $Clave"; - command.Parameters.AddWithValue("$Clave", clave); - using (var reader = command.ExecuteReader()) - { - if (reader.Read()) - { - string serializedData = reader.GetString(0); - data = JsonSerializer.Deserialize(serializedData); - return true; - } - data = new(); - return false; - } - } - } - - public T Get() - { - return data; - } - - public void Set(T newData) - { - data = newData; - } - } - + } diff --git a/MainWindow.xaml b/MainWindow.xaml index 4c70983..8abd2fe 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ROIEditor" mc:Ignorable="d" - Title="Editor de ROI" Height="1000" Width="1600"> + Title="Editor de ROI" Height="1000" Width="1600" HorizontalAlignment="Center" VerticalAlignment="Center">