First!! :3 Existe una pequeña base de proyecto por ahora

This commit is contained in:
Daniel Cortes
2018-12-20 01:36:57 -03:00
commit b5720e75f1
17 changed files with 873 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
package danielcortes.xyz;
import danielcortes.xyz.controllers.CajaController;
import danielcortes.xyz.models.EgresoDAO;
import danielcortes.xyz.models.TipoEgresoDAO;
import danielcortes.xyz.models.mysql.MysqlEgresoDAO;
import danielcortes.xyz.models.mysql.MysqlTipoEgresoDAO;
import danielcortes.xyz.views.CajaView;
import javax.swing.*;
public class Main {
private static final String lookAndFeel = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(lookAndFeel);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
CajaView view = new CajaView();
JFrame frame = new JFrame("Caja");
frame.setContentPane(view.getUI());
frame.setContentPane(view.contentPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1300,700);
frame.setLocationRelativeTo(null);
EgresoDAO egresoDAO = new MysqlEgresoDAO();
TipoEgresoDAO tipoEgresoDAO = new MysqlTipoEgresoDAO();
CajaController cajaController = new CajaController(view, egresoDAO, tipoEgresoDAO);
frame.setVisible(true);
}
}

View File

@@ -0,0 +1,78 @@
package danielcortes.xyz.controllers;
import danielcortes.xyz.models.Egreso;
import danielcortes.xyz.models.EgresoDAO;
import danielcortes.xyz.models.TipoEgreso;
import danielcortes.xyz.models.TipoEgresoDAO;
import danielcortes.xyz.views.CajaView;
import javax.swing.*;
public class CajaController {
private CajaView view;
private EgresoDAO egresoDAO;
private TipoEgresoDAO tipoEgresoDAO;
public CajaController(CajaView view, EgresoDAO egresoDAO, TipoEgresoDAO tipoEgresoDAO){
this.view = view;
this.egresoDAO = egresoDAO;
this.tipoEgresoDAO = tipoEgresoDAO;
this.setUpViewEvents();
this.fillEgresosTable();
this.fillEgresosTipo();
this.updateTotalEgresos();
}
private void fillEgresosTipo() {
JComboBox<TipoEgreso> tipoCombo = view.getTipoCombo();
for(TipoEgreso tipoEgreso : this.tipoEgresoDAO.findAll()){
tipoCombo.addItem(tipoEgreso);
}
}
private void fillEgresosTable() {
for(Egreso egreso: this.egresoDAO.findAll()){
TipoEgreso tipoEgreso = tipoEgresoDAO.findById(egreso.getTipo()).get(0);
view.getEgresosTableModel().addRow(new String[]{
egreso.getNro(),
egreso.getDescripcion(),
String.valueOf(egreso.getValor()),
tipoEgreso.getNombre()
});
}
}
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();
this.addToTable(nro, descripcion, valor, tipo.getNombre());
this.createEgreso(nro, descripcion, valor, tipo.getId());
this.updateTotalEgresos();
});
}
private void addToTable(String nro, String descripcion, String valor, String tipo){
view.getEgresosTableModel().addRow(new String[]{nro,descripcion,valor,tipo});
}
private void updateTotalEgresos(){
int total = this.egresoDAO.getTotalEgreso();
this.view.getTotalEgresosField().setText(String.valueOf(total));
}
private void createEgreso(String nro, String descripcion, String valor, int tipo){
Egreso egreso = new Egreso();
egreso.setValor(Integer.valueOf(valor));
egreso.setDescripcion(descripcion);
egreso.setNro(nro);
egreso.setTipo(tipo);
egresoDAO.insertEgreso(egreso);
}
}

View File

@@ -0,0 +1,24 @@
package danielcortes.xyz.data;
import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.*;
public class MysqlConnection {
private MysqlDataSource dataSource;
public MysqlConnection(){
this.dataSource = new MysqlDataSource();
this.configureDataSource();
}
private void configureDataSource(){
this.dataSource.setUser("root");
this.dataSource.setPassword("lagging");
this.dataSource.setServerName("localhost");
this.dataSource.setDatabaseName("caja");
}
public Connection getConnection() throws SQLException{
return this.dataSource.getConnection();
}
}

View File

@@ -0,0 +1,67 @@
package danielcortes.xyz.models;
public class Egreso {
private int id;
private String nro;
private String descripcion;
private int valor;
private int tipo;
public Egreso(int id, String nro, String descripcion, int valor, int tipo) {
this.id = id;
this.nro = nro;
this.descripcion = descripcion;
this.valor = valor;
this.tipo = tipo;
}
public Egreso(String nro, String descripcion, int valor, int tipo) {
this.nro = nro;
this.descripcion = descripcion;
this.valor = valor;
this.tipo = tipo;
}
public Egreso(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNro() {
return nro;
}
public void setNro(String nro) {
this.nro = nro;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public int getValor() {
return valor;
}
public void setValor(int valor) {
this.valor = valor;
}
public int getTipo() {
return tipo;
}
public void setTipo(int tipo) {
this.tipo = tipo;
}
}

View File

@@ -0,0 +1,14 @@
package danielcortes.xyz.models;
import java.util.List;
public interface EgresoDAO {
List<Egreso> findAll();
List<Egreso> findById(int id);
List<Egreso> findByNro(String nro);
boolean insertEgreso(Egreso egreso);
boolean updateEgreso(Egreso egreso);
boolean deleteEgreso(Egreso egreso);
int getTotalEgreso();
}

View File

@@ -0,0 +1,33 @@
package danielcortes.xyz.models;
public class TipoEgreso {
private int id;
private String nombre;
public TipoEgreso(int id, 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,12 @@
package danielcortes.xyz.models;
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,172 @@
package danielcortes.xyz.models.mysql;
import danielcortes.xyz.data.MysqlConnection;
import danielcortes.xyz.models.Egreso;
import danielcortes.xyz.models.EgresoDAO;
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 MysqlEgresoDAO implements EgresoDAO {
private MysqlConnection mysqlConnection;
public MysqlEgresoDAO(){
this.mysqlConnection = new MysqlConnection();
}
@Override
public List<Egreso> findAll() {
List<Egreso> egresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from egresos");
ResultSet rs = ps.executeQuery();
egresoList = this.EgresosFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return egresoList;
}
@Override
public List<Egreso> findById(int id) {
List<Egreso> egresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from egresos where id = ?");
ps.setInt(1,id);
ResultSet rs = ps.executeQuery();
egresoList = this.EgresosFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return egresoList;
}
@Override
public List<Egreso> findByNro(String nro) {
List<Egreso> egresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from egresos where nro = ?");
ps.setString(1, nro);
ResultSet rs = ps.executeQuery();
egresoList = this.EgresosFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return egresoList;
}
@Override
public boolean insertEgreso(Egreso egreso) {
int updates;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("insert into egresos (nro, descripcion, valor, tipo_id) values (?,?,?,?)");
ps.setString(1,egreso.getNro());
ps.setString(2,egreso.getDescripcion());
ps.setInt(3,egreso.getValor());
ps.setInt(4,egreso.getTipo());
updates = ps.executeUpdate();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return updates > 0;
}
@Override
public boolean updateEgreso(Egreso egreso) {
int updates;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("update egresos set nro = ?, descripcion = ?, valor = ?, tipo_id = ? where id = ? ");
ps.setString(1,egreso.getNro());
ps.setString(2,egreso.getDescripcion());
ps.setInt(3,egreso.getValor());
ps.setInt(4,egreso.getTipo());
ps.setInt(5, egreso.getId());
updates = ps.executeUpdate();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return updates > 0;
}
@Override
public boolean deleteEgreso(Egreso egreso) {
int updates;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("delete from egresos where id = ? ");
ps.setInt(1, egreso.getId());
updates = ps.executeUpdate();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return updates > 0;
}
@Override
public int getTotalEgreso() {
int total = 0;
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select sum(valor) from egresos");
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<Egreso> EgresosFromResultSet(ResultSet rs) throws SQLException {
ArrayList<Egreso> egresoList = new ArrayList<>();
while(rs.next()){
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"));
egresoList.add(egreso);
}
return egresoList;
}
}

View File

@@ -0,0 +1,107 @@
package danielcortes.xyz.models.mysql;
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.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class MysqlTipoEgresoDAO implements TipoEgresoDAO {
private MysqlConnection mysqlConnection;
public MysqlTipoEgresoDAO(){
this.mysqlConnection = new MysqlConnection();
}
@Override
public List<TipoEgreso> findAll() {
List<TipoEgreso> tipoEgresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from tipos_egreso");
ResultSet rs = ps.executeQuery();
tipoEgresoList = this.TipoEgresoFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return tipoEgresoList;
}
@Override
public List<TipoEgreso> findById(int id) {
List<TipoEgreso> tipoEgresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from tipos_egreso where id = ?");
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
tipoEgresoList = this.TipoEgresoFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return tipoEgresoList;
}
@Override
public List<TipoEgreso> findByNombre(String nombre) {
List<TipoEgreso> tipoEgresoList = new ArrayList<>();
try {
Connection conn = mysqlConnection.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from tipos_egreso where nombre = ?");
ps.setString(1, nombre);
ResultSet rs = ps.executeQuery();
tipoEgresoList = this.TipoEgresoFromResultSet(rs);
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return tipoEgresoList;
}
@Override
public boolean insertTipoEgreso(TipoEgreso tipoEgreso) {
return false;
}
@Override
public boolean updateTipoEgreso(TipoEgreso tipoEgreso) {
return false;
}
@Override
public boolean deleteTipoEgreso(TipoEgreso tipoEgreso) {
return false;
}
private List<TipoEgreso> TipoEgresoFromResultSet(ResultSet rs) throws SQLException {
ArrayList<TipoEgreso> tipoEgresoList = new ArrayList<>();
while(rs.next()){
TipoEgreso tipoEgreso = new TipoEgreso();
tipoEgreso.setId(rs.getInt("id"));
tipoEgreso.setNombre(rs.getString("nombre"));
tipoEgresoList.add(tipoEgreso);
}
return tipoEgresoList;
}
}

View File

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="danielcortes.xyz.views.CajaView">
<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="1074" height="403"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<grid id="9047a" binding="egresosPanel" layout-manager="GridLayoutManager" row-count="4" column-count="5" 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="Egresos"/>
<children>
<component id="d8e90" class="javax.swing.JTextField" binding="descripcionField">
<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="696ee" class="javax.swing.JTextField" binding="valorField">
<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">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<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="f50cf" class="javax.swing.JLabel">
<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"/>
</constraints>
<properties>
<text value="Valor"/>
</properties>
</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">
<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"/>
</constraints>
<properties>
<text value="Tipo"/>
</properties>
</component>
<scrollpane id="65bec">
<constraints>
<grid row="2" column="0" row-span="1" col-span="5" 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>
<component id="c5738" class="javax.swing.JButton" binding="guardarButton" default-binding="true">
<constraints>
<grid row="1" column="4" 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="Añadir"/>
</properties>
</component>
<component id="2b8d0" class="javax.swing.JTextField" binding="totalEgresosField">
<constraints>
<grid row="3" column="4" 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>
<component id="3442d" class="javax.swing.JLabel">
<constraints>
<grid row="3" column="3" 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>
</children>
</grid>
</children>
</grid>
<inspectionSuppressions>
<suppress inspection="FormSpellChecking"/>
</inspectionSuppressions>
</form>

View File

@@ -0,0 +1,64 @@
package danielcortes.xyz.views;
import danielcortes.xyz.models.TipoEgreso;
import danielcortes.xyz.views.components.EgresosTableModel;
import javax.swing.*;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import java.awt.*;
public class CajaView {
public JPanel contentPanel;
private JPanel egresosPanel;
private JTable egresosTable;
private JButton guardarButton;
private JTextField valorField;
private JTextField descripcionField;
private JTextField nroField;
private JTextField totalEgresosField;
private JComboBox<TipoEgreso> tipoCombo;
private EgresosTableModel egresosTableModel;
private void createUIComponents() {
createEgresosTable();
}
private void createEgresosTable() {
egresosTableModel = new EgresosTableModel();
egresosTable = new JTable(egresosTableModel);
egresosTable.setAutoCreateRowSorter(true);
}
public JPanel getUI() {
return contentPanel;
}
public JButton getGuardarButton() {
return guardarButton;
}
public JTextField getValorField() {
return valorField;
}
public JTextField getDescripcionField() {
return descripcionField;
}
public JTextField getNroField() {
return nroField;
}
public JTextField getTotalEgresosField() {
return totalEgresosField;
}
public JComboBox<TipoEgreso> getTipoCombo() {
return tipoCombo;
}
public EgresosTableModel getEgresosTableModel() {
return egresosTableModel;
}
}

View File

@@ -0,0 +1,18 @@
package danielcortes.xyz.views.components;
public class EgresosTableModel extends TableModel{
private String[] columns;
public EgresosTableModel(){
super();
this.columns = new String[]{"", "Descripcion", "Valor", "Tipo"};
}
public String getColumnName(int col) {
return columns[col];
}
public int getColumnCount() {
return columns.length;
}
}

View File

@@ -0,0 +1,20 @@
package danielcortes.xyz.views.components;
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
public abstract class TableModel extends AbstractTableModel {
private ArrayList<String[]> rows = new ArrayList<>();
public int getRowCount() {
return rows.size();
}
public void addRow(String[] data){
rows.add(data);
this.fireTableRowsInserted(0,getRowCount()-1);
}
public Object getValueAt(int row, int col) {
return rows.get(row)[col];
}
}

View File

@@ -0,0 +1,10 @@
{
"egresos": [
{
"nro": "1",
"descripcion": "2",
"valor": 123,
"tipo": 1
}
]
}