diff --git a/programasqlite/pom.xml b/programasqlite/pom.xml index ca9f653..e83cd05 100644 --- a/programasqlite/pom.xml +++ b/programasqlite/pom.xml @@ -10,4 +10,11 @@ 25 com.mycompany.programasqlite.Programasqlite + + + org.xerial + sqlite-jdbc + 3.41.2.1 + + \ No newline at end of file diff --git a/programasqlite/src/main/java/com/mycompany/programasqlite/Programasqlite.java b/programasqlite/src/main/java/com/mycompany/programasqlite/Programasqlite.java index ba95c9a..78117fd 100644 --- a/programasqlite/src/main/java/com/mycompany/programasqlite/Programasqlite.java +++ b/programasqlite/src/main/java/com/mycompany/programasqlite/Programasqlite.java @@ -4,13 +4,24 @@ package com.mycompany.programasqlite; +import controlador.Controlador; +import java.sql.SQLException; +import modelo.ModeloBD; +import vista.Vista; + /** * * @author antonio */ public class Programasqlite { - public static void main(String[] args) { - System.out.println("Hello World!"); - } + public static void main(String[] args) throws SQLException { + ModeloBD modelo=new ModeloBD(); + Vista vista=new Vista(); + Controlador programa=new Controlador(modelo,vista); + programa.iniciar(); + + + + } } diff --git a/programasqlite/src/main/java/controlador/Controlador.java b/programasqlite/src/main/java/controlador/Controlador.java index 8a6549d..424d2b1 100644 --- a/programasqlite/src/main/java/controlador/Controlador.java +++ b/programasqlite/src/main/java/controlador/Controlador.java @@ -12,19 +12,19 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import javax.swing.table.DefaultTableModel; -import modelo.Modelo; +import modelo.ModeloBD; import vista.Vista; /** * * @author antonio */ -public abstract class Controlador implements ActionListener, WindowListener +public class Controlador implements ActionListener, WindowListener { - private final Modelo modelo; + private final ModeloBD modelo; private final Vista vista; - public Controlador(Modelo _modelo, Vista _vista) + public Controlador(ModeloBD _modelo, Vista _vista) { this.modelo = _modelo; this.vista = _vista; @@ -75,7 +75,8 @@ public abstract class Controlador implements ActionListener, WindowListener } public void iniciar() { - if (modelo.checkConnection()) + modelo.connect(); + if (modelo.conectado()) { modelo.printConnectionStatus(); vista.setTitle("TO-DO APP"); @@ -96,6 +97,8 @@ public abstract class Controlador implements ActionListener, WindowListener @Override public void windowDeiconified(WindowEvent e) { System.out.println("Restaurada"); } @Override public void windowActivated(WindowEvent e) { System.out.println("Activada"); } @Override public void windowDeactivated(WindowEvent e) { System.out.println("Desactivada"); } + @Override public void windowClosing(WindowEvent e) {System.out.println("Desactivada"); } + diff --git a/programasqlite/src/main/java/modelo/Modelo.java b/programasqlite/src/main/java/modelo/Modelo.java deleted file mode 100644 index 24179eb..0000000 --- a/programasqlite/src/main/java/modelo/Modelo.java +++ /dev/null @@ -1,51 +0,0 @@ -package modelo; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; - -public class Modelo - { - - private Connection connection; - - public Modelo() - { - connect(); - } - - private void connect() - { - try - { - // creamos la url deconexión - String url = "jdbc:sqlite:todo.db"; // se puede usar el nombre la ruta o memory (volatil) - // creamos la conexión usando la url anterior - connection = DriverManager.getConnection(url); - - System.out.println("Todo ha ido bien!!!"); - } - catch (SQLException e) - { - System.out.println(e.getMessage()); - } - } - - public boolean checkConnection() - { - return connection != null; - } - - // Establece el estado actual de la conexión - public void printConnectionStatus() - { - if (connection != null) - { - System.out.println("Database connection is active."); - } - else - { - System.out.println("Database connection is not established."); - } - } - } diff --git a/programasqlite/src/main/java/modelo/ModeloBD.java b/programasqlite/src/main/java/modelo/ModeloBD.java new file mode 100644 index 0000000..1967d45 --- /dev/null +++ b/programasqlite/src/main/java/modelo/ModeloBD.java @@ -0,0 +1,166 @@ +package modelo; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class ModeloBD + { + + private Connection connection; + + public ModeloBD() throws SQLException + { + connection=null; + connect(); + borrartabla(); + crearTablaSiNoEstaCreada(); + insertardatosinicialesinventados(); + + } + + public void connect() + { + try + { + // creamos la url deconexión + String url = "jdbc:sqlite:/home/antonio/NetBeansProjects/Unidad1/programasqlite/src/main/java/modelo/todo.db"; // se puede usar el nombre la ruta o memory (volatil) + // creamos la conexión usando la url anterior + connection = DriverManager.getConnection(url); + + System.out.println("Todo ha ido bien!!!"); + } + catch (SQLException e) + { + System.out.println(e.getMessage()); + } + } + + public boolean conectado() + { + return connection != null; + } + + // Establece el estado actual de la conexión + public void printConnectionStatus() + { + if (connection != null) + { + System.out.println("Database connection is active."); + } + else + { + System.out.println("Database connection is not established."); + } + } + public ResultSet getTasks() + { + ResultSet rs = null; + try + { + String query = "SELECT * FROM todo"; + rs = connection.createStatement().executeQuery(query); + } + catch (SQLException e) + { + System.out.println(e.getMessage()); + } + return rs; + + } + + private void crearTablaSiNoEstaCreada() throws SQLException + { + String sentencia="CREATE TABLE IF NOT EXISTS todo (\n" + +" id INTEGER PRIMARY KEY AUTOINCREMENT, -- Identificador único\n" + +" title TEXT NOT NULL, -- Título corto de la tarea\n" + +" description TEXT, -- Descripción opcional\n" + +" is_done INTEGER NOT NULL DEFAULT 0, -- 0 = pendiente, 1 = completada\n" + +" priority INTEGER DEFAULT 0, -- 0=baja, 1=media, 2=alta (tu propia convención)\n" + +" due_date TEXT, -- Fecha límite en ISO-8601, p.ej. '2025-10-13' o '2025-10-13T17:00:00'\n" + +" created_at TEXT NOT NULL DEFAULT (datetime('now')), -- Fecha de creación (UTC)\n" + +" updated_at TEXT -- Última actualización (UTC)\n" + +");"; + try + { + if (!this.conectado()) + this.connect(); + Statement st=this.connection.createStatement(); + st.execute(sentencia); + } + catch (SQLException ex) + { + System.out.println(ex); + } + } + + private void borrartabla() + { + try + { + if (this.conectado()) + { + Statement st = connection.createStatement(); + String dropTableSQL = "DROP TABLE IF EXISTS todo"; + st.execute(dropTableSQL); + System.out.println("Tabla Borrada."); + } + else + { + System.out.println("no se puede borrar la tabla: la conexión no está activa."); + } + } + catch (SQLException e) + { + System.out.println(e.getMessage()); + } + } + + private void insertardatosinicialesinventados() + { + try + { + if (this.conectado()) + { + Statement st = connection.createStatement(); + String sentencia="INSERT INTO todo (title, description, priority, due_date, is_done)\n" + +"VALUES\n" + +" ('Comprar leche', 'Entera, 2L', 0, '2025-10-13', 1),\n" + +" ('Enviar informe mensual', 'Enviar por email a dirección', 1, '2025-10-14', 0),\n" + +" ('Revisar código MVC', 'Refactor del controlador', 2, '2025-10-15', 0),\n" + +" ('Pagar recibo de luz', 'Antes del día 15', 0, '2025-10-16', 0),\n" + +" ('Llamar al dentista', 'Pedir cita revisión', 1, '2025-10-17', 1),\n" + +" ('Planificar examen DAM', 'Temas de sistemas y redes', 2, '2025-10-18', 0),\n" + +" ('Backup base de datos', 'Verificar integridad', 0, '2025-10-19', 0),\n" + +" ('Actualizar NetBeans', 'Comprobar plugins', 1, '2025-10-20', 0),\n" + +" ('Leer artículo sobre SQLite', 'Notas y ejemplos', 2, '2025-10-21', 1),\n" + +" ('Hacer limpieza escritorio', 'Archivos temporales', 0, '2025-10-22', 0),\n" + +" ('Preparar presentación Swing', 'Con demos y ejemplos', 1, '2025-10-23', 0),\n" + +" ('Corregir prácticas', 'Grupo 2º SMR', 2, '2025-10-24', 0),\n" + +" ('Configurar CI/CD', 'Pipeline con GitHub Actions', 0, '2025-10-25', 1),\n" + +" ('Revisar rúbricas', 'Criterios de evaluación', 1, '2025-10-26', 0),\n" + +" ('Actualizar currículo', 'LOMLOE Andalucía', 2, '2025-10-27', 0),\n" + +" ('Hacer pedido de material', 'Rotuladores y papel', 0, '2025-10-28', 0),\n" + +" ('Probar JColorChooser', 'Demostración de colores', 1, '2025-10-29', 1),\n" + +" ('Diseñar interfaz login', 'Usuario y contraseña', 2, '2025-10-30', 0),\n" + +" ('Revisar tests unitarios', 'Cobertura > 80%', 0, '2025-10-31', 0),\n" + +" ('Documentar API', 'Endpoints y modelos', 1, '2025-11-01', 0);"; + st.execute(sentencia); + + + + System.out.println("Datos iniciales insertados correctamente."); + } + else + { + System.out.println("No se pueden insertar datos iniciales: la conexión no está activa."); + } + } + catch (SQLException e) + { + System.out.println("Error al insertar datos iniciales: " + e.getMessage()); + } + } + } diff --git a/programasqlite/src/main/java/modelo/ModeloTask.java b/programasqlite/src/main/java/modelo/ModeloTask.java new file mode 100644 index 0000000..53c4a25 --- /dev/null +++ b/programasqlite/src/main/java/modelo/ModeloTask.java @@ -0,0 +1,113 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package modelo; + +/** + * + * @author antonio + */ +public class ModeloTask + { + private int id; + private String nombre; + private String descripcion; + private int isdone; + private String fechalim; + private String fechacrea; + private String fechaactu; + + public ModeloTask() + { + this.id = 0; + this.nombre = ""; + this.descripcion = ""; + this.isdone = 0; + this.fechalim = ""; + this.fechacrea = ""; + this.fechaactu = ""; + } + + public ModeloTask(int id, String nombre, String descripcion, int isdone, String fechalim, String fechacrea, String fechaactu) + { + this.id = id; + this.nombre = nombre; + this.descripcion = descripcion; + this.isdone = isdone; + this.fechalim = fechalim; + this.fechacrea = fechacrea; + this.fechaactu = fechaactu; + } + + public int getId() + { + return id; + } + + public void setId(int id) + { + this.id = id; + } + + public String getNombre() + { + return nombre; + } + + public void setNombre(String nombre) + { + this.nombre = nombre; + } + + public String getDescripcion() + { + return descripcion; + } + + public void setDescripcion(String descripcion) + { + this.descripcion = descripcion; + } + + public int getIsdone() + { + return isdone; + } + + public void setIsdone(int isdone) + { + this.isdone = isdone; + } + + public String getFechalim() + { + return fechalim; + } + + public void setFechalim(String fechalim) + { + this.fechalim = fechalim; + } + + public String getFechacrea() + { + return fechacrea; + } + + public void setFechacrea(String fechacrea) + { + this.fechacrea = fechacrea; + } + + public String getFechaactu() + { + return fechaactu; + } + + public void setFechaactu(String fechaactu) + { + this.fechaactu = fechaactu; + } + + } diff --git a/programasqlite/src/main/java/modelo/todo.db b/programasqlite/src/main/java/modelo/todo.db new file mode 100644 index 0000000..79e8e13 Binary files /dev/null and b/programasqlite/src/main/java/modelo/todo.db differ diff --git a/programasqlite/src/main/java/vista/Vista.form b/programasqlite/src/main/java/vista/Vista.form index 11fda9e..f0f252c 100644 --- a/programasqlite/src/main/java/vista/Vista.form +++ b/programasqlite/src/main/java/vista/Vista.form @@ -64,6 +64,9 @@ + + + diff --git a/programasqlite/src/main/java/vista/Vista.java b/programasqlite/src/main/java/vista/Vista.java index 493e0ed..d27af9b 100644 --- a/programasqlite/src/main/java/vista/Vista.java +++ b/programasqlite/src/main/java/vista/Vista.java @@ -28,8 +28,7 @@ public class Vista extends javax.swing.JFrame */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents - private void initComponents() - { + private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); @@ -39,15 +38,13 @@ public class Vista extends javax.swing.JFrame setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTable1.setModel(new javax.swing.table.DefaultTableModel( - new Object [][] - { + new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, - new String [] - { + new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); @@ -131,6 +128,6 @@ public class Vista extends javax.swing.JFrame private javax.swing.JButton jButton1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JTable jTable1; + public javax.swing.JTable jTable1; // End of variables declaration//GEN-END:variables } diff --git a/programasqlite/todo.db b/programasqlite/todo.db new file mode 100644 index 0000000..e69de29 diff --git a/programasqlite/your_database.db b/programasqlite/your_database.db new file mode 100644 index 0000000..e69de29