Creada seccion de ingresos completa.

This commit is contained in:
Daniel Cortes
2018-12-24 20:42:57 -03:00
parent 1fe2ee082b
commit ece503afc1
23 changed files with 1512 additions and 242 deletions

View File

@@ -24,20 +24,36 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
drop table if exists egresos; drop table if exists egresos;
drop table if exists tipos_egreso; drop table if exists tipos_egreso;
drop table if exists ingresos;
drop table if exists tipos_ingreso;
create table tipos_egreso(
id int(10) unsigned primary key auto_increment,
nombre varchar(191) not null
);
create table egresos( create table egresos(
id int(10) unsigned primary key auto_increment, id int(10) unsigned primary key auto_increment,
nro varchar(191) not null, nro varchar(191) not null,
descripcion varchar(191) not null, descripcion varchar(191) not null,
valor int(10) not null, valor int(10) not null,
tipo_id int(10) not null tipo_egreso_id int(10) unsigned not null,
foreign key fk_tipo_id(tipo_egreso_id) references tipos_egreso(id) on update cascade on delete restrict
); );
create table tipos_egreso(
create table tipos_ingreso(
id int(10) unsigned primary key auto_increment, id int(10) unsigned primary key auto_increment,
nombre varchar(191) not null nombre varchar(191) not null
); );
create table ingresos(
id int(10) unsigned primary key auto_increment,
valor int(10) not null,
tipo_ingreso_id int(10) unsigned not null,
foreign key fk_tipo_ingreso(tipo_ingreso_id) references tipos_ingreso(id) on update cascade on delete restrict
);
insert into tipos_egreso (nombre) values insert into tipos_egreso (nombre) values
('Guia Materia Prima'), ('Guia Materia Prima'),
('Factura Materia Prima'), ('Factura Materia Prima'),
@@ -50,3 +66,9 @@ insert into tipos_egreso (nombre) values
('Anticipo Personal'), ('Anticipo Personal'),
('Retiros Gerencia'), ('Retiros Gerencia'),
('Otro'); ('Otro');
insert into tipos_ingreso (nombre) values
('Boletas Fiscales'),
('Boletas Manuales'),
('Facturas'),
('Guias')

View File

@@ -40,12 +40,13 @@ public class Main {
ManagerView view = new ManagerView(); ManagerView view = new ManagerView();
ManagerController managerController = new ManagerController(view);
JFrame frame = new JFrame("Caja"); JFrame frame = new JFrame("Caja");
frame.setContentPane(view.getContentPanel()); frame.setContentPane(view.getContentPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1300,700); frame.setSize(1300,700);
frame.setLocationRelativeTo(null); frame.setLocationRelativeTo(null);
ManagerController managerController = new ManagerController(view);
frame.setVisible(true); frame.setVisible(true);

View File

@@ -24,19 +24,18 @@
package danielcortes.xyz.controllers; package danielcortes.xyz.controllers;
import danielcortes.xyz.models.Egreso; import danielcortes.xyz.models.egreso.Egreso;
import danielcortes.xyz.models.EgresoDAO; import danielcortes.xyz.models.egreso.EgresoDAO;
import danielcortes.xyz.models.TipoEgreso; import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
import danielcortes.xyz.models.TipoEgresoDAO; import danielcortes.xyz.models.tipo_egreso.TipoEgresoDAO;
import danielcortes.xyz.views.EgresosView; import danielcortes.xyz.views.EgresosView;
import danielcortes.xyz.views.components.EgresosTableModel;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.KeyAdapter;
import java.awt.event.ComponentAdapter; import java.awt.event.KeyEvent;
import java.awt.event.ComponentEvent;
public class EgresosController { public class EgresosController {
private EgresosView view; private EgresosView view;
@@ -49,11 +48,12 @@ public class EgresosController {
this.tipoEgresoDAO = tipoEgresoDAO; this.tipoEgresoDAO = tipoEgresoDAO;
this.setUpViewEvents(); this.setUpViewEvents();
this.fillEgresosTable(); this.fillEgresosTable();
this.fillEgresosTipo(); this.fillTipoEgresoCombo();
this.updateTotalEgresos(); this.updateTotalEgresos();
this.updateEliminarButton();
} }
private void fillEgresosTipo() { private void fillTipoEgresoCombo() {
JComboBox<TipoEgreso> tipoCombo = view.getTipoCombo(); JComboBox<TipoEgreso> tipoCombo = view.getTipoCombo();
for(TipoEgreso tipoEgreso : this.tipoEgresoDAO.findAll()){ for(TipoEgreso tipoEgreso : this.tipoEgresoDAO.findAll()){
tipoCombo.addItem(tipoEgreso); tipoCombo.addItem(tipoEgreso);
@@ -61,31 +61,30 @@ public class EgresosController {
} }
private void fillEgresosTable() { private void fillEgresosTable() {
EgresosTableModel egresosTableModel = view.getEgresosTableModel();
for(Egreso egreso: this.egresoDAO.findAll()){ for(Egreso egreso: this.egresoDAO.findAll()){
view.getEgresosTableModel().addRow(egreso); egresosTableModel.addRow(egreso);
} }
} }
private void setUpViewEvents(){ private void setUpViewEvents(){
this.view.getEgresosTable().getSelectionModel().addListSelectionListener(this::onSelectTableRowListener); this.view.getEgresosTable().getSelectionModel().addListSelectionListener(e -> onSelectTableRowListener());
this.view.getGuardarButton().addActionListener(this::guardarActionListener); this.view.getGuardarButton().addActionListener(e -> guardarActionListener());
this.view.getEliminarButton().addActionListener(this::eliminarActionListener); this.view.getEliminarButton().addActionListener(e -> eliminarActionListener());
this.view.getDescripcionField().addActionListener(this::guardarActionListener); this.view.getDescripcionField().addActionListener(e -> guardarActionListener());
this.view.getNroField().addActionListener(this::guardarActionListener); this.view.getNroField().addActionListener(e -> guardarActionListener());
this.view.getValorField().addActionListener(this::guardarActionListener); this.view.getValorField().addActionListener(e -> guardarActionListener());
this.view.getTipoCombo().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
guardarActionListener();
}
}
});
} }
private void eliminarActionListener(ActionEvent e){ private void guardarActionListener(){
int selectedID = this.view.getEgresosTable().getSelectedRow();
if(selectedID >= 0) {
Egreso egreso = this.view.getEgresosTableModel().getEgreso(selectedID);
this.view.getEgresosTableModel().removeRow(selectedID);
this.egresoDAO.deleteEgreso(egreso);
this.updateTotalEgresos();
}
}
private void guardarActionListener(ActionEvent e){
String nro = this.view.getNroField().getText(); String nro = this.view.getNroField().getText();
String descripcion = this.view.getDescripcionField().getText(); String descripcion = this.view.getDescripcionField().getText();
String valor = this.view.getValorField().getText(); String valor = this.view.getValorField().getText();
@@ -98,7 +97,18 @@ public class EgresosController {
} }
} }
private void onSelectTableRowListener(ListSelectionEvent e){ private void eliminarActionListener(){
int selectedID = this.view.getEgresosTable().getSelectedRow();
if(selectedID >= 0) {
Egreso egreso = this.view.getEgresosTableModel().getEgreso(selectedID);
this.view.getEgresosTableModel().removeRow(selectedID);
this.egresoDAO.deleteEgreso(egreso);
this.updateTotalEgresos();
this.updateEliminarButton();
}
}
private void onSelectTableRowListener(){
this.view.getEliminarButton().setEnabled(true); this.view.getEliminarButton().setEnabled(true);
} }
@@ -107,6 +117,14 @@ public class EgresosController {
this.view.getTotalEgresosField().setText(String.valueOf(total)); this.view.getTotalEgresosField().setText(String.valueOf(total));
} }
private void updateEliminarButton() {
if(this.view.getEgresosTable().getSelectedRow()>=0){
this.view.getEliminarButton().setEnabled(true);
}else{
this.view.getEliminarButton().setEnabled(false);
}
}
private Egreso createEgreso(String nro, String descripcion, String valor, TipoEgreso tipo){ private Egreso createEgreso(String nro, String descripcion, String valor, TipoEgreso tipo){
Egreso egreso = new Egreso(); Egreso egreso = new Egreso();
egreso.setValor(Integer.valueOf(valor)); egreso.setValor(Integer.valueOf(valor));
@@ -182,6 +200,12 @@ public class EgresosController {
return false; return false;
} }
if(valor.length() > 10){
this.view.getErrorValor().setText("El numero ingresado es demasiado largo");
this.view.getErrorValor().setVisible(true);
return false;
}
return true; return true;
} }

View File

@@ -0,0 +1,194 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.controllers;
import danielcortes.xyz.models.ingreso.Ingreso;
import danielcortes.xyz.models.ingreso.IngresoDAO;
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO;
import danielcortes.xyz.views.IngresosView;
import danielcortes.xyz.views.components.IngresosTableModel;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.xml.bind.SchemaOutputResolver;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class IngresosController {
private IngresosView view;
private IngresoDAO ingresoDAO;
private TipoIngresoDAO tipoIngresoDAO;
public IngresosController(IngresosView view, IngresoDAO ingresoDAO, TipoIngresoDAO tipoIngresoDAO) {
this.view = view;
this.ingresoDAO = ingresoDAO;
this.tipoIngresoDAO = tipoIngresoDAO;
this.fillTipoIngresoCombo();
this.fillIngresosTable();
this.setupViewEvents();
this.updateTotalIngresos();
this.updateEliminarButton();
}
private void fillTipoIngresoCombo() {
JComboBox<TipoIngreso> tipoCombo = this.view.getTipoCombo();
for (TipoIngreso tipo : this.tipoIngresoDAO.findAll()) {
tipoCombo.addItem(tipo);
}
}
private void fillIngresosTable() {
IngresosTableModel ingresosTableModel = this.view.getIngresosTableModel();
for (Ingreso ingreso : this.ingresoDAO.findAll()) {
ingresosTableModel.addRow(ingreso);
}
}
private void setupViewEvents() {
this.view.getIngresosTable().getSelectionModel().addListSelectionListener(e -> onSelectTableRowListener());
this.view.getGuardarButton().addActionListener(e -> guardarActionListener());
this.view.getValorField().addActionListener(e -> guardarActionListener());
this.view.getEliminarButton().addActionListener(e -> eliminarActionListener());
this.view.getTipoCombo().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
guardarActionListener();
}
}
});
}
private void guardarActionListener() {
String valor = this.view.getValorField().getText();
TipoIngreso tipoIngreso = (TipoIngreso) this.view.getTipoCombo().getSelectedItem();
if(this.validateInput(valor, tipoIngreso)){
Ingreso ingreso = this.createIngreso(valor,tipoIngreso);
this.view.getIngresosTableModel().addRow(ingreso);
this.clearInputs();
this.updateTotalIngresos();
}
}
private void eliminarActionListener() {
int selectedId = this.view.getIngresosTable().getSelectedRow();
if(selectedId >= 0){
Ingreso ingreso = this.view.getIngresosTableModel().getIngreso(selectedId);
this.view.getIngresosTableModel().removeRow(selectedId);
this.ingresoDAO.deleteIngreso(ingreso);
this.updateTotalIngresos();
this.updateEliminarButton();
}
}
private void onSelectTableRowListener(){
this.view.getEliminarButton().setEnabled(true);
}
private void updateTotalIngresos(){
int total = this.ingresoDAO.getTotalIngreso();
this.view.getTotalIngresoField().setText(String.valueOf(total));
}
private void updateEliminarButton() {
if(this.view.getIngresosTable().getSelectedRow()>=0){
this.view.getEliminarButton().setEnabled(true);
}else{
this.view.getEliminarButton().setEnabled(false);
}
}
private Ingreso createIngreso(String valor, TipoIngreso tipoIngreso) {
Ingreso ingreso = new Ingreso();
ingreso.setTipoIngreso(tipoIngreso);
ingreso.setValor(Integer.valueOf(valor));
this.ingresoDAO.insertIngreso(ingreso);
return ingreso;
}
private boolean validateInput(String valor, TipoIngreso tipoIngreso) {
this.hideErrorMessages();
boolean valorValidation = this.validateValor(valor);
boolean tipoIngresoValidation = this.validateTipoIngreso(tipoIngreso);
return valorValidation && tipoIngresoValidation;
}
private boolean validateValor(String valor) {
if (valor == null) {
this.view.getErrorValor().setText("Hubo un problema con los datos");
this.view.getErrorValor().setVisible(true);
return false;
}
valor = valor.trim();
if (valor.isEmpty()) {
this.view.getErrorValor().setText("El campo esta vacio");
this.view.getErrorValor().setVisible(true);
return false;
}
if (!valor.chars().allMatch(Character::isDigit)) {
this.view.getErrorValor().setText("Deben ser numeros");
this.view.getErrorValor().setVisible(true);
return false;
}
if(valor.length() > 10){
this.view.getErrorValor().setText("El numero ingresado es demasiado largo");
this.view.getErrorValor().setVisible(true);
return false;
}
return true;
}
private boolean validateTipoIngreso(TipoIngreso tipoIngreso) {
if (tipoIngreso == null) {
this.view.getErrorTipoIngreso().setText("Hubo un problema con los datos");
this.view.getErrorTipoIngreso().setVisible(true);
return false;
}
return true;
}
private void hideErrorMessages() {
this.view.getErrorTipoIngreso().setVisible(false);
this.view.getErrorValor().setVisible(false);
}
private void clearInputs() {
this.view.getTipoCombo().setSelectedIndex(0);
this.view.getValorField().setText("");
}
}

View File

@@ -24,14 +24,19 @@
package danielcortes.xyz.controllers; package danielcortes.xyz.controllers;
import danielcortes.xyz.models.EgresoDAO; import danielcortes.xyz.models.egreso.EgresoDAO;
import danielcortes.xyz.models.TipoEgresoDAO; import danielcortes.xyz.models.ingreso.IngresoDAO;
import danielcortes.xyz.models.mysql.MysqlEgresoDAO; import danielcortes.xyz.models.ingreso.MysqlIngresoDAO;
import danielcortes.xyz.models.mysql.MysqlTipoEgresoDAO; import danielcortes.xyz.models.tipo_egreso.TipoEgresoDAO;
import danielcortes.xyz.models.egreso.MysqlEgresoDAO;
import danielcortes.xyz.models.tipo_egreso.MysqlTipoEgresoDAO;
import danielcortes.xyz.models.tipo_ingreso.MysqlTipoIngresoDAO;
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO;
import danielcortes.xyz.views.EgresosView; import danielcortes.xyz.views.EgresosView;
import danielcortes.xyz.views.IngresosView;
import danielcortes.xyz.views.ManagerView; import danielcortes.xyz.views.ManagerView;
import javax.swing.*;
import java.awt.*; import java.awt.*;
@@ -51,13 +56,24 @@ public class ManagerController {
}); });
this.view.getIngresosButton().addActionListener(e -> { this.view.getIngresosButton().addActionListener(e -> {
CardLayout layout = (CardLayout) this.view.getCardPanel().getLayout(); CardLayout layout = (CardLayout) this.view.getCardPanel().getLayout();
layout.show(this.view.getCardPanel(),"NONE"); layout.show(this.view.getCardPanel(),"INGRESOS");
}); });
} }
private void loadCardContents(){ private void loadCardContents(){
this.view.getCardPanel().add(new JPanel(), "NONE"); //this.view.getCardPanel().add(new JPanel(), "NONE");
this.loadEgresosView(); this.loadEgresosView();
this.loadIngresosView();
}
private void loadIngresosView() {
IngresosView ingresosView = new IngresosView();
IngresoDAO ingresoDAO = new MysqlIngresoDAO();
TipoIngresoDAO tipoIngresoDAO = new MysqlTipoIngresoDAO();
this.view.getCardPanel().add(ingresosView.getContentPanel(), "INGRESOS");
IngresosController ingresosController = new IngresosController(ingresosView,ingresoDAO,tipoIngresoDAO);
} }
private void loadEgresosView(){ private void loadEgresosView(){

View File

@@ -22,7 +22,9 @@
* SOFTWARE. * SOFTWARE.
*/ */
package danielcortes.xyz.models; package danielcortes.xyz.models.egreso;
import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
public class Egreso { public class Egreso {

View File

@@ -22,7 +22,9 @@
* SOFTWARE. * SOFTWARE.
*/ */
package danielcortes.xyz.models; package danielcortes.xyz.models.egreso;
import danielcortes.xyz.models.egreso.Egreso;
import java.util.List; import java.util.List;

View File

@@ -22,13 +22,12 @@
* SOFTWARE. * SOFTWARE.
*/ */
package danielcortes.xyz.models.mysql; package danielcortes.xyz.models.egreso;
import danielcortes.xyz.data.MysqlConnection; import danielcortes.xyz.data.MysqlConnection;
import danielcortes.xyz.models.Egreso; import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
import danielcortes.xyz.models.EgresoDAO; import danielcortes.xyz.models.tipo_egreso.TipoEgresoDAO;
import danielcortes.xyz.models.TipoEgreso; import danielcortes.xyz.models.tipo_egreso.MysqlTipoEgresoDAO;
import danielcortes.xyz.models.TipoEgresoDAO;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@@ -52,7 +51,7 @@ public class MysqlEgresoDAO implements EgresoDAO {
PreparedStatement ps = conn.prepareStatement("select * from egresos"); PreparedStatement ps = conn.prepareStatement("select * from egresos");
ResultSet rs = ps.executeQuery(); ResultSet rs = ps.executeQuery();
egresoList = this.EgresosFromResultSet(rs); egresoList = this.egresosFromResultSet(rs);
rs.close(); rs.close();
ps.close(); ps.close();
@@ -72,7 +71,7 @@ public class MysqlEgresoDAO implements EgresoDAO {
ps.setInt(1,id); ps.setInt(1,id);
ResultSet rs = ps.executeQuery(); ResultSet rs = ps.executeQuery();
egresoList = this.EgresosFromResultSet(rs); egresoList = this.egresosFromResultSet(rs);
rs.close(); rs.close();
ps.close(); ps.close();
@@ -92,7 +91,7 @@ public class MysqlEgresoDAO implements EgresoDAO {
ps.setString(1, nro); ps.setString(1, nro);
ResultSet rs = ps.executeQuery(); ResultSet rs = ps.executeQuery();
egresoList = this.EgresosFromResultSet(rs); egresoList = this.egresosFromResultSet(rs);
rs.close(); rs.close();
ps.close(); ps.close();
@@ -108,13 +107,19 @@ public class MysqlEgresoDAO implements EgresoDAO {
int updates; int updates;
try { try {
Connection conn = mysqlConnection.getConnection(); Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("insert into egresos (nro, descripcion, valor, tipo_id) values (?,?,?,?)"); PreparedStatement ps = conn.prepareStatement("insert into egresos (nro, descripcion, valor, tipo_egreso_id) values (?,?,?,?)");
ps.setString(1,egreso.getNro()); ps.setString(1,egreso.getNro());
ps.setString(2,egreso.getDescripcion()); ps.setString(2,egreso.getDescripcion());
ps.setInt(3,egreso.getValor()); ps.setInt(3,egreso.getValor());
ps.setInt(4,egreso.getTipo().getId()); ps.setInt(4,egreso.getTipo().getId());
updates = ps.executeUpdate(); updates = ps.executeUpdate();
ps.close(); ps.close();
ps = conn.prepareStatement("select last_insert_id()");
ResultSet rs = ps.executeQuery();
rs.next();
egreso.setId(rs.getInt(1));
conn.close(); conn.close();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@@ -128,7 +133,7 @@ public class MysqlEgresoDAO implements EgresoDAO {
int updates; int updates;
try { try {
Connection conn = mysqlConnection.getConnection(); Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("update egresos set nro = ?, descripcion = ?, valor = ?, tipo_id = ? where id = ? "); PreparedStatement ps = conn.prepareStatement("update egresos set nro = ?, descripcion = ?, valor = ?, tipo_egreso_id = ? where id = ? ");
ps.setString(1,egreso.getNro()); ps.setString(1,egreso.getNro());
ps.setString(2,egreso.getDescripcion()); ps.setString(2,egreso.getDescripcion());
ps.setInt(3,egreso.getValor()); ps.setInt(3,egreso.getValor());
@@ -181,10 +186,10 @@ public class MysqlEgresoDAO implements EgresoDAO {
return total; return total;
} }
private List<Egreso> EgresosFromResultSet(ResultSet rs) throws SQLException { private List<Egreso> egresosFromResultSet(ResultSet rs) throws SQLException {
ArrayList<Egreso> egresoList = new ArrayList<>(); ArrayList<Egreso> egresoList = new ArrayList<>();
while(rs.next()){ while(rs.next()){
int tipoEgresoId = rs.getInt("tipo_id"); int tipoEgresoId = rs.getInt("tipo_egreso_id");
TipoEgresoDAO tipoEgresoDAO = new MysqlTipoEgresoDAO(); TipoEgresoDAO tipoEgresoDAO = new MysqlTipoEgresoDAO();
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(tipoEgresoId).get(0); TipoEgreso tipoEgreso = tipoEgresoDAO.findById(tipoEgresoId).get(0);

View File

@@ -0,0 +1,70 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.models.ingreso;
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
public class Ingreso {
private int id;
private int valor;
private TipoIngreso tipoIngreso;
public Ingreso(int id, int valor, TipoIngreso tipoIngreso ) {
this.id = id;
this.valor = valor;
this.tipoIngreso = tipoIngreso;
}
public Ingreso( int valor, TipoIngreso tipoIngreso) {
this.valor = valor;
this.tipoIngreso = tipoIngreso;
}
public Ingreso(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public TipoIngreso getTipoIngreso() {
return tipoIngreso;
}
public void setTipoIngreso(TipoIngreso tipoIngreso) {
this.tipoIngreso = tipoIngreso;
}
public int getValor() {
return valor;
}
public void setValor(int valor) {
this.valor = valor;
}
}

View File

@@ -22,36 +22,19 @@
* SOFTWARE. * SOFTWARE.
*/ */
package danielcortes.xyz.models;
public class TipoEgreso { package danielcortes.xyz.models.ingreso;
private int id;
private String nombre;
public TipoEgreso(int id, String nombre) { import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
this.nombre = nombre;
}
public TipoEgreso(){} import java.util.List;
public String getNombre() { public interface IngresoDAO {
return nombre; List<Ingreso> findAll();
} List<Ingreso> findById(int id);
List<Ingreso> findByTipoIngreso(TipoIngreso tipoIngreso);
public void setNombre(String nombre) { boolean insertIngreso(Ingreso ingreso);
this.nombre = nombre; boolean updateIngreso(Ingreso ingreso);
} boolean deleteIngreso(Ingreso ingreso);
int getTotalIngreso();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString(){
return this.nombre;
}
} }

View File

@@ -0,0 +1,203 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.models.ingreso;
import danielcortes.xyz.data.MysqlConnection;
import danielcortes.xyz.models.tipo_ingreso.MysqlTipoIngresoDAO;
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class MysqlIngresoDAO implements IngresoDAO{
private MysqlConnection mysqlConnection;
public MysqlIngresoDAO(){
this.mysqlConnection = new MysqlConnection();
}
@Override
public List<Ingreso> findAll() {
List<Ingreso> ingresosList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from ingresos");
ResultSet rs = ps.executeQuery();
ingresosList = this.ingresosFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return ingresosList;
}
@Override
public List<Ingreso> findById(int id) {
List<Ingreso> ingresosList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from ingresos where id = ?");
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
ingresosList = this.ingresosFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return ingresosList;
}
@Override
public List<Ingreso> findByTipoIngreso(TipoIngreso tipoIngreso) {
List<Ingreso> ingresosList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select ingresos.* from ingresos inner join tipos_ingreso on (ingresos.tipo_ingreso_id = tipos_ingreso.id) where ingresos.tipo_ingreso_id = ?");
ps.setInt(1, tipoIngreso.getId());
ResultSet rs = ps.executeQuery();
ingresosList = this.ingresosFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return ingresosList;
}
@Override
public boolean insertIngreso(Ingreso ingreso) {
int updates;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("insert into ingresos (valor, tipo_ingreso_id) values (?,?)");
ps.setInt(1, ingreso.getValor());
ps.setInt(2, ingreso.getTipoIngreso().getId());
updates = ps.executeUpdate();
ps.close();
ps = conn.prepareStatement("select last_insert_id()");
ResultSet rs = ps.executeQuery();
rs.next();
ingreso.setId(rs.getInt(1));
conn.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return updates > 0;
}
@Override
public boolean updateIngreso(Ingreso ingreso) {
int updates;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("update ingresos set valor = ? , tipo_ingreso_id = ? where id = ?");
ps.setInt(1,ingreso.getValor());
ps.setInt(2, ingreso.getTipoIngreso().getId());
ps.setInt(3, ingreso.getId());
updates = ps.executeUpdate();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return updates > 0;
}
@Override
public boolean deleteIngreso(Ingreso ingreso) {
int updates;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("delete from ingresos where id = ?");
ps.setInt(1,ingreso.getId());
updates = ps.executeUpdate();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return updates > 0;
}
@Override
public int getTotalIngreso() {
int total = 0;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select sum(valor) from ingresos");
ResultSet rs = ps.executeQuery();
rs.next();
total = rs.getInt(1);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return total;
}
private List<Ingreso> ingresosFromResultSet(ResultSet rs) throws SQLException {
ArrayList<Ingreso> ingresosList = new ArrayList<>();
while(rs.next()){
int tipoIngresoId = rs.getInt("tipo_ingreso_id");
TipoIngresoDAO tipoEgresoDAO = new MysqlTipoIngresoDAO();
TipoIngreso tipoIngreso = tipoEgresoDAO.findById(tipoIngresoId).get(0);
Ingreso ingreso = new Ingreso();
ingreso.setId(rs.getInt("id"));
ingreso.setValor(rs.getInt("valor"));
ingreso.setTipoIngreso(tipoIngreso);
ingresosList.add(ingreso);
}
return ingresosList;
}
}

View File

@@ -22,12 +22,9 @@
* SOFTWARE. * SOFTWARE.
*/ */
package danielcortes.xyz.models.mysql; package danielcortes.xyz.models.tipo_egreso;
import danielcortes.xyz.data.MysqlConnection; import danielcortes.xyz.data.MysqlConnection;
import danielcortes.xyz.models.Egreso;
import danielcortes.xyz.models.TipoEgreso;
import danielcortes.xyz.models.TipoEgresoDAO;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;

View File

@@ -0,0 +1,86 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.models.tipo_egreso;
public class TipoEgreso {
private int id;
private String nombre;
public TipoEgreso(int id, String nombre) {
this.id = id;
this.nombre = nombre;
}
public TipoEgreso(String nombre) {
this.nombre = nombre;
}
public TipoEgreso(){}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString(){
return this.nombre;
}
}

View File

@@ -0,0 +1,60 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.models.tipo_egreso;
import java.util.List;
public interface TipoEgresoDAO {
List<TipoEgreso> findAll();
List<TipoEgreso> findById(int id);
List<TipoEgreso> findByNombre(String nombre);
boolean insertTipoEgreso(TipoEgreso tipoEgreso);
boolean updateTipoEgreso(TipoEgreso tipoEgreso);
boolean deleteTipoEgreso(TipoEgreso tipoEgreso);
}

View File

@@ -0,0 +1,128 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.models.tipo_ingreso;
import danielcortes.xyz.data.MysqlConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class MysqlTipoIngresoDAO implements TipoIngresoDAO{
private MysqlConnection mysqlConnection;
public MysqlTipoIngresoDAO(){
this.mysqlConnection = new MysqlConnection();
}
@Override
public List<TipoIngreso> findAll() {
List<TipoIngreso> tiposIngresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from tipos_ingreso");
ResultSet rs = ps.executeQuery();
tiposIngresoList = this.tiposIngresoFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return tiposIngresoList;
}
@Override
public List<TipoIngreso> findById(int id) {
List<TipoIngreso> tiposIngresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from tipos_ingreso where id = ?");
ps.setInt(1,id);
ResultSet rs = ps.executeQuery();
tiposIngresoList = this.tiposIngresoFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return tiposIngresoList;
}
@Override
public List<TipoIngreso> findByNombre(String nombre) {
List<TipoIngreso> tiposIngresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from tipos_ingreso where nombre = ?");
ps.setString(1,nombre);
ResultSet rs = ps.executeQuery();
tiposIngresoList = this.tiposIngresoFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return tiposIngresoList;
}
@Override
public boolean insertTipoIngreso(TipoIngreso tipoEgreso) {
return false;
}
@Override
public boolean updateTipoIngreso(TipoIngreso tipoEgreso) {
return false;
}
@Override
public boolean deleteTipoIngreso(TipoIngreso tipoEgreso) {
return false;
}
private List<TipoIngreso> tiposIngresoFromResultSet(ResultSet rs) throws SQLException {
ArrayList<TipoIngreso> tiposIngresoList = new ArrayList<>();
while(rs.next()){
TipoIngreso tipoIngreso = new TipoIngreso();
tipoIngreso.setId(rs.getInt("id"));
tipoIngreso.setNombre(rs.getString("nombre"));
tiposIngresoList.add(tipoIngreso);
}
return tiposIngresoList;
}
}

View File

@@ -0,0 +1,87 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.models.tipo_ingreso;
public class TipoIngreso {
private int id;
private String nombre;
public TipoIngreso(int id, String nombre) {
this.id = id;
this.nombre = nombre;
}
public TipoIngreso(String nombre) {
this.nombre = nombre;
}
public TipoIngreso() {
}
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;
}
@Override
public String toString() {
return this.nombre;
}
}

View File

@@ -22,15 +22,15 @@
* SOFTWARE. * SOFTWARE.
*/ */
package danielcortes.xyz.models; package danielcortes.xyz.models.tipo_ingreso;
import java.util.List; import java.util.List;
public interface TipoEgresoDAO { public interface TipoIngresoDAO {
List<TipoEgreso> findAll(); List<TipoIngreso> findAll();
List<TipoEgreso> findById(int id); List<TipoIngreso> findById(int id);
List<TipoEgreso> findByNombre(String nombre); List<TipoIngreso> findByNombre(String nombre);
boolean insertTipoEgreso(TipoEgreso tipoEgreso); boolean insertTipoIngreso(TipoIngreso tipoEgreso);
boolean updateTipoEgreso(TipoEgreso tipoEgreso); boolean updateTipoIngreso(TipoIngreso tipoEgreso);
boolean deleteTipoEgreso(TipoEgreso tipoEgreso); boolean deleteTipoIngreso(TipoIngreso tipoEgreso);
} }

View File

@@ -8,7 +8,7 @@
<properties/> <properties/>
<border type="none"/> <border type="none"/>
<children> <children>
<grid id="9047a" binding="egresosPanel" layout-manager="GridLayoutManager" row-count="5" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <grid id="9047a" layout-manager="GridLayoutManager" row-count="3" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="10" left="10" bottom="10" right="10"/> <margin top="10" left="10" bottom="10" right="10"/>
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
@@ -16,6 +16,43 @@
<properties/> <properties/>
<border type="etched" title="Egresos"/> <border type="etched" title="Egresos"/>
<children> <children>
<scrollpane id="65bec">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="c0fff" class="javax.swing.JTable" binding="egresosTable" custom-create="true">
<constraints/>
<properties/>
</component>
</children>
</scrollpane>
<grid id="98ec" layout-manager="GridLayoutManager" row-count="3" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="c5b18" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="N°"/>
</properties>
</component>
<component id="da489" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Descripcion"/>
</properties>
</component>
<component id="d8e90" class="javax.swing.JTextField" binding="descripcionField"> <component id="d8e90" class="javax.swing.JTextField" binding="descripcionField">
<constraints> <constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"> <grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
@@ -24,6 +61,14 @@
</constraints> </constraints>
<properties/> <properties/>
</component> </component>
<component id="1af5c" class="javax.swing.JTextField" binding="nroField">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties/>
</component>
<component id="696ee" class="javax.swing.JTextField" binding="valorField"> <component id="696ee" class="javax.swing.JTextField" binding="valorField">
<constraints> <constraints>
<grid row="1" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"> <grid row="1" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
@@ -32,14 +77,6 @@
</constraints> </constraints>
<properties/> <properties/>
</component> </component>
<component id="da489" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Descripcion"/>
</properties>
</component>
<component id="f50cf" class="javax.swing.JLabel"> <component id="f50cf" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
@@ -48,30 +85,6 @@
<text value="Valor"/> <text value="Valor"/>
</properties> </properties>
</component> </component>
<component id="1af5c" class="javax.swing.JTextField" binding="nroField">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties/>
</component>
<component id="c5b18" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="N°"/>
</properties>
</component>
<component id="5602d" class="javax.swing.JComboBox" binding="tipoCombo">
<constraints>
<grid row="1" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties/>
</component>
<component id="daec8" class="javax.swing.JLabel"> <component id="daec8" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="0" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <grid row="0" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
@@ -80,53 +93,13 @@
<text value="Tipo"/> <text value="Tipo"/>
</properties> </properties>
</component> </component>
<scrollpane id="65bec"> <component id="5602d" class="javax.swing.JComboBox" binding="tipoCombo">
<constraints> <constraints>
<grid row="3" column="0" row-span="1" col-span="4" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <grid row="1" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false">
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="c0fff" class="javax.swing.JTable" binding="egresosTable" custom-create="true">
<constraints/>
<properties/>
</component>
</children>
</scrollpane>
<component id="c5738" class="javax.swing.JButton" binding="guardarButton" default-binding="true">
<constraints>
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="&amp;Añadir"/>
</properties>
</component>
<component id="3442d" class="javax.swing.JLabel">
<constraints>
<grid row="4" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Total Egresos:"/>
</properties>
</component>
<component id="2b8d0" class="javax.swing.JTextField" binding="totalEgresosField">
<constraints>
<grid row="4" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/> <preferred-size width="150" height="-1"/>
</grid> </grid>
</constraints> </constraints>
<properties> <properties/>
<editable value="false"/>
</properties>
</component>
<component id="ee598" class="javax.swing.JButton" binding="eliminarButton" default-binding="true">
<constraints>
<grid row="4" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<enabled value="false"/>
<text value="&amp;Eliminar"/>
</properties>
</component> </component>
<component id="33b8a" class="javax.swing.JLabel" binding="errorNumero"> <component id="33b8a" class="javax.swing.JLabel" binding="errorNumero">
<constraints> <constraints>
@@ -174,6 +147,82 @@
</component> </component>
</children> </children>
</grid> </grid>
<grid id="2cb6e" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<grid id="68df1" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="c5738" class="javax.swing.JButton" binding="guardarButton" default-binding="true">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties>
<text value="&amp;Añadir"/>
</properties>
</component>
<component id="ee598" class="javax.swing.JButton" binding="eliminarButton" default-binding="true">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties>
<enabled value="false"/>
<text value="&amp;Eliminar"/>
</properties>
</component>
</children>
</grid>
<hspacer id="99a08">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<grid id="3715e" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="3442d" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Total Egresos:"/>
</properties>
</component>
<component id="2b8d0" class="javax.swing.JTextField" binding="totalEgresosField">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties>
<editable value="false"/>
</properties>
</component>
</children>
</grid>
</children>
</grid>
</children>
</grid>
</children> </children>
</grid> </grid>
<inspectionSuppressions> <inspectionSuppressions>

View File

@@ -24,16 +24,13 @@
package danielcortes.xyz.views; package danielcortes.xyz.views;
import danielcortes.xyz.models.TipoEgreso; import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
import danielcortes.xyz.views.components.EgresosTableModel; import danielcortes.xyz.views.components.EgresosTableModel;
import javax.swing.*; import javax.swing.*;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import java.awt.*;
public class EgresosView { public class EgresosView {
public JPanel contentPanel; public JPanel contentPanel;
private JPanel egresosPanel;
private JTable egresosTable; private JTable egresosTable;
private JButton guardarButton; private JButton guardarButton;
private JTextField valorField; private JTextField valorField;
@@ -98,10 +95,6 @@ public class EgresosView {
return egresosTable; return egresosTable;
} }
public void setEgresosTable(JTable egresosTable) {
this.egresosTable = egresosTable;
}
public EgresosTableModel getEgresosTableModel() { public EgresosTableModel getEgresosTableModel() {
return egresosTableModel; return egresosTableModel;
} }

View File

@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="danielcortes.xyz.views.IngresosView">
<grid id="27dc6" binding="contentPanel" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="15" left="15" bottom="15" right="15"/>
<constraints>
<xy x="20" y="20" width="766" height="411"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<grid id="e14bc" layout-manager="GridLayoutManager" row-count="3" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="10" left="10" bottom="10" right="10"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="etched" title="Ingresos"/>
<children>
<scrollpane id="bb19b">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="1ba21" class="javax.swing.JTable" binding="ingresosTable" custom-create="true">
<constraints/>
<properties/>
</component>
</children>
</scrollpane>
<grid id="7fa26" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="50b32" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Tipo"/>
</properties>
</component>
<component id="d0439" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Valor"/>
</properties>
</component>
<component id="375b0" class="javax.swing.JTextField" binding="valorField">
<constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties/>
</component>
<component id="b5d8c" class="javax.swing.JComboBox" binding="tipoCombo">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties>
<model/>
</properties>
</component>
<component id="d11b0" class="javax.swing.JLabel" binding="errorTipoIngreso">
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<foreground color="-65536"/>
<text value="Label"/>
<visible value="false"/>
</properties>
</component>
<component id="4b7ff" class="javax.swing.JLabel" binding="errorValor">
<constraints>
<grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<foreground color="-65536"/>
<text value="Label"/>
<visible value="false"/>
</properties>
</component>
</children>
</grid>
<grid id="ea865" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<grid id="bec48" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="ed411" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Total Ingresos"/>
</properties>
</component>
<component id="d9f4a" class="javax.swing.JTextField" binding="totalIngresoField">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties/>
</component>
</children>
</grid>
<grid id="6385a" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="98602" class="javax.swing.JButton" binding="guardarButton" default-binding="true">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties>
<text value="&amp;Añadir"/>
</properties>
</component>
<component id="c9542" class="javax.swing.JButton" binding="eliminarButton" default-binding="true">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties>
<text value="Eliminar"/>
</properties>
</component>
</children>
</grid>
<hspacer id="7b168">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
</children>
</grid>
</children>
</grid>
</children>
</grid>
<inspectionSuppressions>
<suppress inspection="I18nForm"/>
<suppress inspection="FormSpellChecking"/>
</inspectionSuppressions>
</form>

View File

@@ -0,0 +1,95 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.views;
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
import danielcortes.xyz.views.components.IngresosTableModel;
import javax.swing.*;
public class IngresosView {
private JPanel contentPanel;
private JTable ingresosTable;
private JButton guardarButton;
private JButton eliminarButton;
private JTextField totalIngresoField;
private JTextField valorField;
private JComboBox<TipoIngreso> tipoCombo;
private JLabel errorTipoIngreso;
private JLabel errorValor;
private IngresosTableModel ingresosTableModel;
private void createUIComponents() {
this.createIngresosTable();
}
private void createIngresosTable(){
this.ingresosTableModel = new IngresosTableModel();
this.ingresosTable = new JTable(ingresosTableModel);
this.ingresosTable.setAutoCreateRowSorter(true);
this.ingresosTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
public JPanel getContentPanel() {
return contentPanel;
}
public JTable getIngresosTable() {
return ingresosTable;
}
public JButton getGuardarButton() {
return guardarButton;
}
public JButton getEliminarButton() {
return eliminarButton;
}
public JTextField getTotalIngresoField() {
return totalIngresoField;
}
public JTextField getValorField() {
return valorField;
}
public JComboBox<TipoIngreso> getTipoCombo() {
return tipoCombo;
}
public IngresosTableModel getIngresosTableModel() {
return ingresosTableModel;
}
public JLabel getErrorTipoIngreso() {
return errorTipoIngreso;
}
public JLabel getErrorValor() {
return errorValor;
}
}

View File

@@ -24,7 +24,7 @@
package danielcortes.xyz.views.components; package danielcortes.xyz.views.components;
import danielcortes.xyz.models.Egreso; import danielcortes.xyz.models.egreso.Egreso;
import javax.swing.table.AbstractTableModel; import javax.swing.table.AbstractTableModel;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -0,0 +1,78 @@
/*
* MIT License
*
* Copyright (c) 2018 Daniel Cortes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package danielcortes.xyz.views.components;
import danielcortes.xyz.models.ingreso.Ingreso;
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
public class IngresosTableModel extends AbstractTableModel {
private String[] columns;
private ArrayList<Ingreso> rows;
public IngresosTableModel(){
super();
this.columns = new String[]{"Valor", "Tipo"};
this.rows = new ArrayList<>();
}
public String getColumnName(int col) {
return this.columns[col];
}
public int getColumnCount() {
return this.columns.length;
}
public int getRowCount() {
return this.rows.size();
}
public void addRow(Ingreso ingreso) {
this.rows.add(ingreso);
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:
return this.rows.get(row).getValor();
case 1:
return this.rows.get(row).getTipoIngreso().getNombre();
}
return null;
}
public Ingreso getIngreso(int row){
return this.rows.get(row);
}
}