diff --git a/src/main/java/danielcortes/xyz/controllers/CajaController.java b/src/main/java/danielcortes/xyz/controllers/CajaController.java index 3f3cf0c..0d142c9 100644 --- a/src/main/java/danielcortes/xyz/controllers/CajaController.java +++ b/src/main/java/danielcortes/xyz/controllers/CajaController.java @@ -31,6 +31,8 @@ import danielcortes.xyz.models.TipoEgresoDAO; import danielcortes.xyz.views.EgresosView; import javax.swing.*; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; public class CajaController { private EgresosView view; @@ -56,21 +58,33 @@ public class CajaController { private void fillEgresosTable() { for(Egreso egreso: this.egresoDAO.findAll()){ - TipoEgreso tipoEgreso = tipoEgresoDAO.findById(egreso.getTipo()).get(0); view.getEgresosTableModel().addRow(egreso); } } private void setUpViewEvents(){ - this.view.getGuardarButton().addActionListener(e -> { - String nro = this.view.getNroField().getText(); - String descripcion = this.view.getDescripcionField().getText(); - String valor = this.view.getValorField().getText(); - TipoEgreso tipo = (TipoEgreso) this.view.getTipoCombo().getSelectedItem(); - Egreso egreso = this.createEgreso(nro, descripcion, valor, tipo.getId()); - this.view.getEgresosTableModel().addRow(egreso); - this.updateTotalEgresos(); - }); + this.view.getGuardarButton().addActionListener(e -> guardarActionListener()); + this.view.getEliminarButton().addActionListener(e -> eliminarActionListener()); + } + + private void guardarActionListener(){ + String nro = this.view.getNroField().getText(); + String descripcion = this.view.getDescripcionField().getText(); + String valor = this.view.getValorField().getText(); + TipoEgreso tipo = (TipoEgreso) this.view.getTipoCombo().getSelectedItem(); + Egreso egreso = this.createEgreso(nro, descripcion, valor, tipo); + this.view.getEgresosTableModel().addRow(egreso); + this.updateTotalEgresos(); + } + + private void eliminarActionListener(){ + int selectedID = this.view.getEgresosTable().getSelectedRow(); + System.out.println(selectedID); + if(selectedID >= 0) { + Egreso egreso = this.view.getEgresosTableModel().getEgreso(selectedID); + this.view.getEgresosTableModel().removeRow(selectedID); + this.egresoDAO.deleteEgreso(egreso); + } } private void updateTotalEgresos(){ @@ -78,7 +92,7 @@ public class CajaController { this.view.getTotalEgresosField().setText(String.valueOf(total)); } - private Egreso createEgreso(String nro, String descripcion, String valor, int tipo){ + private Egreso createEgreso(String nro, String descripcion, String valor, TipoEgreso tipo){ Egreso egreso = new Egreso(); egreso.setValor(Integer.valueOf(valor)); egreso.setDescripcion(descripcion); diff --git a/src/main/java/danielcortes/xyz/models/Egreso.java b/src/main/java/danielcortes/xyz/models/Egreso.java index 7c96ea5..dd5ca0e 100644 --- a/src/main/java/danielcortes/xyz/models/Egreso.java +++ b/src/main/java/danielcortes/xyz/models/Egreso.java @@ -30,9 +30,9 @@ public class Egreso { private String nro; private String descripcion; private int valor; - private int tipo; + private TipoEgreso tipo; - public Egreso(int id, String nro, String descripcion, int valor, int tipo) { + public Egreso(int id, String nro, String descripcion, int valor, TipoEgreso tipo) { this.id = id; this.nro = nro; this.descripcion = descripcion; @@ -40,7 +40,7 @@ public class Egreso { this.tipo = tipo; } - public Egreso(String nro, String descripcion, int valor, int tipo) { + public Egreso(String nro, String descripcion, int valor, TipoEgreso tipo) { this.nro = nro; this.descripcion = descripcion; this.valor = valor; @@ -81,11 +81,11 @@ public class Egreso { this.valor = valor; } - public int getTipo() { + public TipoEgreso getTipo() { return tipo; } - public void setTipo(int tipo) { + public void setTipo(TipoEgreso tipo) { this.tipo = tipo; } } diff --git a/src/main/java/danielcortes/xyz/models/mysql/MysqlEgresoDAO.java b/src/main/java/danielcortes/xyz/models/mysql/MysqlEgresoDAO.java index 0d6ca14..7f5a074 100644 --- a/src/main/java/danielcortes/xyz/models/mysql/MysqlEgresoDAO.java +++ b/src/main/java/danielcortes/xyz/models/mysql/MysqlEgresoDAO.java @@ -27,6 +27,8 @@ package danielcortes.xyz.models.mysql; import danielcortes.xyz.data.MysqlConnection; import danielcortes.xyz.models.Egreso; import danielcortes.xyz.models.EgresoDAO; +import danielcortes.xyz.models.TipoEgreso; +import danielcortes.xyz.models.TipoEgresoDAO; import java.sql.Connection; import java.sql.PreparedStatement; @@ -110,7 +112,7 @@ public class MysqlEgresoDAO implements EgresoDAO { ps.setString(1,egreso.getNro()); ps.setString(2,egreso.getDescripcion()); ps.setInt(3,egreso.getValor()); - ps.setInt(4,egreso.getTipo()); + ps.setInt(4,egreso.getTipo().getId()); updates = ps.executeUpdate(); ps.close(); conn.close(); @@ -130,7 +132,7 @@ public class MysqlEgresoDAO implements EgresoDAO { ps.setString(1,egreso.getNro()); ps.setString(2,egreso.getDescripcion()); ps.setInt(3,egreso.getValor()); - ps.setInt(4,egreso.getTipo()); + ps.setInt(4,egreso.getTipo().getId()); ps.setInt(5, egreso.getId()); updates = ps.executeUpdate(); ps.close(); @@ -179,16 +181,20 @@ public class MysqlEgresoDAO implements EgresoDAO { return total; } - private List EgresosFromResultSet(ResultSet rs) throws SQLException { ArrayList egresoList = new ArrayList<>(); while(rs.next()){ + int tipoEgresoId = rs.getInt("tipo_id"); + TipoEgresoDAO tipoEgresoDAO = new MysqlTipoEgresoDAO(); + TipoEgreso tipoEgreso = tipoEgresoDAO.findById(tipoEgresoId).get(0); + Egreso egreso = new Egreso(); + egreso.setId(rs.getInt("id")); egreso.setNro(rs.getString("nro")); egreso.setDescripcion(rs.getString("descripcion")); egreso.setValor(rs.getInt("valor")); - egreso.setTipo(rs.getInt("tipo_id")); + egreso.setTipo(tipoEgreso); egresoList.add(egreso); } return egresoList; diff --git a/src/main/java/danielcortes/xyz/views/EgresosView.form b/src/main/java/danielcortes/xyz/views/EgresosView.form index fbc64a3..6d29f25 100644 --- a/src/main/java/danielcortes/xyz/views/EgresosView.form +++ b/src/main/java/danielcortes/xyz/views/EgresosView.form @@ -3,12 +3,12 @@ - + - + @@ -82,7 +82,7 @@ - + @@ -95,15 +95,23 @@ - + - + + + + + + + + + - + @@ -111,12 +119,12 @@ - + - + - + @@ -125,5 +133,7 @@ + + diff --git a/src/main/java/danielcortes/xyz/views/EgresosView.java b/src/main/java/danielcortes/xyz/views/EgresosView.java index e936f91..a783b21 100644 --- a/src/main/java/danielcortes/xyz/views/EgresosView.java +++ b/src/main/java/danielcortes/xyz/views/EgresosView.java @@ -42,6 +42,9 @@ public class EgresosView { private JTextField totalEgresosField; private JComboBox tipoCombo; + + private JButton eliminarButton; + private EgresosTableModel egresosTableModel; private void createUIComponents() { @@ -52,6 +55,7 @@ public class EgresosView { egresosTableModel = new EgresosTableModel(); egresosTable = new JTable(egresosTableModel); egresosTable.setAutoCreateRowSorter(true); + egresosTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); } public JPanel getContentPanel() { @@ -62,6 +66,10 @@ public class EgresosView { return guardarButton; } + public JButton getEliminarButton() { + return eliminarButton; + } + public JTextField getValorField() { return valorField; } @@ -82,7 +90,16 @@ public class EgresosView { return tipoCombo; } + public JTable getEgresosTable() { + return egresosTable; + } + + public void setEgresosTable(JTable egresosTable) { + this.egresosTable = egresosTable; + } + public EgresosTableModel getEgresosTableModel() { return egresosTableModel; } + } diff --git a/src/main/java/danielcortes/xyz/views/components/EgresosTableModel.java b/src/main/java/danielcortes/xyz/views/components/EgresosTableModel.java index eb08013..b74d0ee 100644 --- a/src/main/java/danielcortes/xyz/views/components/EgresosTableModel.java +++ b/src/main/java/danielcortes/xyz/views/components/EgresosTableModel.java @@ -56,6 +56,11 @@ public class EgresosTableModel extends AbstractTableModel { this.fireTableRowsInserted(0,getRowCount()-1); } + public void removeRow(int row){ + this.rows.remove(row); + this.fireTableRowsDeleted(0,getRowCount()-1); + } + public Object getValueAt(int row, int col) { switch (col){ case 0: @@ -69,4 +74,8 @@ public class EgresosTableModel extends AbstractTableModel { } return null; } + + public Egreso getEgreso(int row){ + return rows.get(row); + } }