0% encontró este documento útil (0 votos)
2K vistas91 páginas

Codigo de Ejemplos Java Eclipse

El documento presenta 5 ejemplos de aplicaciones Java con interfaces gráficas creadas con Swing. El primer ejemplo muestra un simple programa "Hola Mundo". El segundo ejemplo también es un programa "Hola Mundo" pero con mejoras gráficas. El tercer ejemplo implementa un sistema de administración de productos (ABM) con tablas y formularios. Los siguientes ejemplos continúan agregando funcionalidad a sistemas ABM. Finalmente, se enlazan temas relacionados como bases de datos, Hibernate y JPA.

Cargado por

Briseyda Jaimes
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2K vistas91 páginas

Codigo de Ejemplos Java Eclipse

El documento presenta 5 ejemplos de aplicaciones Java con interfaces gráficas creadas con Swing. El primer ejemplo muestra un simple programa "Hola Mundo". El segundo ejemplo también es un programa "Hola Mundo" pero con mejoras gráficas. El tercer ejemplo implementa un sistema de administración de productos (ABM) con tablas y formularios. Los siguientes ejemplos continúan agregando funcionalidad a sistemas ABM. Finalmente, se enlazan temas relacionados como bases de datos, Hibernate y JPA.

Cargado por

Briseyda Jaimes
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

[Link]

html ejemplos de java en 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.

2. Interfaces con Swing


1. Ejemplo 1: Hola Mundo Ficheros fuentes:

[Link]

Descargar proyecto: [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); } }

2. Ejemplo 2: Hola Mundo Ficheros fuentes:

[Link]

Descargar proyecto: [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 import [Link]; [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 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);

} }

*****************************************************************************

3. Ejemplo 3: ABM Ficheros fuentes:

[Link] [Link] [Link]

Tarballs del proyecto en Eclipse: Proyecto Eclipse: [Link]

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

Ficheros fuentes: [Link] [Link] [Link]

[Link]

Tarballs del proyecto en Eclipse: [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 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 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];

import import import import import import

[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]()); } }

Las clases relacionadas con el paginado: [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]; 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(">");

private Paginable paginable; public Paginador(Paginable paginable){ [Link](new FlowLayout()); [Link](jbInicio);

[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); } }

Las clases relacionadas con el modelo y la persistencia: [Link]


/* * * * * * * * * * * @autor: fernando rafael filipuzzi @e-mail: fernando6867@[Link] @sitio web: [Link] [Link] */

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: * *

fernando rafael filipuzzi

* @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

+" fr private static final String FIND_ALL_SQL_PAGINADO = id,codigo,nombre,disponible "

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.

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 [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];

import [Link]; import [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]()); } }

Las clases relacionadas con el modelo y la persistencia: [Link]


package [Link]; import [Link]; public abstract class DAOFactory { //lista de daos soportados por el factory public static final int HIBERNATE = 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 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; } }

XML de Mapeo: [Link]


<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "[Link] <hibernate-configuration> <session-factory > <property name="connection.driver_class">[Link]</property> <property

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 -

Jdbc": [Link] [Link] 3. Ejemplo 3 - JPA:

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];

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 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]()); } }

Las clases relacionadas con el modelo y la persistencia: [Link]


/* * * * * * * * * * * @autor: fernando rafael filipuzzi @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];

@Entity @Table(name="productos") @NamedQueries({ @NamedQuery(name="[Link]" , query= " select producto from Producto producto ")}) @SequenceGenerator(name="sec", sequenceName="productos_id_seq") public class Producto {

private private private private

Integer id; Integer codigo; String nombre; Boolean disponible=false;

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]("-"); } }

XML de Mapeo: [Link]


<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="[Link] xmlns:xsi="[Link] xsi:schemaLocation="[Link] e [Link] <persistence-unit name="productojpa"> <properties> <property name="[Link].driver_class" value="[Link]" /> <property name="[Link]" value="jdbc:postgresql://localhost/productos" /> <property name="[Link]" value="productoadmin" /> <property name="[Link]" value="productoadmin" /> <property name="[Link]" value="[Link]" /> <property name="[Link].pool_size" value="10" /> <property name="[Link]" value="true" /> <property name="hibernate.generate_statistics" value="false" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.use_sql_comments" value="false" /> <property name="[Link]" value="update" /> </properties> </persistence-unit> </persistence>

4. Tarballs del proyecto: [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

También podría gustarte