Codigo de Ejemplos Java Eclipse
Codigo de Ejemplos Java Eclipse
Ejemplos Java
Autor: Fernando Rafael Filipuzzi E-mail: fernando_6867@[Link]
Temas: Introduccin Interfaces con Swing Ejemplo1: Hola mundo Ejemplo2: Hola mundo Ejemplo3: ABM Ejemplo4: ABM Ejemplo5: Eventos DAO y Paginado JDBC Hibernate JPA Enlaces
1. Introduccin
Aqu voy a ir agregando ejemplos java. Luego har una descripcin de cada uno.
[Link]
package [Link]; /* * autor: * fernando rafael filipuzzi * * e-mail: * fernando6867@[Link] * * sitio web: * [Link] * [Link] * */ import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
public class App extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L;
private JTextField jtfInput = new JTextField(15); private JLabel jlOutput = new JLabel(); private JButton jbMostrar = new JButton("Mostrar"); private JButton jbCerrar = new JButton("Cerrar"); public App(){ [Link]().setLayout(new BorderLayout()); [Link]("Ejemplo Swing 1"); /*formulario*/ JPanel jpFormulario = new JPanel(); [Link](jpFormulario,[Link]); [Link](new GridBagLayout()); [Link](new JLabel("Valor: ",[Link]),new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfInput,new GridBagConstraints(1,0,1,1,100.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jlOutput,new GridBagConstraints(0,1,2,1,100.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); /*barra de botones*/ JPanel jpBarraBotones = new JPanel(); [Link](jpBarraBotones,[Link]); [Link](new FlowLayout()); [Link](jbMostrar); [Link](this); [Link](jbCerrar); [Link](this); [Link](); } @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]([Link]())){ [Link](0); }else if(e!=null && [Link]([Link]())){ [Link]([Link]()); } } public static void main(String [] args){ App app=new App(); [Link](true); } }
[Link]
public class App extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private JTextField jtfInput = new JTextField(15); private JLabel jlOutput = new JLabel(" "); private JButton jbMostrar = new JButton("Mostrar"); private JButton jbCerrar = new JButton("Cerrar"); public App(){
[Link]().setLayout(new BorderLayout()); [Link]("Ejemplo Swing 2"); /*formulario*/ JPanel jpFormulario = new JPanel(); [Link](jpFormulario,[Link]); [Link](new GridBagLayout()); [Link](new JLabel("Valor: ",[Link]),new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfInput,new GridBagConstraints(1,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); JPanel jpResultado = new JPanel(); [Link](new BorderLayout()); [Link](jlOutput, [Link]); [Link](new JScrollPane(jpResultado,JScrollPane.VERTICAL_SCROLLBAR_NEVER,[Link] ZONTAL_SCROLLBAR_ALWAYS),new GridBagConstraints(0,1,2,2,100.0,100.0, [Link],[Link],new Insets(5,5,10,5),1,1)); //[Link] [Link]#anchor //[Link] [Link] /*barra de botones*/ JPanel jpBarraBotones = new JPanel(); [Link](jpBarraBotones,[Link]); [Link](new FlowLayout()); [Link](jbMostrar); [Link](this); [Link](jbCerrar); [Link](this); [Link](); [Link](false); } @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]([Link]())){ [Link](0); }else if(e!=null && [Link]([Link]())){ [Link]([Link]()); } } public static void main(String [] args){ App app1=new App(); [Link](true);
} }
*****************************************************************************
package [Link]; /* * autor: * fernando rafael filipuzzi * * e-mail: * fernando6867@[Link] * * sitio web: * [Link] * [Link] * */ import [Link]; import [Link];
import import import import import import import import import import import import import import import import import import import import
[Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
import [Link]; import [Link]; public class App extends JFrame implements ActionListener, ListSelectionListener, TableModelListener{ private static final long serialVersionUID = 1L; private JTextField jtfProductoCodigo = new JTextField(15); private JTextField jtfProductoNombre= new JTextField(15); private JCheckBox jcbProductoDisponible = new JCheckBox("Disponible"); private private private private JButton JButton JButton JButton jbNuevo = new JButton("Nuevo"); jbAgregar = new JButton("Agregar"); jbModificar = new JButton("Modificar"); jbEliminar = new JButton("Eliminar");
private JScrollPane jspTabla = new JScrollPane(); private JTable jtTabla=new JTable(); private Producto producto=new Producto(); private ProductosTableModel tmProductos=new ProductosTableModel(); private JButton jbCerrar = new JButton("Cerrar"); public App(){ [Link]().setLayout(new BorderLayout()); [Link]("Ejemplo 3: ABM"); /* ----| | |
| | |(GridBa
| (JPanel) | (posicion0,0) |------------------------------------------------------| Adm |(GridBagLayout) | borderLayout | (center) | (jPanel) | | | |(posicion0,1) | jspScrollPane | jtTabla | | | | | jpPanel |----------------------------------------------------------------------| (FlowLayout) | | (sur) | [Cerrar] |-------------------|--------------------- ------------------------------------------------**/ /*adm*/ JPanel jpAdm=new JPanel(); [Link](new GridBagLayout()); [Link](jpAdm,[Link]); /*formulario*/ JPanel jpAdmFormulario = new JPanel(); [Link]([Link]("Datos de Producto")); [Link](new GridBagLayout()); [Link](jpAdmFormulario,new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](new JLabel("Cdigo: ",[Link]),new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoCodigo,new GridBagConstraints(1,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jcbProductoDisponible,new GridBagConstraints(2,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](new JLabel("Nombre: ",[Link]),new GridBagConstraints(0,1,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoNombre,new GridBagConstraints(1,1,2,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); /*detalle*/ JPanel jpAdmDetalle=new JPanel(); | | | | | | |
[Link](new BorderLayout()); [Link](jpAdmDetalle,new GridBagConstraints(0,1,1,2,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); /*detalle/barrabotones*/ JPanel jpAdmDetalleBarraBotones = new JPanel(); [Link](new FlowLayout()); [Link](jpAdmDetalleBarraBotones,[Link]); [Link](jbNuevo); [Link](this); [Link](jbAgregar); [Link](this); [Link](jbModificar); [Link](this); [Link](jbEliminar); [Link](this); /*detalle/tabla*/ [Link](jspTabla); [Link](tmProductos); [Link](new Dimension(500, 85)); [Link](true); [Link](true); //Sorting and Filtering /*alternativa TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>([Link]()); [Link](sorter); redefinir Comparator<String> comparator = new Comparator<String>() { public int compare(String s1, String s2) { String[] strings1 = [Link]("\\s"); String[] strings2 = [Link]("\\s"); return strings1[[Link] 1].compareTo(strings2[[Link] - 1]); } }; */ [Link]().addListSelectionListener(this); [Link](jtTabla); /*barra de botones*/ JPanel jpBarraBotones = new JPanel(); [Link](jpBarraBotones,[Link]); [Link](new FlowLayout()); [Link](jbCerrar); [Link](this);
nuevoProducto(); [Link](); } public static void main(String [] args){ App app=new App(); [Link](true); } public void seleccionarProducto(){ [Link]=[Link]([Link]()); if(producto!=null){ [Link]([Link]().toString()); [Link]([Link]()); } if([Link]!=null){ [Link](true); [Link](false); [Link](true); [Link](true); }else{ nuevoProducto(); } } public void nuevoProducto(){ [Link]=new Producto(); [Link](""); [Link](""); [Link](true); [Link](true); [Link](false); [Link](false); } public void addProducto(){ [Link](jtTabla); producto = new Producto(); Integer codigo=null; if([Link]()!=null && ![Link]().equals("") && ![Link]().contains(" ")){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); if([Link]()!=null){ [Link](producto); } [Link]([Link]());
[Link](jtTabla); /*limpia el formulario*/ [Link]=new Producto(); [Link](""); [Link](""); [Link](true); [Link](true); [Link](false); [Link](false); } public void modificarProducto(){ [Link]=[Link]([Link]()); if([Link]!=null){ Integer codigo=null; if([Link]()!=null){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]()); } [Link](); } public void eliminarProducto(){ [Link]=[Link]([Link]()); [Link](producto); [Link](); } @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]([Link]())){ [Link](0); }else if(e!=null && [Link]([Link]())){ nuevoProducto(); }else if(e!=null && [Link]([Link]())){ addProducto(); nuevoProducto(); }else if(e!=null && [Link]([Link]())){ modificarProducto(); }else if(e!=null && [Link]([Link]())){ eliminarProducto(); nuevoProducto(); } }
@Override public void valueChanged(ListSelectionEvent e) { int viewRow = [Link](); if (viewRow < 0) { [Link](""); } else { int modelRow = [Link](viewRow); [Link]([Link]("Selected Row in view: %d. " +"Selected Row in model: %d.",viewRow, modelRow)); seleccionarProducto(); } } @Override public void tableChanged(TableModelEvent e) { int row = [Link](); int column = [Link](); ProductosTableModel model = (ProductosTableModel) [Link](); String columnName = [Link](column); Producto data = (Producto)[Link](row, column); [Link]([Link]()+"-"+[Link]()+""+[Link]() + " - "+ columnName); } }
**********************************************************************
package [Link]; /* * autor: * fernando rafael filipuzzi * * e-mail: * fernando6867@[Link] * * sitio web: * [Link] * [Link] * */ public class Producto { private Integer id; private Integer codigo; private String nombre; private Boolean disponible=false; public Producto(){ } public Integer getId() { return id;
} public void setId(Integer id) { [Link] = id; } public Integer getCodigo() { return codigo; } public void setCodigo(Integer codigo) { [Link] = codigo; } public String getNombre() { return nombre; } public void setNombre(String nombre) { [Link] = nombre; } public Boolean getDisponible() { return disponible; } public void setDisponible(Boolean disponible) { [Link] = disponible; } }
****************************************************************
package [Link]; /* * autor: * fernando rafael filipuzzi * * e-mail: * fernando6867@[Link] * * sitio web: * [Link] * [Link] * */ import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; public class ProductosTableModel implements TableModel{ public List<Producto> productos = new ArrayList<Producto>(); public List<String> nombreColumnas = new ArrayList<String>(); public List<TableModelListener> tableModelListeners = new ArrayList<TableModelListener>();
public ProductosTableModel(){ [Link]("Cdigo"); [Link]("Nombre"); [Link]("Disponible"); } @Override public Class<?> getColumnClass(int arg0) { return getValueAt(0, arg0).getClass(); } @Override public int getColumnCount() { if(nombreColumnas!=null){ return [Link](); } return 0; } @Override public String getColumnName(int arg0) { if(nombreColumnas!=null && arg0>=0 && [Link]()>arg0){ return [Link](arg0); } return null; } @Override public int getRowCount() { if(productos!=null){ return [Link](); } return 0; } @Override public Object getValueAt(int arg0, int arg1) { if(productos!=null && arg0>=0 && arg1>=0 && [Link]()>arg0){ Producto producto=[Link](arg0); switch(arg1){ case 0: return [Link](); case 1: return [Link](); case 2: return [Link](); } } return null; } @Override public void setValueAt(Object arg0, int arg1, int arg2) { if(productos!=null && arg1>=0 && arg2>=0 && [Link]()>arg1){ Producto producto=[Link](arg1); switch(arg2){ case 0: Integer codigoNuevo=null;
if(arg0!=null){ codigoNuevo=(Integer)arg0; } [Link](codigoNuevo); break; case 1: String nombreNuevo=null; if(arg0!=null){ nombreNuevo=(String)arg0; } [Link](nombreNuevo); break; case 2: Boolean disponible=false; if(arg0!=null){ disponible=(Boolean)arg0; } [Link](disponible); break; } } } @Override public boolean isCellEditable(int arg0, int arg1) { return false; } @Override public void removeTableModelListener(TableModelListener arg0) { [Link](arg0); } @Override public void addTableModelListener(TableModelListener arg0) { [Link](arg0); } }
********************************************************************************
1. Ejemplo 4: ABM
[Link]
package [Link]; /* * @autor: * fernando rafael filipuzzi * * @e-mail: * fernando6867@[Link] * * @sitio web: * [Link] * [Link] * */ import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import import import import import [Link]; [Link]; [Link]; [Link]; [Link];
import [Link]; import [Link]; import [Link]; public class App extends JFrame implements ActionListener, ListSelectionListener, TableModelListener{ private static final long serialVersionUID = 1L; private JTextField jtfProductoCodigo = new JTextField(15); private JTextField jtfProductoNombre= new JTextField(15); private JCheckBox jcbProductoDisponible = new JCheckBox("Disponible"); private private private private JButton JButton JButton JButton jbNuevo = new JButton("Nuevo"); jbAgregar = new JButton("Agregar"); jbModificar = new JButton("Modificar"); jbEliminar = new JButton("Eliminar");
private JScrollPane jspTabla = new JScrollPane(); private JTable jtTabla=new JTable(); private Producto producto=new Producto(); private ProductosTableModel tmProductos=new ProductosTableModel(); private JButton jbCerrar = new JButton("Cerrar"); public App(){ [Link]().setLayout(new BorderLayout()); [Link]("Ejemplo 4 - ABM"); /* ----| | | | (JPanel) | (posicion0,0) |------------------------------------------------------borderLayout | | |(GridBagLayout) (center) | | | | | jtTabla | | Adm | (jPanel) | | | | |
| | |(GridBa
|(posicion0,1) |
jspScrollPane
| | | jpPanel |----------------------------------------------------------------------| (FlowLayout) | | (sur) | [Cerrar] |-------------------|--------------------- ------------------------------------------------**/ /*adm*/ JPanel jpAdm=new JPanel(); [Link](new GridBagLayout()); [Link](jpAdm,[Link]); /*formulario*/ JPanel jpAdmFormulario = new JPanel(); [Link]([Link]("Datos de Producto")); [Link](new GridBagLayout()); [Link](jpAdmFormulario,new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](new JLabel("Cdigo: ",[Link]),new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoCodigo,new GridBagConstraints(1,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jcbProductoDisponible,new GridBagConstraints(2,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](new JLabel("Nombre: ",[Link]),new GridBagConstraints(0,1,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoNombre,new GridBagConstraints(1,1,2,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); /*detalle*/ JPanel jpAdmDetalle=new JPanel(); [Link](new BorderLayout()); [Link](jpAdmDetalle,new GridBagConstraints(0,1,1,2,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); /*detalle/barrabotones*/ JPanel jpAdmDetalleBarraBotones = new JPanel(); [Link](new FlowLayout()); [Link](jpAdmDetalleBarraBotones,[Link]); [Link](jbNuevo);
| |
[Link](this); [Link](jbAgregar); [Link](this); [Link](jbModificar); [Link](this); [Link](jbEliminar); [Link](this); /*detalle/tabla*/ [Link](jspTabla); [Link](tmProductos); [Link](true); //Sorting and Filtering /*alternativa al "sorting and filtering" TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>([Link]()); [Link](sorter); redefinir Comparator<String> comparator = new Comparator<String>() { public int compare(String s1, String s2) { String[] strings1 = [Link]("\\s"); String[] strings2 = [Link]("\\s"); return strings1[[Link] 1].compareTo(strings2[[Link] - 1]); } }; */ [Link]().addListSelectionListener(this); [Link](jtTabla); [Link](new Dimension(500, 85)); [Link](true); /*barra de botones*/ JPanel jpBarraBotones = new JPanel(); [Link](jpBarraBotones,[Link]); [Link](new FlowLayout()); [Link](jbCerrar); [Link]("CERRAR"); [Link](new BarraBotonesActionListener()); nuevoProducto(); [Link](); } public static void main(String [] args){ App app=new App(); [Link](true); }
public void seleccionarProducto(){ [Link]=[Link]([Link]()); if(producto!=null){ [Link]([Link]().toString()); [Link]([Link]()); } if([Link]!=null){ [Link](true); [Link](false); [Link](true); [Link](true); }else{ nuevoProducto(); } } public void nuevoProducto(){ [Link]=new Producto(); [Link](""); [Link](""); [Link](true); [Link](true); [Link](false); [Link](false); } public void addProducto(){ [Link](jtTabla); producto = new Producto(); Integer codigo=null; if([Link]()!=null && ![Link]().equals("") && ![Link]().contains(" ")){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); if([Link]()!=null){ [Link](producto); } [Link]([Link]()); [Link](jtTabla); /*limpia el formulario*/ [Link]=new Producto(); [Link](""); [Link](""); [Link](true); [Link](true); [Link](false); [Link](false);
} public void modificarProducto(){ [Link]=[Link]([Link]()); if([Link]!=null){ Integer codigo=null; if([Link]()!=null){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]()); } [Link](); } public void eliminarProducto(){ [Link]=[Link]([Link]()); [Link](producto); [Link](); } @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]([Link]())){ nuevoProducto(); }else if(e!=null && [Link]([Link]())){ addProducto(); nuevoProducto(); }else if(e!=null && [Link]([Link]())){ modificarProducto(); }else if(e!=null && [Link]([Link]())){ eliminarProducto(); nuevoProducto(); } } @Override public void valueChanged(ListSelectionEvent e) { int viewRow = [Link](); if (viewRow < 0) { [Link](""); } else { int modelRow = [Link](viewRow); [Link]([Link]("Selected Row in view: %d. " +"Selected Row in model: %d.",viewRow, modelRow)); seleccionarProducto(); }
//[Link] .html#editor //[Link] //[Link] //[Link] } @Override public void tableChanged(TableModelEvent e) { int row = [Link](); int column = [Link](); ProductosTableModel model = (ProductosTableModel) [Link](); String columnName = [Link](column); Producto data = (Producto)[Link](row, column); [Link]([Link]()+"-"+[Link]()+""+[Link]()+"-"+columnName); //[Link] ml } }
******************************************************************
package [Link]; import [Link]; import [Link]; public class BarraBotonesActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]()!=null && [Link]().equals("CERRAR")){ [Link](0); } } }
**************************************************
package [Link]; /* * @autor: * fernando rafael filipuzzi * * @e-mail:
* fernando6867@[Link] * * @sitio web: * [Link] * [Link] * */ public class Producto { private Integer id; private Integer codigo; private String nombre; private Boolean disponible=false; public Producto(){ } public Integer getId() { return id; } public void setId(Integer id) { [Link] = id; } public Integer getCodigo() { return codigo; } public void setCodigo(Integer codigo) { [Link] = codigo; } public String getNombre() { return nombre; } public void setNombre(String nombre) { [Link] = nombre; } public Boolean getDisponible() { return disponible; } public void setDisponible(Boolean disponible) { [Link] = disponible; } }
*******************************************
package [Link]; /* * @autor: * fernando rafael filipuzzi * * @e-mail: * fernando6867@[Link] *
* @sitio web: * [Link] * [Link] * */ import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; public class ProductosTableModel implements TableModel{ public List<Producto> productos = new ArrayList<Producto>(); public List<String> nombreColumnas = new ArrayList<String>(); public List<TableModelListener> tableModelListeners = new ArrayList<TableModelListener>(); public ProductosTableModel(){ [Link]("Cdigo"); [Link]("Nombre"); [Link]("Disponible"); } @Override public Class<?> getColumnClass(int arg0) { return getValueAt(0, arg0).getClass(); } @Override public int getColumnCount() { if(nombreColumnas!=null){ return [Link](); } return 0; } @Override public String getColumnName(int arg0) { if(nombreColumnas!=null && arg0>=0 && [Link]()>arg0){ return [Link](arg0); } return null; } @Override public int getRowCount() { if(productos!=null){ return [Link](); } return 0; }
@Override public Object getValueAt(int arg0, int arg1) { if(productos!=null && arg0>=0 && arg1>=0 && [Link]()>arg0){ Producto producto=[Link](arg0); switch(arg1){ case 0: return [Link](); case 1: return [Link](); case 2: return [Link](); } } return null; } @Override public void setValueAt(Object arg0, int arg1, int arg2) { if(productos!=null && arg1>=0 && arg2>=0 && [Link]()>arg1){ Producto producto=[Link](arg1); switch(arg2){ case 0: Integer codigoNuevo=null; if(arg0!=null){ codigoNuevo=(Integer)arg0; } [Link](codigoNuevo); break; case 1: String nombreNuevo=null; if(arg0!=null){ nombreNuevo=(String)arg0; } [Link](nombreNuevo); break; case 2: Boolean disponible=false; if(arg0!=null){ disponible=(Boolean)arg0; } [Link](disponible); break; } } } @Override public boolean isCellEditable(int arg0, int arg1) { return false; } @Override public void removeTableModelListener(TableModelListener arg0) { [Link](arg0); } @Override public void addTableModelListener(TableModelListener arg0) { [Link](arg0);
} }
**********************************************************************
1. 1. Ejemplo 5: Eventos Ficheros fuentes: [Link] [Link] [Link] [Link] 2. Tarballs del proyecto en Eclipse: [Link] [Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; public class App extends JFrame implements CustomEventListener{ private static final long serialVersionUID = 1L; private CustomPanel cp = new CustomPanel(); private JLabel jl = new JLabel(" ");
public App(){ super("Ejemplo 5 - Custom Event"); [Link]().setLayout(new BorderLayout()); [Link](cp,[Link]); [Link](this); [Link](jl,[Link]); pack(); } public static void main(String [] args){ App app= new App(); [Link](true); } @Override public void customEventOcurrido(CustomEvent customEvent) { [Link]("Hola Mundo"); } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; public class CustomEvent extends EventObject { private static final long serialVersionUID = 1L; public CustomEvent(Object source) { super(source); } }
[Link]
/* * * * * * * * * * *
@autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; import [Link]; public interface CustomEventListener extends EventListener { public void customEventOcurrido(CustomEvent customEvent); }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; public class CustomPanel extends JPanel { private static final long serialVersionUID = 1L; // Create the listener list
protected [Link] listenerList =new [Link](); public CustomPanel(){ [Link](new FlowLayout()); JButton jbAceptar = new JButton("Aceptar"); [Link](new ActionListener() { @Override public void actionPerformed(ActionEvent event) { CustomEvent customEvent= new CustomEvent([Link]); [Link](customEvent); } }); [Link](jbAceptar); } // This methods allows classes to register for MyEvents public void addCustomEventListener(CustomEventListener listener) { [Link]([Link], listener); } // This methods allows classes to unregister for MyEvents public void removeCustomEventListener(CustomEventListener listener) { [Link]([Link], listener); } // This private class is used to fire MyEvents void fireCustomEvent(CustomEvent customEvent) { Object[] listeners = [Link](); // Each listener occupies two elements - the first is the listener class // and the second is the listener instance for (int i=0; i<[Link]; i+=2) { if (listeners[i]==[Link]) { ((CustomEventListener)listeners[i+1]).customEventOcurrido(customEvent); } } } }
2. DAO y Paginado
1. Ejemplo 1 - JDBC: En este ejemplo incluye una tabla paginada, tambin se implementa en forma simplificada la persistencia utilizando el patrn DAO usando como base de datos
a Postgresql. Al importar el proyecto se requiere el driver a esta base, est incluido el jar utilizado en los tarballs de este ejemplo.
La interfaz grfica: [Link] [Link] Las clases relacionadas con el paginado: [Link] [Link] [Link] [Link] [Link] Las clases relacionadas con el modelo y la persistencia: [Link] [Link] [Link] [Link] [Link] [Link]
Tarballs del proyecto en Eclipse: [Link] Otros: he creado un jar del componente Paginador para incluirlo luego en otros proyectos: [Link] La interfaz grfica: [Link]
/* * * * * * * * * * *
@autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link];
import import import import import import import import import import import import import import import import import import import import import import import
[Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
public class App extends JFrame implements ActionListener, ListSelectionListener, TableModelListener, PaginadorEventListener{ private static final long serialVersionUID = 1L; protected protected protected protected protected static static static static static final final final final final String String String String String CERRAR="CERRAR"; NUEVO="NUEVO"; AGREGAR="AGREGAR"; MODIFICAR="MODIFICAR"; ELIMINAR="ELIMINAR";
protected JTextField jtfProductoCodigo=new JTextField(15); protected JCheckBox jchbProductoDisponible=new JCheckBox(); protected JTextField jtfProductoNombre=new JTextField(15); protected JButton jbNuevo=new JButton("Nuevo"); protected JButton jbAgregarModificar=new JButton("AgregarModificar"); protected JButton jbEliminar=new JButton("Eliminar"); protected Producto producto=new Producto(); protected ProductosTableModelPaginado tmpProductos=new ProductosTableModelPaginado(); protected Paginador cPaginadorSuperior;
protected Paginador cPaginadorInferior; protected JScrollPane jsp=new JScrollPane(); protected JTable jtTabla = new JTable(); protected JButton jbCerrar = new JButton("Cerrar");
public App(){ [Link]("Ejemplo 1 DAO: JDBC"); [Link](new BorderLayout()); JPanel jpDatos = new JPanel(); [Link](new BorderLayout()); [Link](jpDatos,BorderLayout.PAGE_START); [Link]([Link]("Datos del Producto")); /*formulario*/ JPanel jpFormulario = new JPanel(); [Link](new GridBagLayout()); [Link](jpFormulario,[Link]); [Link](new JLabel("Cdigo: ",[Link]),new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoCodigo,new GridBagConstraints(1,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jchbProductoDisponible,new GridBagConstraints(2,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](new JLabel("Nombre: ",[Link]),new GridBagConstraints(0,1,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoNombre,new GridBagConstraints(1,1,2,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); JPanel jpBarraBotonesFormulario = new JPanel(); [Link](new FlowLayout([Link])); [Link](jpBarraBotonesFormulario,[Link]); [Link](jbNuevo); [Link](this); [Link](false); [Link](jbAgregarModificar); [Link](this); [Link](jbEliminar); [Link](this); /*fin datos*/
/*detalle*/ JPanel jpDetalle = new JPanel(); [Link](jpDetalle,[Link]); [Link]([Link]("Lista de Productos")); [Link](new BorderLayout()); cPaginadorSuperior=new Paginador(tmpProductos); [Link](cPaginadorSuperior,BorderLayout.PAGE_START); [Link](this);//llama al actualizar tabla, redibuja la tabla [Link](); //hace la consulta [Link](jsp,[Link]); [Link](tmpProductos); [Link](true); [Link]().addListSelectionListener(this); [Link](new Dimension(500, 85)); [Link](true); [Link](jtTabla); /* cPaginadorInferior=new Paginador(tmpProductos); [Link](cPaginadorInferior,BorderLayout.PAGE_END); */ /*fin de detalle*/ JPanel jpBarraBotonesInferior = new JPanel(); [Link](new FlowLayout([Link])); [Link](jpBarraBotonesInferior, BorderLayout.PAGE_END); [Link](jbCerrar); [Link]([Link]); [Link](this); nuevoProducto(); [Link](); } @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]([Link]())){ [Link](0); }else if(e!=null && [Link]([Link]())){ nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ addProducto(); nuevoProducto(); actualizarTabla();
}else if(e!=null && [Link]([Link]())){ modificarProducto(); nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ eliminarProducto(); nuevoProducto(); actualizarTabla(); } } @Override public void valueChanged(ListSelectionEvent arg0) { int viewRow = [Link](); if (viewRow < 0) { [Link](""); } else { int modelRow = [Link](viewRow); [Link]([Link]("Selected Row in view: %d. " +"Selected Row in model: %d.",viewRow, modelRow)); seleccionarProducto(); } } @Override public void tableChanged(TableModelEvent event) { int row = [Link](); int column = [Link](); ProductosTableModelPaginado model = (ProductosTableModelPaginado) [Link](); String columnName = [Link](column); Producto data = (Producto)[Link](row, column); [Link]([Link]()+"-"+[Link]()+""+[Link]()+"-"+columnName); } @Override public void paginadorEventOcurrido(PaginadorEvent paginadorEvent) { actualizarTabla(); } public void seleccionarProducto(){ [Link]=[Link]([Link]()); if(producto!=null){ [Link]([Link]().toString()); [Link]([Link]()); [Link]([Link]()); } if([Link]!=null){ [Link](true); [Link](NUEVO);;
[Link]("Modificar"); [Link](MODIFICAR); [Link]("Eliminar"); [Link](ELIMINAR); }else{ nuevoProducto(); } } public void nuevoProducto(){ producto=new Producto(); [Link](""); [Link](""); [Link](false); [Link]("Agregar"); [Link]([Link]); [Link]("Limpiar"); [Link]([Link]); } public void addProducto(){ producto = new Producto(); Integer codigo=null; if([Link]()!=null && ![Link]().equals("") && ![Link]().contains(" ")){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]()); try{ [Link](producto); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this, [Link]()); } /*limpia el formulario*/ producto=new Producto(); [Link](""); [Link](""); [Link](false); [Link]("Agregar"); [Link]([Link]); [Link]("Eliminar"); [Link]([Link]); [Link](); } public void modificarProducto(){
if(producto!=null){ Integer codigo=null; if([Link]()!=null){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]()); } try{ [Link]([Link](), producto); [Link](); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this, [Link]()); } } public void eliminarProducto(){ try{ [Link]([Link]()); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this, [Link]()); } [Link](); [Link](); } public void actualizarTabla(){ [Link](jtTabla); [Link](tmpProductos); [Link](); [Link](jtTabla); [Link](); } public static void main(String [] args){ [Link](new Runnable() { public void run() { App app = new App(); [Link](true); } }); } }
[Link]
/*
* * * * * * * * * *
@autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
public class ProductosTableModelPaginado extends AbstractPaginable implements TableModel{ public List<Producto> productos = new ArrayList<Producto>(); public List<String> nombreColumnas = new ArrayList<String>(); public List<TableModelListener> tableModelListeners = new ArrayList<TableModelListener>(); public ProductoDAO productoDao = [Link]([Link]).getProductoDAO(); public ProductosTableModelPaginado(){ [Link]("Cdigo"); [Link]("Nombre"); [Link]("Disponible"); } @Override public Class<?> getColumnClass(int arg0) { Object obj=getValueAt(0, arg0); if(obj!=null) return getValueAt(0, arg0).getClass(); else return null; } @Override public int getColumnCount() { if(nombreColumnas!=null){ return [Link](); } return 0;
} @Override public String getColumnName(int arg0) { if(nombreColumnas!=null && arg0>=0 && [Link]()>arg0){ return [Link](arg0); } return null; } @Override public int getRowCount() { if(productos!=null){ return [Link](); } return 0; } @Override public Object getValueAt(int arg0, int arg1) { if(productos!=null && arg0>=0 && arg1>=0 && [Link]()>arg0){ Producto producto=[Link](arg0); switch(arg1){ case 0: return [Link](); case 1: return [Link](); case 2: return [Link](); } } return null; } @Override public void setValueAt(Object arg0, int arg1, int arg2) { if(productos!=null && arg1>=0 && arg2>=0 && [Link]()>arg1){ Producto producto=[Link](arg1); switch(arg2){ case 0: Integer codigoNuevo=null; if(arg0!=null){ codigoNuevo=(Integer)arg0; } [Link](codigoNuevo); break; case 1: String nombreNuevo=null; if(arg0!=null){ nombreNuevo=(String)arg0; } [Link](nombreNuevo); break; case 2: Boolean disponible=false; if(arg0!=null){ disponible=(Boolean)arg0; }
[Link](disponible); break; } } } @Override public boolean isCellEditable(int arg0, int arg1) { return false; } @Override public void removeTableModelListener(TableModelListener arg0) { [Link](arg0); } @Override public void addTableModelListener(TableModelListener arg0) { [Link](arg0); } @Override public void actualizar(int indice,int cantidadRenglones) throws DAOException{ productos=[Link](indice, cantidadRenglones); } @Override public int getCantidadRenglones() { return [Link](); } public void agregarProducto(Producto producto) throws DAOException,Exception{ [Link]([Link](producto)); } public void modificarProducto(Integer indice, Producto productoModificado) throws DAOException,Exception{ [Link]([Link](productoModificado)); Producto productoNoModificado=[Link](indice); if(productoModificado!=null && [Link]()!=null){ [Link]([Link]()); [Link]([Link]()); [Link]([Link]() ); } } public void eliminarProducto(int indice) throws DAOException,Exception{ Producto producto = [Link](indice);
[Link]([Link]()); } }
package [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; public class Paginador extends JPanel implements ActionListener{ private static final long serialVersionUID = 1L; protected [Link] listenerList =new [Link](); private static final String INICIO="INICIO"; private static final String ANTERIOR="ANTERIOR"; private static final String SIGUIENTE="SIGUIENTE"; private private private private JPanel jpBotonesPaginas = new JPanel(); JButton jbInicio = new JButton("|<"); JButton jbAnterior = new JButton("<"); JButton jbSiguiente = new JButton(">");
[Link](INICIO); [Link](this); [Link](jbAnterior); [Link](ANTERIOR); [Link](this); [Link](new FlowLayout()); [Link](jbSiguiente); [Link](SIGUIENTE); [Link](this); [Link]=paginable; inicio(); } public void inicio(){ [Link](false); [Link](false); [Link](true); try{ [Link](); }catch(Exception e){ [Link](this, [Link]()); } } protected void anterior() throws Exception{ if([Link]()){ [Link](true); [Link](true); [Link](true); }else{ [Link](false); [Link](false); [Link](true); } } protected void siguiente() throws Exception{ if([Link]()){ [Link](true); [Link](true); [Link](true); }else { [Link](false); } } @Override public void actionPerformed(ActionEvent event) { try{ if(event!=null && [Link]([Link]())){
inicio(); }else if(event!=null && [Link]([Link]())){ anterior(); }else if(event!=null && [Link]([Link]())){ siguiente(); } PaginadorEvent paginadorEvent= new PaginadorEvent(this); [Link](paginadorEvent); }catch(Exception e){ [Link](this, [Link]()); } } public void addPaginadorEventListener(PaginadorEventListener listener) { [Link]([Link], listener); } public void removePaginadorEventListener(PaginadorEventListener listener) { [Link]([Link], listener); } void firePaginadorEvent(PaginadorEvent paginadorEvent) { Object[] listeners = [Link](); for (int i=0; i<[Link]; i+=2) { if (listeners[i]==[Link]) { ((PaginadorEventListener)listeners[i+1]).paginadorEventOcurrido(paginadorEven t); } } } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link];
public interface Paginable { public int getCantidadRenglones(); public void actualizar(int indice,int cantidadRenglones) throws Exception; public int getIndiceRenglon(); public void setIndiceRenglon(int indiceRenglon); public int getMaxCantidadRenglones(); public void setMaxCantidadRenglones(int maxCantidadRenglones); public void inicio() throws Exception; public boolean anterior() throws Exception; public boolean siguiente() throws Exception; }
[Link]
package [Link]; public abstract class AbstractPaginable implements Paginable{ private int indiceRenglon=0; private int maxCantidadRenglones=5; @Override public int getIndiceRenglon() { return indiceRenglon; } @Override public void setIndiceRenglon(int indiceRenglon) { [Link]=indiceRenglon; } @Override public int getMaxCantidadRenglones() { return maxCantidadRenglones; } @Override public void setMaxCantidadRenglones(int maxCantidadRenglones) { [Link]=maxCantidadRenglones; } @Override public void inicio() throws Exception { indiceRenglon=0; actualizar(indiceRenglon,maxCantidadRenglones); } @Override public boolean anterior() throws Exception { indiceRenglon=indiceRenglon-maxCantidadRenglones; boolean tieneAnterior=indiceRenglon>=maxCantidadRenglones; if(!tieneAnterior){ indiceRenglon=0; }
actualizar(indiceRenglon,maxCantidadRenglones); return tieneAnterior; } @Override public boolean siguiente() throws Exception { boolean tieneSiguiente=!(getCantidadRenglones() < maxCantidadRenglones); if(tieneSiguiente){ indiceRenglon=indiceRenglon+getCantidadRenglones(); actualizar(indiceRenglon,maxCantidadRenglones); } return tieneSiguiente; } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; import [Link]; public interface PaginadorEventListener extends EventListener { public void paginadorEventOcurrido(PaginadorEvent paginadorEvent); }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; public class PaginadorEvent extends EventObject{ private static final long serialVersionUID = 1L; public PaginadorEvent(Object source){ super(source); } }
package [Link]; public class Producto { private Integer id; private Integer codigo; private String nombre; private Boolean disponible=false; public Producto(){ } public Integer getId() { return id; } public void setId(Integer id) { [Link] = id; } public Integer getCodigo() { return codigo; } public void setCodigo(Integer codigo) { [Link] = codigo; } public String getNombre() { return nombre; }
public void setNombre(String nombre) { [Link] = nombre; } public Boolean getDisponible() { if(disponible!=null) return disponible; else return false; } public void setDisponible(Boolean disponible) { [Link] = disponible; } }
[Link]
package [Link]; import [Link]; public abstract class DAOFactory { //lista de daos soportados por el factory public static final int PGDB = 1; //lista de metodos para cada dao que puede ser creado. //los factories deberan implementar estos metodos. public abstract ProductoDAO getProductoDAO(); public static DAOFactory getDAOFactory(int witchFactory) { try { switch(witchFactory){ case PGDB: return new PgdbDAOFactory(); default: return null; } } catch (Exception ex) { throw new RuntimeException("Couldn't create DAOFactory: "); } } }
[Link]
/* * @autor: * *
* @e-mail: * fernando6867@[Link] * * @sitio web: * [Link] * [Link] * */ package [Link]; import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
import [Link]; import [Link]; import [Link]; public class PgdbProductoDAO implements ProductoDAO { private static final String INSERT_SQL =" insert into [Link] (codigo, nombre, disponible) values (?,?,?)"; private static final String UPDATE_SQL =" update [Link] set codigo=?, nombre=?, disponible=? where id=?"; private static final String DELETE_SQL =" delete from [Link] where id=?"; private static final String FIND_SQL = " select [Link], [Link], [Link], [Link] " +" from [Link] as o "; private static final String FIND_ALL_SQL = id,codigo,nombre,disponible " " select " select
public static final String bdUrl = "jdbc:postgresql://localhost/productos?user=productoadmin&password=productoad min"; public static final String url= "jdbc:postgresql://localhost/productos"; public PgdbProductoDAO(){ super(); } public Connection getConnection() throws SQLException { Connection connection = [Link](bdUrl); return connection; }
@Override public Integer create(Producto producto) throws PgdbProductoDAOException{ if(producto!=null){ Connection conn = null; PreparedStatement sth = null; ResultSet rs =null; try { conn = getConnection(); //Statement.NO_GENERATED_KEYS por el id esta definido con serial. sth = [Link](INSERT_SQL,ResultSet.TYPE_SCROLL_INSENSITIVE,Statement. NO_GENERATED_KEYS); [Link](); [Link](1, [Link]()); [Link](2, [Link]()); [Link](3, [Link]()); [Link](); rs=[Link](); if([Link]()){ Integer id = (Integer) [Link](1); [Link](id); } }catch (Exception e) { throw new PgdbProductoDAOException([Link], INSERT_SQL,e); } finally { try{ if(![Link]()) [Link](); }catch(Exception e){ throw new PgdbProductoDAOException([Link], INSERT_SQL,e); } } return [Link](); } return null; } @Override public Integer update(Producto producto) throws PgdbProductoDAOException{ Connection conn = null; PreparedStatement sth = null; Integer idUpdate=null; ResultSet rs=null; try { conn = getConnection(); sth = [Link](UPDATE_SQL);
[Link](); [Link](1, [Link]()); [Link](2, [Link]()); [Link](3, [Link]()); //id del producto a updatear [Link](4, [Link]()); [Link](); rs=[Link](); if([Link]()){ idUpdate = (Integer) [Link](1); [Link](idUpdate); } }catch (Exception e) { throw new PgdbProductoDAOException([Link], UPDATE_SQL,e); } finally { try{ if(![Link]()) [Link](); }catch(Exception e){ throw new PgdbProductoDAOException([Link], UPDATE_SQL,e); } } return idUpdate; } @Override public Integer remove(Integer id) throws PgdbProductoDAOException{ Connection conn = null; PreparedStatement sth = null; Integer idUpdate=null; ResultSet rs=null; try { conn = getConnection(); sth = [Link](DELETE_SQL); [Link](); [Link](1, id); [Link](); rs=[Link](); if([Link]()){ idUpdate = (Integer) [Link](1); } }catch (Exception e) { throw new PgdbProductoDAOException([Link], DELETE_SQL,e); } finally { try{ if(![Link]()) [Link](); }catch(Exception e){ throw new PgdbProductoDAOException([Link], DELETE_SQL,e); }
} return idUpdate; } @Override public Producto find(Integer id) throws PgdbProductoDAOException{ Producto producto=null; Connection conn = null; Statement sth = null; try { conn = getConnection(); String sql=FIND_SQL.replace("?", [Link]()); sth = [Link](); ResultSet rs = [Link](sql); [Link](); producto = new Producto(); int idActual=[Link]("id"); if(idActual>0) [Link](idActual); int codigo=[Link]("codigo"); if(codigo>0) [Link](codigo); [Link]([Link]("nombre")); [Link]([Link]("disponible")); }catch (SQLException e) { throw new PgdbProductoDAOException([Link], FIND_ALL_SQL,e); } finally { try{ if(![Link]()) [Link](); }catch(Exception e){ throw new PgdbProductoDAOException([Link], FIND_ALL_SQL,e); } } return producto; } @Override public List<Producto> findAll() throws PgdbProductoDAOException{ List<Producto> productos = new ArrayList<Producto>(); Connection conn = null; Statement sth=null; ResultSet rs =null; try { conn = getConnection(); sth = [Link](); rs = [Link](FIND_ALL_SQL); while([Link]()) { Producto producto = new Producto(); int idActual=[Link]("id"); if(idActual>0)
[Link](idActual); int codigo=[Link]("codigo"); if(codigo>0) [Link](codigo); [Link]([Link]("nombre")); [Link]([Link]("disponible")); [Link](producto); } }catch (SQLException e) { throw new PgdbProductoDAOException(PgdbProductoDAOException.FINDALL_PAGINADO,FIND_ALL_S QL_PAGINADO,e); } finally { try{ if(![Link]()) [Link](); }catch(Exception e){ throw new PgdbProductoDAOException(PgdbProductoDAOException.FINDALL_PAGINADO, FIND_ALL_SQL_PAGINADO,e); } } return productos; } @Override public List<Producto> findAll(int indice,int cantidadRenglones) throws PgdbProductoDAOException{ List<Producto> productos = new ArrayList<Producto>(); Connection conn = null; Statement sth=null; ResultSet rs=null; try { conn = getConnection(); //[Link] String sql=""; sql=[Link]("", FIND_ALL_SQL_PAGINADO); sql=[Link]("?1", [Link](cantidadRenglones)); sql=[Link]("?2", [Link](indice)); sth = [Link]();//ResultSet.TYPE_SCROLL_INSENSITIVE,Statement.NO_GENER ATED_KEYS); //[Link](1, cantidadRenglones); //[Link](2, indice); rs = [Link](sql); while([Link]()) { Producto producto = new Producto(); int idActual=[Link]("id"); if(idActual>0) [Link](idActual); int codigo=[Link]("codigo");
if(codigo>0) [Link](codigo); [Link]([Link]("nombre")); [Link]([Link]("disponible")); //[Link] [Link](producto); } }catch (Exception e) { [Link](); } finally { try{ if(![Link]()) [Link](); }catch(Exception e){ [Link](); } } return productos; } } /* * [Link]: This ResultSet is closed. at [Link](AbstractJdbc2ResultSe [Link]) at [Link]([Link]: 1806) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]$[Link]([Link]) at [Link]([Link] 7) at [Link]([Link]) at [Link](BasicButtonListener. java:236) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link])
at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]: 269) at [Link]([Link] ) at [Link]([Link]: 174) at [Link]([Link]) at [Link]([Link]) at [Link]([Link]) * */
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; public class PgdbProductoDAOException extends DAOException { private static final long serialVersionUID = 1L; public PgdbProductoDAOException(String tipo, String sentenciaSQL,Exception e) { super(tipo, sentenciaSQL, e); [Link]("-"+tipo); [Link]("-"+sentenciaSQL); [Link](); [Link]("-"); } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; import [Link]; import [Link]; public interface ProductoDAO { public Integer create(Producto producto) throws DAOException; public Integer update(Producto producto) throws DAOException; public Integer remove(Integer id) throws DAOException; public Producto find(Integer id) throws DAOException; public List<Producto> findAll() throws DAOException; public List<Producto> findAll(int indice,int cantidadRenglones) throws DAOException; }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; public class DAOException extends Exception{ private static final long serialVersionUID = 1L; public static final String CREATE="Error al crear el Registro."; public static final String UPDATE="Error al modificar el Registro."; public static final String REMOVE="Error al eliminar el Registro.";
public static final String FIND="Error, registro inexistente."; public static final String FINDALL="Error al buscar todos los registros"; public static final String FINDALL_PAGINADO="Error al buscar todos los registros"; public String mensaje; public String detalle; public String sentenciaSQL; public DAOException(String tipo, String sentenciaSQL,Exception e){ [Link]=tipo; [Link]=[Link](); [Link]=sentenciaSQL; } }
2. Ejemplo 2 - Hibernate: Tomando el proyecto anterior pero ahora implemento la persistencia por medio de Hibernate.
package [Link]; import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
import import import import import import import import import import import import import
[Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; import [Link]; public class App extends JFrame implements ActionListener, ListSelectionListener, TableModelListener, PaginadorEventListener{ private static final long serialVersionUID = 1L; protected protected protected protected protected static static static static static final final final final final String String String String String CERRAR="CERRAR"; NUEVO="NUEVO"; AGREGAR="AGREGAR"; MODIFICAR="MODIFICAR"; ELIMINAR="ELIMINAR";
protected JTextField jtfProductoCodigo=new JTextField(15); protected JCheckBox jchbProductoDisponible=new JCheckBox(); protected JTextField jtfProductoNombre=new JTextField(15); protected JButton jbNuevo=new JButton("Nuevo"); protected JButton jbAgregarModificar=new JButton("AgregarModificar"); protected JButton jbEliminar=new JButton("Eliminar"); protected Producto producto=new Producto(); protected ProductosTableModelPaginado tmpProductos=new ProductosTableModelPaginado(); protected Paginador cPaginadorSuperior; protected Paginador cPaginadorInferior; protected JScrollPane jsp=new JScrollPane(); protected JTable jtTabla = new JTable(); protected JButton jbCerrar = new JButton("Cerrar");
public App(){ [Link]("Ejemplo 2 DAO: Hibernate"); [Link](new BorderLayout()); JPanel jpDatos = new JPanel(); [Link](new BorderLayout()); [Link](jpDatos,BorderLayout.PAGE_START); [Link]([Link]("Datos del Producto")); /*formulario*/ JPanel jpFormulario = new JPanel(); [Link](new GridBagLayout()); [Link](jpFormulario,[Link]); [Link](new JLabel("Cdigo: ",[Link]),new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoCodigo,new GridBagConstraints(1,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jchbProductoDisponible,new GridBagConstraints(2,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](new JLabel("Nombre: ",[Link]),new GridBagConstraints(0,1,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoNombre,new GridBagConstraints(1,1,2,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); JPanel jpBarraBotonesFormulario = new JPanel(); [Link](new FlowLayout([Link])); [Link](jpBarraBotonesFormulario,[Link]); [Link](jbNuevo); [Link](this); [Link](false); [Link](jbAgregarModificar); [Link](this); [Link](jbEliminar); [Link](this); /*fin datos*/ /*detalle*/
JPanel jpDetalle = new JPanel(); [Link](jpDetalle,[Link]); [Link]([Link]("Lis ta de Productos")); [Link](new BorderLayout()); cPaginadorSuperior=new Paginador(tmpProductos); [Link](cPaginadorSuperior,BorderLayout.PAGE_START) ; [Link](this);//llam a al actualizar tabla, redibuja la tabla [Link](); //hace la consulta [Link](jsp,[Link]); [Link](tmpProductos); [Link](true); [Link]().addListSelectionListener(this ); [Link](new Dimension(500, 85)); [Link](true); [Link](jtTabla); /* cPaginadorInferior=new Paginador(tmpProductos); [Link](cPaginadorInferior,BorderLayout.PAGE_END); */ /*fin de detalle*/ JPanel jpBarraBotonesInferior = new JPanel(); [Link](new FlowLayout([Link])); [Link](jpBarraBotonesInferior, BorderLayout.PAGE_END); [Link](jbCerrar); [Link]([Link]); [Link](this); nuevoProducto(); [Link](); } @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]([Link]())){ [Link](0); }else if(e!=null &&
[Link]([Link]())){ nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ addProducto(); nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ modificarProducto(); nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ eliminarProducto(); nuevoProducto(); actualizarTabla(); } } @Override public void valueChanged(ListSelectionEvent arg0) { int viewRow = [Link](); if (viewRow < 0) { [Link](""); } else { int modelRow = [Link](viewRow); [Link]([Link]("Selected Row in view: %d. " +"Selected Row in model: %d.",viewRow, modelRow)); seleccionarProducto(); } } @Override public void tableChanged(TableModelEvent event) { int row = [Link](); int column = [Link](); ProductosTableModelPaginado model = (ProductosTableModelPaginado) [Link](); String columnName = [Link](column); Producto data = (Producto)[Link](row, column); [Link]([Link]()+""+[Link]()+"-"+[Link]()+"-"+columnName); } @Override public void paginadorEventOcurrido(PaginadorEvent paginadorEvent) { actualizarTabla(); } public void seleccionarProducto(){ [Link]=[Link]([Link]
tedRow()); if(producto!=null){ [Link]([Link]().toString() ); [Link]([Link]()); [Link]([Link] ()); } if([Link]!=null){ [Link](true); [Link](NUEVO);; [Link]("Modificar"); [Link](MODIFICAR); [Link]("Eliminar"); [Link](ELIMINAR); }else{ nuevoProducto(); } } public void nuevoProducto(){ producto=new Producto(); [Link](""); [Link](""); [Link](false); [Link]("Agregar"); [Link]([Link]); [Link]("Limpiar"); [Link]([Link]); } public void addProducto(){ producto = new Producto(); Integer codigo=null; if([Link]()!=null && ![Link]().equals("") && ![Link]().contains(" ")){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]( )); try{ [Link](producto); }catch(DAOException e){ [Link](this, [Link]);
}catch(Exception e){ [Link](this, [Link]()); } /*limpia el formulario*/ producto=new Producto(); [Link](""); [Link](""); [Link](false); [Link]("Agregar"); [Link]([Link]); [Link]("Eliminar"); [Link]([Link]); [Link](); } public void modificarProducto(){ if(producto!=null){ Integer codigo=null; if([Link]()!=null){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]( )); } try{ [Link]([Link](), producto); [Link](); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this, [Link]()); } } public void eliminarProducto(){ try{ [Link]([Link]()); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this,
[Link]()); } [Link](); [Link](); } public void actualizarTabla(){ [Link](jtTabla); [Link](tmpProductos); [Link](); [Link](jtTabla); [Link](); } public static void main(String [] args){ [Link](new Runnable() { public void run() { App app = new App(); [Link](true); } }); } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
public class ProductosTableModelPaginado extends AbstractPaginable implements TableModel{ public List<Producto> productos = new
ArrayList<Producto>(); public List<String> nombreColumnas = new ArrayList<String>(); public List<TableModelListener> tableModelListeners = new ArrayList<TableModelListener>(); public ProductoDAO productoDao = [Link]([Link] [Link]).getProductoDAO(); public ProductosTableModelPaginado(){ [Link]("Cdigo"); [Link]("Nombre"); [Link]("Disponible"); } @Override public Class<?> getColumnClass(int arg0) { return getValueAt(0, arg0).getClass(); } @Override public int getColumnCount() { if(nombreColumnas!=null){ return [Link](); } return 0; } @Override public String getColumnName(int arg0) { if(nombreColumnas!=null && arg0>=0 && [Link]()>arg0){ return [Link](arg0); } return null; } @Override public int getRowCount() { if(productos!=null){ return [Link](); } return 0; } @Override public Object getValueAt(int arg0, int arg1) { if(productos!=null && arg0>=0 && arg1>=0 && [Link]()>arg0){ Producto producto=[Link](arg0); switch(arg1){ case 0: return [Link](); case 1: return [Link](); case 2: return
[Link](); } } return null; } @Override public void setValueAt(Object arg0, int arg1, int arg2) { if(productos!=null && arg1>=0 && arg2>=0 && [Link]()>arg1){ Producto producto=[Link](arg1); switch(arg2){ case 0: Integer codigoNuevo=null; if(arg0!=null){ codigoNuevo=(Integer)arg0; } [Link](codigoNuevo); break; case 1: String nombreNuevo=null; if(arg0!=null){ nombreNuevo=(String)arg0; } [Link](nombreNuevo); break; case 2: Boolean disponible=false; if(arg0!=null){ disponible=(Boolean)arg0; } [Link](disponible); break; } } } @Override public boolean isCellEditable(int arg0, int arg1) { return false; } @Override public void removeTableModelListener(TableModelListener arg0) { [Link](arg0); } @Override public void addTableModelListener(TableModelListener arg0) { [Link](arg0); }
@Override public void actualizar(int indice,int cantidadRenglones) throws DAOException{ productos=[Link](indice, cantidadRenglones); } @Override public int getCantidadRenglones() { return [Link](); } public void agregarProducto(Producto producto) throws DAOException,Exception{ [Link]([Link](producto)); } public void modificarProducto(Integer indice, Producto productoModificado) throws DAOException,Exception{ [Link]([Link](productoModif icado)); Producto productoNoModificado=[Link](indice); if(productoModificado!=null && [Link]()!=null){ [Link]([Link]()); [Link]([Link] go()); [Link]([Link] Disponible()); } } public void eliminarProducto(int indice) throws DAOException,Exception{ Producto producto = [Link](indice); [Link]([Link]()); } }
//lista de metodos para cada dao que puede ser creado. //los factories deberan implementar estos metodos. public abstract ProductoDAO getProductoDAO(); public static DAOFactory getDAOFactory(int witchFactory) { try { switch(witchFactory){ case HIBERNATE: return new HbDAOFactory(); default: return null; } } catch (Exception ex) { throw new RuntimeException("Couldn't create DAOFactory: "); } } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; import [Link]; import import import import [Link]; [Link]; [Link]; [Link];
import [Link]; import [Link]; import [Link]; import [Link]; public class HbProductoDAO implements ProductoDAO { public HbProductoDAO(){ super(); }
@Override public Integer create(Producto producto) throws HbProductoDAOException{ if(producto!=null){ Session session = [Link]().openSession(); Transaction tx = [Link](); try { //Java Persistence with Hibernate pg46 Integer id = (Integer) [Link](producto); [Link](id); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new HbProductoDAOException([Link],e); } finally { [Link](); } return [Link](); } return null; } @Override public Integer update(Producto producto) throws HbProductoDAOException{ Session session = [Link]().openSession(); Transaction tx = [Link](); try { producto=(Producto)[Link](producto); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new HbProductoDAOException([Link],e); } finally { [Link](); } return [Link](); } @Override public Integer remove(Integer id) throws HbProductoDAOException{ Session session = [Link]().openSession(); Transaction tx = [Link](); Integer idRemove=null; try { Producto producto = (Producto)[Link]([Link], id); idRemove=[Link]();
[Link](producto); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new HbProductoDAOException([Link],e); } finally { [Link](); } return idRemove; } @Override public Producto find(Integer id) throws HbProductoDAOException{ Producto producto=null; Session session = [Link]().openSession(); Transaction tx = [Link](); try { producto = (Producto)[Link]([Link], id); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new HbProductoDAOException([Link],e); } finally { [Link](); } return producto; } @SuppressWarnings("unchecked") @Override public List<Producto> findAll() throws HbProductoDAOException{ List<Producto> productos = new ArrayList<Producto>(); Session session = [Link]().openSession(); Transaction tx = [Link](); [Link]([Link]()); try { Query query=[Link]("[Link]"); productos= [Link](); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new HbProductoDAOException([Link],e); } finally { [Link](); }
return productos; } @SuppressWarnings("unchecked") @Override public List<Producto> findAll(int indice,int cantidadRenglones) throws HbProductoDAOException{ List<Producto> productos = new ArrayList<Producto>(); Session session = [Link]().openSession(); Transaction tx = [Link](); try { Query query=[Link]("[Link]"); [Link](cantidadRenglones); [Link](indice); productos=[Link](); /* * alternativa * SQLQuery query=[Link]("select [Link], [Link], [Link], [Link] from productos o "); [Link](cantidadRenglones); [Link](indice); List<Object[]> objs = [Link](); if(objs!=null){ for(Object [] obj:objs){ Producto producto= new Producto(); if(obj[0]!=null){ [Link]((Integer)obj[0]); } if(obj[1]!=null){ [Link]((Integer)obj[1]); } if(obj[2]!=null){ [Link]((String)obj[2]); } if(obj[3]!=null){ [Link]((Boolean)obj[3]); } [Link](producto); } } */ [Link](); }catch (Exception e) { if(tx!=null) [Link]();
throw new HbProductoDAOException(HbProductoDAOException.FINDALL_PAGINADO,e) ; } finally { [Link](); } if(productos==null) productos = new ArrayList<Producto>(); return productos; } //[Link] [Link] //[Link] terion/[Link] @SuppressWarnings("unchecked") public List<Producto> findAll(int indice,int cantidadRenglones,List filtro) throws HbProductoDAOException{ List<Producto> productos = new ArrayList<Producto>(); Session session = [Link]().openSession(); Transaction tx = [Link](); try { productos = (List<Producto>) [Link]([Link]) .addOrder( [Link]("codigo") ) .setFirstResult(indice) .setMaxResults(cantidadRenglones).list(); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new HbProductoDAOException(HbProductoDAOException.FINDALL_PAGINADO,e) ; } finally { [Link](); } if(productos==null) productos = new ArrayList<Producto>(); return productos; } }
[Link]
package [Link]; import [Link]; public class HbProductoDAOException extends DAOException {
private static final long serialVersionUID = 1L; public HbProductoDAOException(String tipo, Exception e) { super(tipo, "",e); [Link]("-"+tipo); [Link]("-"+sentenciaSQL); [Link](); [Link]("-"); } }
[Link]
package [Link]; import [Link]; import [Link]; @SuppressWarnings("deprecation") public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { //Create the SessionFactory from [Link] sessionFactory = new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed [Link]("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
name="[Link]">jdbc:postgresql://localhost/productos</prop erty> <property name="[Link]">productoadmin</property> <property name="[Link]">productoadmin</property> <property name="connection.pool_size">1</property> <property name="dialect">[Link]</property> <property name="current_session_context_class">thread</property> <property name="cache.provider_class">[Link] rovider</property> <property name="show_sql">true</property> <property name="[Link]">update</property> <mapping resource="ar/com/hdcm/producto/modelo/[Link]"/> </session-factory> </hibernate-configuration>
[Link]
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "[Link] <hibernate-mapping> <class name="[Link]" table="productos"> <id name="id" column="id" type="integer" > <generator class="sequence"> <param name="sequence">productos_id_seq</param> </generator> </id> <property name="codigo" column="codigo" type="integer"/> <property name="nombre" column="nombre" type="string" length="52"/> <property name="disponible" column="disponible" type="boolean" insert="false"/> </class> <query name="[Link]" > select producto from Producto producto </query> </hibernate-mapping>
Tarballs del proyecto: [Link] El proyecto necesita unos jar, que fueron construidos desde el "ejemplo 1 -
package [Link]; import import import import import import import import import import import import import import import import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
import [Link]; import [Link]; public class App extends JFrame implements ActionListener, ListSelectionListener, TableModelListener, PaginadorEventListener{ private static final long serialVersionUID = 1L; protected protected protected protected protected static static static static static final final final final final String String String String String CERRAR="CERRAR"; NUEVO="NUEVO"; AGREGAR="AGREGAR"; MODIFICAR="MODIFICAR"; ELIMINAR="ELIMINAR";
protected JTextField jtfProductoCodigo=new JTextField(15); protected JCheckBox jchbProductoDisponible=new JCheckBox(); protected JTextField jtfProductoNombre=new JTextField(15); protected JButton jbNuevo=new JButton("Nuevo"); protected JButton jbAgregarModificar=new JButton("AgregarModificar"); protected JButton jbEliminar=new JButton("Eliminar"); protected Producto producto=new Producto(); protected ProductosTableModelPaginado tmpProductos=new ProductosTableModelPaginado(); protected Paginador cPaginadorSuperior; protected Paginador cPaginadorInferior; protected JScrollPane jsp=new JScrollPane(); protected JTable jtTabla = new JTable(); protected JButton jbCerrar = new JButton("Cerrar");
public App(){ [Link]("Ejemplo 3 DAO: JPA"); [Link](new BorderLayout()); JPanel jpDatos = new JPanel(); [Link](new BorderLayout()); [Link](jpDatos,BorderLayout.PAGE_START); [Link]([Link]("Datos del Producto")); /*formulario*/ JPanel jpFormulario = new JPanel(); [Link](new GridBagLayout()); [Link](jpFormulario,[Link]); [Link](new JLabel("Cdigo: ",[Link]),new GridBagConstraints(0,0,1,1,0.0,0.0, [Link],[Link],new
Insets(5,5,10,5),1,1)); [Link](jtfProductoCodigo,new GridBagConstraints(1,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jchbProductoDisponible,new GridBagConstraints(2,0,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](new JLabel("Nombre: ",[Link]),new GridBagConstraints(0,1,1,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); [Link](jtfProductoNombre,new GridBagConstraints(1,1,2,1,0.0,0.0, [Link],[Link],new Insets(5,5,10,5),1,1)); JPanel jpBarraBotonesFormulario = new JPanel(); [Link](new FlowLayout([Link])); [Link](jpBarraBotonesFormulario,[Link]); [Link](jbNuevo); [Link](this); [Link](false); [Link](jbAgregarModificar); [Link](this); [Link](jbEliminar); [Link](this); /*fin datos*/ /*detalle*/ JPanel jpDetalle = new JPanel(); [Link](jpDetalle,[Link]); [Link]([Link]("Lis ta de Productos")); [Link](new BorderLayout()); cPaginadorSuperior=new Paginador(tmpProductos); [Link](cPaginadorSuperior,BorderLayout.PAGE_START) ; [Link](this);//llam a al actualizar tabla, redibuja la tabla [Link](); //hace la consulta [Link](jsp,[Link]); [Link](tmpProductos); [Link](true); [Link]().addListSelectionListener(this
); [Link](new Dimension(500, 85)); [Link](true); [Link](jtTabla); /* cPaginadorInferior=new Paginador(tmpProductos); [Link](cPaginadorInferior,BorderLayout.PAGE_END); */ /*fin de detalle*/ JPanel jpBarraBotonesInferior = new JPanel(); [Link](new FlowLayout([Link])); [Link](jpBarraBotonesInferior, BorderLayout.PAGE_END); [Link](jbCerrar); [Link]([Link]); [Link](this); nuevoProducto(); [Link](); } @Override public void actionPerformed(ActionEvent e) { if(e!=null && [Link]([Link]())){ [Link](0); }else if(e!=null && [Link]([Link]())){ nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ addProducto(); nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ modificarProducto(); nuevoProducto(); actualizarTabla(); }else if(e!=null && [Link]([Link]())){ eliminarProducto(); nuevoProducto(); actualizarTabla(); } }
@Override public void valueChanged(ListSelectionEvent arg0) { int viewRow = [Link](); if (viewRow < 0) { [Link](""); } else { int modelRow = [Link](viewRow); [Link]([Link]("Selected Row in view: %d. " +"Selected Row in model: %d.",viewRow, modelRow)); seleccionarProducto(); } } @Override public void tableChanged(TableModelEvent event) { int row = [Link](); int column = [Link](); ProductosTableModelPaginado model = (ProductosTableModelPaginado) [Link](); String columnName = [Link](column); Producto data = (Producto)[Link](row, column); [Link]([Link]()+""+[Link]()+"-"+[Link]()+"-"+columnName); } @Override public void paginadorEventOcurrido(PaginadorEvent paginadorEvent) { actualizarTabla(); } public void seleccionarProducto(){ [Link]=[Link]([Link] tedRow()); if(producto!=null){ [Link]([Link]().toString() ); [Link]([Link]()); [Link]([Link] ()); } if([Link]!=null){ [Link](true); [Link](NUEVO);; [Link]("Modificar"); [Link](MODIFICAR); [Link]("Eliminar"); [Link](ELIMINAR); }else{
nuevoProducto(); } } public void nuevoProducto(){ producto=new Producto(); [Link](""); [Link](""); [Link](false); [Link]("Agregar"); [Link]([Link]); [Link]("Limpiar"); [Link]([Link]); } public void addProducto(){ producto = new Producto(); Integer codigo=null; if([Link]()!=null && ![Link]().equals("") && ![Link]().contains(" ")){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]( )); try{ [Link](producto); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this, [Link]()); } /*limpia el formulario*/ producto=new Producto(); [Link](""); [Link](""); [Link](false); [Link]("Agregar"); [Link]([Link]); [Link]("Eliminar"); [Link]([Link]); [Link](); } public void modificarProducto(){
if(producto!=null){ Integer codigo=null; if([Link]()!=null){ codigo=[Link]([Link]()); } [Link](codigo); [Link]([Link]()); [Link]([Link]( )); } try{ [Link]([Link](), producto); [Link](); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this, [Link]()); } } public void eliminarProducto(){ try{ [Link]([Link]()); }catch(DAOException e){ [Link](this, [Link]); }catch(Exception e){ [Link](this, [Link]()); } [Link](); [Link](); } public void actualizarTabla(){ [Link](jtTabla); [Link](tmpProductos); [Link](); [Link](jtTabla); [Link](); } public static void main(String [] args){ [Link](new Runnable() { public void run() { App app = new App(); [Link](true); }
}); } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
public class ProductosTableModelPaginado extends AbstractPaginable implements TableModel{ public List<Producto> productos = new ArrayList<Producto>(); public List<String> nombreColumnas = new ArrayList<String>(); public List<TableModelListener> tableModelListeners = new ArrayList<TableModelListener>(); public ProductoDAO productoDao = [Link]([Link]).getProductoDAO(); public ProductosTableModelPaginado(){ [Link]("Cdigo"); [Link]("Nombre"); [Link]("Disponible"); } @Override public Class<?> getColumnClass(int arg0) { return getValueAt(0, arg0).getClass(); } @Override
public int getColumnCount() { if(nombreColumnas!=null){ return [Link](); } return 0; } @Override public String getColumnName(int arg0) { if(nombreColumnas!=null && arg0>=0 && [Link]()>arg0){ return [Link](arg0); } return null; } @Override public int getRowCount() { if(productos!=null){ return [Link](); } return 0; } @Override public Object getValueAt(int arg0, int arg1) { if(productos!=null && arg0>=0 && arg1>=0 && [Link]()>arg0){ Producto producto=[Link](arg0); switch(arg1){ case 0: return [Link](); case 1: return [Link](); case 2: return [Link](); } } return null; } @Override public void setValueAt(Object arg0, int arg1, int arg2) { if(productos!=null && arg1>=0 && arg2>=0 && [Link]()>arg1){ Producto producto=[Link](arg1); switch(arg2){ case 0: Integer codigoNuevo=null; if(arg0!=null){ codigoNuevo=(Integer)arg0; } [Link](codigoNuevo); break; case 1: String nombreNuevo=null;
if(arg0!=null){ nombreNuevo=(String)arg0; } [Link](nombreNuevo); break; case 2: Boolean disponible=false; if(arg0!=null){ disponible=(Boolean)arg0; } [Link](disponible); break; } } } @Override public boolean isCellEditable(int arg0, int arg1) { return false; } @Override public void removeTableModelListener(TableModelListener arg0) { [Link](arg0); } @Override public void addTableModelListener(TableModelListener arg0) { [Link](arg0); } @Override public void actualizar(int indice,int cantidadRenglones) throws DAOException{ productos=[Link](indice, cantidadRenglones); } @Override public int getCantidadRenglones() { return [Link](); } public void agregarProducto(Producto producto) throws DAOException{ [Link]([Link](producto)); } public void modificarProducto(Integer indice, Producto productoModificado) throws DAOException{ [Link]([Link](productoModif
icado)); Producto productoNoModificado=[Link](indice); if(productoModificado!=null && [Link]()!=null){ [Link]([Link]()); [Link]([Link] go()); [Link]([Link] Disponible()); } } public void eliminarProducto(int indice) throws DAOException{ Producto producto = [Link](indice); [Link]([Link]()); } }
package [Link]; import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
@Entity @Table(name="productos") @NamedQueries({ @NamedQuery(name="[Link]" , query= " select producto from Producto producto ")}) @SequenceGenerator(name="sec", sequenceName="productos_id_seq") public class Producto {
public Producto(){ } @Id @GeneratedValue(generator="sec") public Integer getId() { return id; } public void setId(Integer id) { [Link] = id; } public Integer getCodigo() { return codigo; } public void setCodigo(Integer codigo) { [Link] = codigo; } @Column(length=52,nullable=false) public String getNombre() { return nombre; } public void setNombre(String nombre) { [Link] = nombre; } public Boolean getDisponible() { if(disponible!=null) return disponible; else return false; } public void setDisponible(Boolean disponible) { [Link] = disponible; } }
[Link]
package [Link]; import [Link]; public abstract class DAOFactory { //lista de daos soportados por el factory public static final int JPA = 1; //lista de metodos para cada dao que puede ser creado. //los factories deberan implementar estos metodos. public abstract ProductoDAO getProductoDAO();
public static DAOFactory getDAOFactory(int witchFactory) { try { switch(witchFactory){ case JPA: return new JpaDAOFactory(); default: return null; } } catch (Exception ex) { throw new RuntimeException("Couldn't create DAOFactory: "); } } }
[Link]
/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */
package [Link]; import [Link]; import [Link]; import import import import import import import import import [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];
import [Link]; import [Link]; import [Link]; public class JpaProductoDAO implements ProductoDAO { public JpaProductoDAO(){ super(); }
@Override public Integer create(Producto producto) throws JpaProductoDAOException{ if(producto!=null){ EntityManagerFactory emf = [Link]("productojpa"); EntityManager em = [Link](); EntityTransaction tx=null; try { tx = [Link](); [Link](); [Link](producto); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new JpaProductoDAOException([Link],e); } finally { [Link](); [Link](); } return [Link](); } return null; } @Override public Integer update(Producto producto) throws JpaProductoDAOException{ EntityManagerFactory emf = [Link]("productojpa"); EntityManager em = [Link](); EntityTransaction tx=null; try { tx = [Link](); [Link](); producto=(Producto)[Link](producto); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new JpaProductoDAOException([Link],e); } finally { [Link](); [Link](); } return [Link](); } @Override public Integer remove(Integer id) throws JpaProductoDAOException{ EntityManagerFactory emf = [Link]("productojpa");
EntityManager em = [Link](); EntityTransaction tx=null; Integer idRemove=null; try { tx = [Link](); [Link](); Producto producto = (Producto)[Link]([Link], id); idRemove=[Link](); [Link](producto); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new JpaProductoDAOException([Link],e); } finally { [Link](); [Link](); } return idRemove; } @Override public Producto find(Integer id) throws JpaProductoDAOException{ Producto producto=null; EntityManagerFactory emf = [Link]("productojpa"); EntityManager em = [Link](); EntityTransaction tx=null; try { tx = [Link](); [Link](); producto = (Producto)[Link]([Link], id); [Link](); }catch (Exception e) { if(tx!=null) [Link](); throw new JpaProductoDAOException([Link],e); } finally { [Link](); [Link](); } return producto; } @SuppressWarnings("unchecked") @Override public List<Producto> findAll() throws JpaProductoDAOException{ List<Producto> productos = new ArrayList<Producto>();
EntityManagerFactory emf = [Link]("productojpa"); EntityManager em = [Link](); try { Query query=[Link]("[Link]"); productos= [Link](); }catch (Exception e) { throw new JpaProductoDAOException([Link],e); } finally { [Link](); [Link](); } return productos; } @SuppressWarnings("unchecked") @Override public List<Producto> findAll(int indice,int cantidadRenglones) throws JpaProductoDAOException{ List<Producto> productos = new ArrayList<Producto>(); EntityManagerFactory emf = [Link]("productojpa"); EntityManager em = [Link](); try { Query query=[Link]("[Link]"); [Link](cantidadRenglones); [Link](indice); productos=[Link](); }catch (Exception e) { throw new JpaProductoDAOException(JpaProductoDAOException.FINDALL_PAGINADO, e); } finally { [Link](); [Link](); } if(productos==null) productos = new ArrayList<Producto>(); return productos; } @SuppressWarnings("unchecked") public List<Producto> findAll(int indice,int cantidadRenglones,List filtro) throws JpaProductoDAOException{ List<Producto> productos = new ArrayList<Producto>(); //[Link] _overview_criteria.html
EntityManagerFactory emf = [Link]("productojpa"); EntityManager em = [Link](); try { //[Link] CriteriaBuilder queryBuilder = [Link](); CriteriaQuery criteriaQuery= [Link](); Root<Producto> from = [Link]([Link]); CriteriaQuery<Producto> select = [Link](from); TypedQuery<Producto> typedQuery = [Link](select); [Link](cantidadRenglones); [Link](indice); productos = [Link](); }catch (Exception e) { throw new JpaProductoDAOException(JpaProductoDAOException.FINDALL_PAGINADO, e); } finally { [Link](); [Link](); } if(productos==null) productos = new ArrayList<Producto>(); return productos; } }
[Link]
package [Link]; import [Link]; public class JpaProductoDAOException extends DAOException { private static final long serialVersionUID = 1L; public JpaProductoDAOException(String tipo, Exception e) { super(tipo, "",e); [Link]("-"+tipo); [Link]("-"+sentenciaSQL); [Link]();
[Link]("-"); } }
El proyecto necesita un jar, que fue construido desde el "ejemplo 1 - Jdbc": [Link]
3. Referencias y Enlaces:
1. Java Notes: Table of Contents 1. FlowLayout 2. Patrones - jee 1. aplicacion de patrones j2ee en un caso de estudio 2. dao 3. Scrollable ResultSet JDBC Postgresql 4. Resultset ferm 5. How to Use Tables 6. JAVA: Practicando con CardLayout 7. How to Use Borders 8. Aprediendo con JCheckBox y JRadioButton 9. Eventos 1. Creating a Custom Event 2. Implementing a Simple Event Notifier 3. How do I create my own events to pass between objects? 10. Showmessage 1. Alert Dialogs (JOptionPane) 2. Show Dialog Box in Java - Swing Dialogs 11. Showmessage 1. Sessions and Transactions