Manuales-Seminario Java-MANUALDEJAVA -SEM 10 - 15

  • Upload
    kklakk

  • View
    40

  • Download
    0

Embed Size (px)

Citation preview

  • 121

    121

    JTable

    La clase JTable nos permite organizar una determinada informacin en un

    tabla. Esta clase tiene ms de 100 mtodos. La JTable controla cmo se

    presentan los datos, siendo el TableModel quien controla los datos en s

    mismos. Para crear una JTable habr pues que crear un TableModel antes,

    normalmente. Se puede implementar, para ello, el interfaz TableModel, pero es

    mucho ms simple heredar de la clase ayuda AbstractTableModel.

    1. Clases e Interfaces Relacionados con las Tablas

    Clase/Interface Propsito

    OBJETIVOS

    Construir aplicaciones utilizando la clase JTable y JTree

    Utilizar la clase JTable para la creacin de aplicaciones con Base de datos.

    Mi PCResaltar

    Mi PCResaltar

    Mi PCResaltar

    Mi PCResaltar

  • 122

    122

    JTable El componente que presenta la tabla al usuario.

    JTableHeader El componente que presenta los nombres de columnas al usuario. Por defecto, la tabla genera este componente automticamente.

    TableModel, AbstractTableModel

    Respectivamente, el interface que un modelo de tabla debe implementar y la superclase usual para implementaciones de modelos de tabla.

    TableCellRenderer, DefaultTableCellRenderer

    Respectivamente, el interface que un intrprete de celda debe implementar y la implementacin ms usual.

    TableCellEditor, DefaultCellEditor

    Respectivamente, el interface que debe implementar un editor de celda, y la implementacin ms usual.

    TableColumnModel, DefaultTableColumnModel

    Respectivamente, el interface que debe implementar un modelo de columna, y su implementacin usual. Normalmente no tenemos que tratar directamente con el modelo de columna a menos que necesitemos obtener el modelo de seleccin de columna u obtener un ndice de columna o un objeto.

    TableColumn

    Controla todos los atributos de una columna de la tabla, incluyendo, redimensionado, anchuras mnima, mxima, preferida y actual; y editor/intrprete opcional especfico de la columna.

    DefaultTableModel Un modelo de tabla basado en Vector utilizado por JTable cuando construimos una tabla sin especificar modelo de datos ni datos.

    Crear y Configurar una Tabla

    Mtodo/Constructor de JTable Propsito

    JTable(TableModel)

    JTable(TableModel, TableColumnModel)

    JTable(TableModel, TableColumnModel, ListSelectionModel)

    JTable()

    JTable(int, int)

    Crea una tabla. El argumento opcional TableModel especifica el modelo que proporciona los datos de la tabla. Los argumentos opcionales TableColumnModel y ListSelectionModel permiten especificar el modelo de columna y el modelo de seleccin.

  • 123

    123

    JTable(Object[][], Object[])

    JTable(Vector, Vector)

    Como una alternativa para especificar un modelo de tabla, podemos suministrar datos y nombres de columnas utilizando un array o un Vector. Otra opcin es no especificar datos, opcionalmente especificar el nmero de filas y columnas (ambos enteros) que hayan en la tabla.

    void setPreferredScrollableViewportSize(Dimension)

    Selecciona el tamao de la parte visible de la tabla cuando se est viendo dentro de un ScrollPane.

    JTableHeader getTableHeader(Dimension) Obtiene el componente que muestra los nombres de columnas.

    Manipular Columnas

    Mtodo Propsito

    TableColumnModel getColumnModel()

    (en JTable)

    Obtiene el modelo de columna de la tabla.

    TableColumn getColumn(int)

    Enumeration getColumns()

    (en TableColumnModel)

    Obtiene uno o todos los objetos TableColumn de la tabla.

    void setMinWidth(int)

    void setPreferredWidth(int)

    void setMaxWidth(int)

    (en TableColumn)

    Seleciona la anchura mnima, preferida o mxima de la columna.

    int getMinWidth(int)

    int getPreferredWidth() Obtiene la anchura mnima, preferida, mxima o actual de la columna.

  • 124

    124

    int getMaxWidth()

    int getWidth()

    (en TableColumn)

    Usar Editores e Intrpretes

    Mtodos Propsito

    void setDefaultRenderer(Class, TableCellRenderer)

    void setDefaultEditor(Class, TableCellEditor)

    (en JTable)

    Selecciona el intrprete o editor usado, por defecto, para todas las celdas en todas las columnas que devuelvan el tipo de objetos especificado.

    void setCellRenderer(TableCellRenderer)

    void setCellEditor(TableCellEditor)

    (en TableColumn)

    Selecciona el intrprete o editor usado para todas las celdas de esta columna.

    TableCellRenderer getHeaderRenderer()

    (en TableColumn)

    Obtiene el intrprete de cabecera para esta columna, que podemos personalizar.

    Implementar Seleccin

    Mtodo de JTable Propsito

    void setSelectionMode(int)

    Selecciona los intervalos de seleccin permitidos en la tabla. Los valores vlidos estn definidos en ListSelectionModel como SINGLE_SELECTION, SINGLE_INTERVAL_SELECTION, y MULTIPLE_INTERVAL_SELECTION (por defecto).

    void setSelectionModel(ListSelectionModel)

    ListSelectionModel getSelectionModel()

    Selecciona u obtiene el modelo usado para controlar las selecciones de filas.

  • 125

    125

    void setRowSelectionAllowed(boolean)

    void setColumnSelectionAllowed(boolean)

    void setCellSelectionEnabled(boolean)

    Selecciona la orientacin de seleccin de la tabla. El argumento booleano especifica si est permitido el tipo de seleccin particular. Por defecto, las seleccin de filas est permitida, y la de columna y celda no.

    2. Utilizando TableModel

    Como se ha visto, toda tabla obtiene sus datos desde un objeto que implemente el interface TableModel.

    El constructor de JTable usado por SimpleTableDemo crea su modelo de tabla con este cdigo.

    new AbstractTableModel() { public String getColumnName(int col) { return columnNames[col].toString(); } public int getRowCount() { return rowData.length; } public int getColumnCount() { return columnNames.length; } public Object getValueAt(int row, int col) { return rowData[row][col]; } public boolean isCellEditable(int row, int col) { return true; } public void setValueAt(Object value, int row, int col) { rowData[row][col] = value; fireTableCellUpdated(row, col); } }

    Ejemplo:

    Se puede movilizar las columnas y seleccinar las filas que se desee.

  • 126

    126

    import java.awt.*; import java.awt.event.*; import com.sun.java.swing.*; import com.sun.java.swing.table.*; import com.sun.java.swing.event.*; // El Modelo de la Tabla es el que controla todos los // datos que se colocan en ella class ModeloDatos extends AbstractTableModel { Object datos[][] = { {"uno","dos","tres","cuatro"}, {"cinco","seis","siete","ocho"}, {"nueve","diez","once","doce"}, }; // Esta clase imprime los datos en la consola cada vez // que se produce un cambio en cualquiera de las // casillas de la tabla class TablaListener implements TableModelListener { public void tableChanged( TableModelEvent evt ) { for( int i=0; i < datos.length; i++ ) { for( int j=0; j < datos[0].length; j++ ) System.out.print( datos[i][j] + " " ); System.out.println(); } } } // Constructor ModeloDatos() { addTableModelListener( new TablaListener() ); } // Devuelve el nmero de columnas de la tabla public int getColumnCount() { return( datos[0].length ); } // Devuelve el nmero de filas de la tabla

    Mi PCResaltar

  • 127

    127

    public int getRowCount() { return( datos.length ); } // Devuelve el valor de una determinada casilla de la tabla // identificada mediante fila y columna public Object getValueAt( int fila,int col ) { return( datos[fila][col] ); } // Cambia el valor que contiene una determinada casilla de // la tabla public void setValueAt( Object valor,int fila,int col ) { datos[fila][col] = valor; // Indica que se ha cambiado fireTableDataChanged(); } // Indica si la casilla identificada por fila y columna es // editable public boolean isCellEditable( int fila,int col ) { return( true ); } } public class ejercicio extends JPanel { public ejercicio () { setLayout( new BorderLayout() ); JTable tabla = new JTable( new ModeloDatos() ); // La tabla se aade a un ScrollPane para que sea ste el // que controle automticamente en tamao de la tabla, // presentando una barra de desplazamiento cuando sea // necesario JScrollPane panel = new JScrollPane( tabla ); add( panel,BorderLayout.CENTER ); } public static void main(String args[]) { JFrame frame = new JFrame( "Tutorial de Java, Swing" ); frame.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent evt ) { System.exit( 0 ); } } ); frame.getContentPane().add( new java1416(),BorderLayout.CENTER );

  • 128

    128

    frame.setSize( 200,200 ); frame.setVisible( true ); } }

    ACTIVIDAD

    Cree la siguiente aplicacin el cual se pueda agregar registro a una tabla.

    public class Panel extends JPanel implements MouseListener{

    // --- Creando model y tabla

    ModeloTabla mt = new ModeloTabla();

    JTable jt = new JTable();

    // --- Creando componentes para el ingreso de datos

    JPanel panelInferior = new JPanel();

    JLabel lblCodigo = new JLabel("Cdigo");

    JLabel lblNombre = new JLabel("Nombre");

    JLabel lblDireccion = new JLabel("Direccin");

  • 129

    129

    JLabel lblFoto = new JLabel("Foto");

    JTextField txtCodigo = new JTextField();

    JTextField txtNombre = new JTextField();

    JTextField txtDireccion = new JTextField();

    JTextField txtFoto = new JTextField();

    JButton b1 = new JButton("Aadir");

    JButton b2 = new JButton("Modificar");

    // ---

    ListaPersonas lpersonas = new ListaPersonas();

    public Panel(){

    jt.setModel(mt);

    setLayout(new GridLayout(2,1));

    add(new JScrollPane(jt));

    // --- panel para ingreso de datos

    panelInferior.setLayout(new GridLayout(5,2));

    panelInferior.add(lblCodigo);

    panelInferior.add(txtCodigo);

    panelInferior.add(lblNombre);

    panelInferior.add(txtNombre);

    panelInferior.add(lblDireccion);

    panelInferior.add(txtDireccion);

    panelInferior.add(lblFoto);

    panelInferior.add(txtFoto);

    panelInferior.add(b1);

  • 130

    130

    panelInferior.add(b2);

    add(panelInferior);

    b1.addMouseListener(this);

    b2.addMouseListener(this);

    jt.addMouseListener(this); // --- asociamos listener a la tabla

    }

    public void mouseClicked(MouseEvent arg0) {

    // --- Boton aadir Registro

    if (arg0.getSource().equals(b1)){

    Persona p = lpersonas.buscar(txtCodigo.getText());

    // --- Si no existe la persona

    if (p==null) {

    p = new Persona();

    p.setCodigo(txtCodigo.getText());

    p.setNombre(txtNombre.getText());

    p.setDireccion(txtDireccion.getText());

    p.setFoto(txtFoto.getText());

    // --- agregamos a la lista

    lpersonas.adicionar(p);

    // --- recuperando data actual del model

    Vector dataActual = mt.data;

    Vector nuevaFila = new Vector();

    nuevaFila.add( txtCodigo.getText());

  • 131

    131

    nuevaFila.add( txtNombre.getText());

    nuevaFila.add( txtDireccion.getText());

    // --- agregando nueva fila a data actual

    dataActual.add(nuevaFila);

    // --- retornando dataActual al model

    mt.setData(dataActual);

    mt.insertaData(p);

    }

    }

    // --- boton modificar

    if (arg0.getSource().equals(b2)){

    Persona p = lpersonas.buscar(txtCodigo.getText());

    if (p!=null) {

    p.setCodigo(txtCodigo.getText());

    p.setNombre(txtNombre.getText());

    p.setDireccion(txtDireccion.getText());

    p.setFoto(txtFoto.getText());

    // --- Obtenemos la fila seleccionada en el JTable

    int filSel = jt.getSelectedRow();

    // --- Actualizando listaPersona

    lpersonas.insertar(p,filSel);

    lpersonas.remover(filSel+1);

    Vector dataActual = mt.data;

  • 132

    132

    Vector filaModificada = new Vector();

    filaModificada.add(txtCodigo.getText());

    filaModificada.add(txtNombre.getText());

    filaModificada.add(txtDireccion.getText());

    dataActual.insertElementAt(filaModificada,filSel);

    dataActual.removeElementAt(filSel+1);

    mt.setData(dataActual);

    }

    }

    // --- El JTable

    if (arg0.getSource().equals(jt)){

    // --- Recuperamos el numero de la fila seleccionada

    int filSel = jt.getSelectedRow();

    // --- recuperando el codigo

    String codigoSel = jt.getValueAt(filSel,0).toString();

    Persona p = lpersonas.buscar(codigoSel);

    txtCodigo.setText(p.getCodigo());

    txtNombre.setText(p.getNombre());

    txtDireccion.setText(p.getDireccion());

    txtFoto.setText(p.getFoto());

    }

    }

  • 133

    133

    public void mousePressed(MouseEvent arg0) {

    }

    public void mouseReleased(MouseEvent arg0) {

    } public void mouseEntered(MouseEvent arg0) {

    } public void mouseExited(MouseEvent arg0) {

    }

    }

  • 134

    134

    1. Creando al clienteBean

    package Bean;

    public class ClienteBean {

    private Integer idcliente;

    private String nombre;

    private String apepaterno;

    private String apematerno;

    private String sexo;

    private Integer edad;

    private String numdocumento;

    private String telefono;

    private String email;

    private String Ruc;

    private String estado;

    private String direccion;

    public String getApematerno() {

    OBJETIVOS

    Implementar un sistema o aplicacin grfica utilizando Swing.

    Presentar los entornos grficos del proyetco final.

  • 135

    135

    return apematerno;

    }

    public void setApematerno(String apematerno) {

    this.apematerno = apematerno;

    }

    public String getApepaterno() {

    return apepaterno;

    }

    public void setApepaterno(String apepaterno) {

    this.apepaterno = apepaterno;

    }

    public String getDireccion() {

    return direccion;

    }

    public void setDireccion(String direccion) {

    this.direccion = direccion;

    }

    public Integer getEdad() {

    return edad;

    }

    public void setEdad(Integer edad) {

    this.edad = edad;

    }

    public String getEmail() {

    return email;

    }

    public void setEmail(String email) {

    this.email = email;

    }

    public String getEstado() {

    return estado;

    }

    public void setEstado(String estado) {

    this.estado = estado;

    }

    public Integer getIdcliente() {

    return idcliente;

    }

    public void setIdcliente(Integer idcliente) {

    this.idcliente = idcliente;

    }

    public String getNombre() {

    return nombre; }

    public void setNombre(String nombre) {

    this.nombre = nombre;

    }

  • 136

    136

    public String getNumdocumento() {

    return numdocumento;

    }

    public void setNumdocumento(String numdocumento) {

    this.numdocumento = numdocumento;

    }

    public String getRuc() {

    return Ruc;

    }

    public void setRuc(String ruc) {

    Ruc = ruc;

    }

    public String getSexo() {

    return sexo;

    }

    public void setSexo(String sexo) {

    this.sexo = sexo;

    }

    public String getTelefono() {

    return telefono;

    }

    public void setTelefono(String telefono) {

    this.telefono = telefono;

    }

    }

    2. Frame Cliente

    package presentacion;

    import javax.swing.JPanel;

    import javax.swing.JFrame;

    import java.awt.Dimension;

    import javax.swing.JToolBar;

    import java.awt.Rectangle;

    import javax.swing.BorderFactory;

    import javax.swing.border.TitledBorder;

    import javax.swing.table.DefaultTableModel;

    import java.awt.Font;

    import java.awt.Color;

    import javax.swing.JLabel; import java.util.List;

    import java.util.Vector;

    import javax.swing.JOptionPane;

  • 137

    137

    import javax.swing.SwingConstants;

    import javax.swing.JTextField;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    import javax.swing.JButton;

    import javax.swing.ImageIcon;

    import javax.swing.JRadioButton;

    import javax.swing.ListSelectionModel;

    import Bean.ClienteBean;

    import Logic.GestorCliente;

    import java.awt.Point;

    public class FrmBuscarCliente extends JFrame {

    private static final long serialVersionUID = 1L;

    private GestorCliente g_cliente=null;

    private FrmProforma ventProforma=null;

    private FrmVentaPaquete ventMantenerPaquete=null;

    List clientes=null;

    private int modo;

    private JPanel jContentPane = null;

    private JToolBar tlbBuscarCliente = null;

    private DefaultTableModel Modelo=null;

    private Vector Detalle=null;

    private Vector Encabezado=null;

    private JButton btnLimpiar = null;

    private JButton btnBuscar1 = null;

    private JButton btnCancelar = null;

    private JButton btnAceptar = null;

    private JPanel pnlFiltros = null;

    private JLabel lblCodigo = null;

    private JTextField tbxCodigo = null;

    private JLabel lblDni = null;

    private JTextField tbxDni = null;

    private JLabel lblApellido = null;

    private JTextField tbxApellido = null;

    private JRadioButton rbtnNatural = null;

    private JLabel lblNatural = null;

    private JRadioButton rbtnJuridico = null;

    private JLabel lblJuridico = null; private JPanel pnlClientes = null;

    private JScrollPane scrpMantCliente = null;

    private JTable tblCliente = null;

  • 138

    138

    private JLabel lbl_total = null;

    private JLabel lblRegistros1 = null;

    public FrmBuscarCliente(FrmProforma vent, FrmVentaPaquete

    ventMantener) {

    super();

    Detalle=new Vector ();

    Encabezado=new Vector();

    Encabezado.add("Cdigo");

    Encabezado.add("Nombre");

    Encabezado.add("Ap. Paterno");

    Encabezado.add("D.N.I");

    Modelo=new DefaultTableModel(Detalle,Encabezado){

    private static final long serialVersionUID = 1L;

    public boolean isCellEditable (int rowIndex, int

    columnIndex){

    return false;

    }

    };;

    this.ventProforma=vent;

    this.ventMantenerPaquete=ventMantener;

    g_cliente=new GestorCliente();

    initialize();

    this.rbtnNatural.setSelected(true);

    this.setResizable(false);

    }

    private void initialize() {

    this.setSize(459, 487);

    this.setContentPane(getJContentPane());

    this.setTitle("JFrame");

    }

    private JPanel getJContentPane() {

    if (jContentPane == null) {

    lblRegistros1 = new JLabel();

    lblRegistros1.setBounds(new Rectangle(29, 408, 141,

    27));

    lblRegistros1.setText("Registros encontrados:");

    lbl_total = new JLabel();

    lbl_total.setText("");

    lbl_total.setSize(new Dimension(67, 27)); lbl_total.setLocation(new Point(185, 411));

    jContentPane = new JPanel();

    jContentPane.setLayout(null);

    jContentPane.add(getTlbBuscarCliente(), null);

  • 139

    139

    jContentPane.add(getPnlFiltros(), null);

    jContentPane.add(getPnlClientes(), null);

    jContentPane.add(lbl_total, null);

    jContentPane.add(lblRegistros1, null);

    }

    return jContentPane;

    }

    private JToolBar getTlbBuscarCliente() {

    if (tlbBuscarCliente == null) {

    tlbBuscarCliente = new JToolBar();

    tlbBuscarCliente.setBounds(new Rectangle(0, 0, 451,

    44));

    tlbBuscarCliente.add(getBtnLimpiar());

    tlbBuscarCliente.add(getBtnBuscar1());

    tlbBuscarCliente.add(getBtnAceptar());

    tlbBuscarCliente.add(getBtnCancelar());

    }

    return tlbBuscarCliente;

    }

    public void limpiar(){

    this.tbxApellido.setText("");

    this.tbxCodigo.setText("");

    this.tbxDni.setText("");

    Detalle.clear();

    Modelo.fireTableDataChanged();

    this.lbl_total.setText("");

    }

    private JButton getBtnLimpiar() {

    if (btnLimpiar == null) {

    btnLimpiar = new JButton();

    btnLimpiar.setToolTipText("Limpiar");

    btnLimpiar.setIcon(new

    ImageIcon(getClass().getResource("/Iconos/limpiar.png")));

    btnLimpiar.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    System.out.println("actionPerformed()"); //

    TODO Auto-generated Event stub actionPerformed() limpiar();

    }

    });

    }

  • 140

    140

    return btnLimpiar;

    }

    public void carga_en_table(List clientes){

    Integer total=clientes.size();

    lbl_total.setText(total.toString());

    Detalle.clear();

    if (clientes.size()>0)

    { Integer ind=0;

    ClienteBean cliente=new ClienteBean();

    Vector Fila;

    while(ind

  • 141

    141

    else

    cliente.setIdcliente(0);

    if(this.rbtnNatural.isSelected())

    {cliente.setApepaterno(tbxApellido.getText());

    cliente.setNumdocumento(tbxDni.getText());

    clientes=this.g_cliente.getClientesxFiltros(cliente);

    }

    else

    {cliente.setNombre(this.tbxApellido.getText());

    cliente.setRuc(this.tbxDni.getText());

    clientes=this.g_cliente.getClientesxFiltrosJ(cliente);

    }

    carga_en_table(clientes);

    }

    private JButton getBtnBuscar1() {

    if (btnBuscar1 == null) {

    btnBuscar1 = new JButton();

    btnBuscar1.setToolTipText("Buscar");

    btnBuscar1.setIcon(new

    ImageIcon(getClass().getResource("/Iconos/Buscar.png")));

    btnBuscar1.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    System.out.println("click en buscar cliente"); // TODO Auto-generated Event stub

    actionPerformed()

    busca_clientes();

    }

    });

    }

    return btnBuscar1;

    }

    private JButton getBtnCancelar() {

    if (btnCancelar == null) {

    btnCancelar = new JButton();

    btnCancelar.setToolTipText("Cancelar");

    btnCancelar.setIcon(new ImageIcon(getClass().

    getResource("/Iconos/salir.gif")));

    btnCancelar.addActionListener(new java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent e) {

    FrmBuscarCliente.this.dispose();

  • 142

    142

    }

    });

    }

    return btnCancelar;

    }

    public void carga_datos_linea(){

    if (tblCliente.getSelectedRow()==-1)

    JOptionPane.showMessageDialog(this, "Debe

    seleccionar una fila.", "Bsqueda Cliente",JOptionPane.ERROR_MESSAGE);

    else{

    ClienteBean c=new ClienteBean();

    c=(ClienteBean)clientes.get(tblCliente.getSelectedRow());

    if(modo==0)

    this.ventProforma.setCliente(c);

    else

    this.ventMantenerPaquete.setCliente(c);

    this.dispose();

    }

    }

    private JButton getBtnAceptar() {

    if (btnAceptar == null) {

    btnAceptar = new JButton();

    btnAceptar.setIcon(new

    ImageIcon(getClass().getResource("/Iconos/button_ok.png")));

    btnAceptar.setToolTipText("Aceptar");

    btnAceptar.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    //FrmBuscarCliente.this.dispose();

    if(Detalle.size()>0)

    carga_datos_linea();

    else

    JOptionPane.showMessageDialog(FrmBuscarCliente.this, "Deber seleccionar un

    cliente.", "Bsqueda Cliente",JOptionPane.ERROR_MESSAGE);

    }

    }); }

    return btnAceptar;

    }

  • 143

    143

    private JPanel getPnlFiltros() {

    if (pnlFiltros == null) {

    lblJuridico = new JLabel();

    lblJuridico.setBounds(new Rectangle(40, 60, 54, 20));

    lblJuridico.setText("Jurdico");

    lblNatural = new JLabel();

    lblNatural.setBounds(new Rectangle(40, 30, 55, 20));

    lblNatural.setText("Natural");

    lblApellido = new JLabel();

    lblApellido.setBounds(new Rectangle(122, 56, 79, 18));

    lblApellido.setHorizontalTextPosition(SwingCon

    stants.RIGHT);

    lblApellido.setText("Ap. Paterno

    :");

    lblApellido.setHorizontalAlignment(SwingConstants.RIGHT);

    lblDni = new JLabel();

    lblDni.setBounds(new Rectangle(156, 86, 45, 18));

    lblDni.setHorizontalTextPosition(SwingConstants.RIGHT);

    lblDni.setText("D.N.I :");

    lblDni.setHorizontalAlignment(SwingConstants.RIGHT);

    lblCodigo = new JLabel();

    lblCodigo.setBounds(new Rectangle(142, 28, 59, 18));

    lblCodigo.setHorizontalTextPosition(SwingConstants.RIGHT);

    lblCodigo.setText("Cdigo :");

    lblCodigo.setHorizontalAlignment(SwingConstants.RIGHT);

    pnlFiltros = new JPanel();

    pnlFiltros.setLayout(null);

    pnlFiltros.setBounds(new Rectangle(22, 62, 410, 134));

    pnlFiltros.setBorder(BorderFactory.createTitledBorder(null,

    "Filtros", TitledBorder.DEFAULT_JUSTIFICATION,

    TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new

    Color(51, 51, 51)));

    pnlFiltros.add(lblCodigo, null);

    pnlFiltros.add(getTbxCodigo(), null);

    pnlFiltros.add(lblDni, null);

    pnlFiltros.add(getTbxDni(), null);

    pnlFiltros.add(lblApellido, null);

    pnlFiltros.add(getTbxApellido(), null);

    pnlFiltros.add(getRbtnNatural(), null);

    pnlFiltros.add(lblNatural, null); pnlFiltros.add(getRbtnJuridico(), null);

    pnlFiltros.add(lblJuridico, null);

    }

    return pnlFiltros;

  • 144

    144

    }

    private JTextField getTbxCodigo() {

    if (tbxCodigo == null) {

    tbxCodigo = new JTextField();

    tbxCodigo.setBounds(new Rectangle(211, 26, 142, 20));

    }

    return tbxCodigo;

    }

    private JTextField getTbxDni() {

    if (tbxDni == null) {

    tbxDni = new JTextField();

    tbxDni.setBounds(new

    Rectangle(211, 87, 142, 20));

    }

    return tbxDni;

    }

    private JTextField getTbxApellido() {

    if (tbxApellido == null) {

    tbxApellido = new JTextField();

    tbxApellido.setBounds(new Rectangle(211, 54, 142, 20));

    }

    return tbxApellido;

    }

    private JRadioButton getRbtnNatural() {

    if (rbtnNatural == null) {

    rbtnNatural = new JRadioButton();

    rbtnNatural.setBounds(new Rectangle(15, 29, 25, 20));

    rbtnNatural.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    cambia_check(0);

    }

    });

    }

    return rbtnNatural; }

    private JRadioButton getRbtnJuridico() {

    if (rbtnJuridico == null) {

  • 145

    145

    rbtnJuridico = new JRadioButton();

    rbtnJuridico.setBounds(new Rectangle(15, 59, 25, 20));

    rbtnJuridico.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    cambia_check(1);

    }

    });

    }

    return rbtnJuridico;

    }

    private JPanel getPnlClientes() {

    if (pnlClientes == null) {

    pnlClientes = new JPanel();

    pnlClientes.setLayout(null);

    pnlClientes.setBounds(new Rectangle(26, 209, 404, 182));

    pnlClientes.setBorder(BorderFactory.createTitledBorder(null,

    "Clientes", TitledBorder.DEFAULT_JUSTIFICATION,

    TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new

    Color(51, 51, 51)));

    pnlClientes.add(getScrpMantCliente(), null);

    }

    return pnlClientes;

    }

    private JScrollPane getScrpMantCliente() {

    if (scrpMantCliente == null) {

    scrpMantCliente = new JScrollPane();

    scrpMantCliente.setBounds(new Rectangle(15, 29, 360,

    125));

    scrpMantCliente.setViewportView(getTblCliente

    ());

    }

    return scrpMantCliente;

    }

    public void cambia_check(Integer modo){

    //Si modo=0 entonces es natural //Sino es jurdico

    if(modo==0)

    {this.rbtnNatural.setSelected(true);

    this.rbtnJuridico.setSelected(false);

  • 146

    146

    this.lblApellido.setText("Ap.Paterno :");

    this.lblDni.setText("D.N.I :");

    Encabezado.removeAllElements();

    Encabezado.add("Cdigo");

    Encabezado.add("Nombre");

    Encabezado.add("Ap. Paterno");

    Encabezado.add("Num. Documento");

    }

    else

    {this.rbtnNatural.setSelected(false);

    this.rbtnJuridico.setSelected(true);

    this.lblApellido.setText("Empresa :");

    this.lblDni.setText("R.U.C :");

    Encabezado.removeAllElements();

    Encabezado.add("Cdigo");

    Encabezado.add("Empresa");

    Encabezado.add("RUC");

    Encabezado.add("Telfono");

    }

    Detalle.removeAllElements();

    Modelo.fireTableDataChanged();

    Modelo.fireTableStructureChanged();

    this.lbl_total.setText("");

    }

    private JTable getTblCliente() {

    if (tblCliente == null) {

    tblCliente = new JTable(this.Modelo);

    tblCliente.setSelectionMode(ListSelectionModel.SINGLE_SELECTIO

    N);

    tblCliente.getTableHeader().setReorderingAllowed(false);

    tblCliente.addMouseListener(new

    java.awt.event.MouseAdapter() {

    public void

    mouseClicked(java.awt.event.MouseEvent e) {

    if (e.getClickCount()==2){

    carga_datos_linea();

    }

    }

    });

    }

  • 147

    147

    return tblCliente;

    }

    public void setModo(int modo){

    this.modo=modo;

    }

    }

    3. Mantenimientos de clientes

    package presentacion;

    import java.awt.Color;

    import java.awt.Font;

    import java.awt.Rectangle;

    import javax.swing.BorderFactory;

    import javax.swing.ImageIcon;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JTable;

    import javax.swing.JTextField;

    import javax.swing.JToolBar;

    import javax.swing.ListSelectionModel;

    import javax.swing.border.TitledBorder;

    import java.awt.Dimension;

    import javax.swing.border.BevelBorder;

    import javax.swing.table.DefaultTableModel;

    import java.awt.event.KeyEvent;

    import java.awt.Toolkit;

    import java.util.List;

    import java.util.Vector;

    import javax.swing.JScrollPane; import javax.swing.SwingConstants;

    import Bean.ClienteBean;

    import Logic.GestorCliente;

  • 148

    148

    import javax.swing.JRadioButton;

    public class FrmMantenimientoCliente extends JFrame {

    private static final long serialVersionUID = 1L;

    private GestorCliente g_cliente;

    private JPanel jContentPane = null;

    private JPanel pnlFiltros = null;

    private JLabel lblCodigo = null;

    private JTextField tbxCodigo = null;

    private JLabel lblDni = null;

    private JTextField tbxDni = null;

    private JLabel lblApellido = null;

    private JTextField tbxApellido = null;

    private JPanel pnlClientes = null;

    private JLabel lblRegistros = null;

    private FrmNuevoCliente NuevoCliente=null;

    private JScrollPane scrpMantCliente = null;

    private JTable tblCliente = null;

    private DefaultTableModel Modelo=null;

    private Vector Detalle=null; // @jve:decl-index=0:

    private Vector Encabezado=null;

    private JToolBar tlbCliente = null;

    private JButton btnLimpiar = null;

    private JButton btnRegistrar = null;

    private JButton btnModificar = null;

    private JButton btnEliminar = null;

    private JButton btnBuscar = null;

    private JButton btnSalir = null;

  • 149

    149

    private JLabel lblTotal = null;

    private JRadioButton rbtnNatural = null;

    private JLabel lblNatural = null;

    private JRadioButton rbtnJuridico = null;

    private JLabel lblJuridico = null;

    public FrmMantenimientoCliente() {

    super();

    g_cliente=new GestorCliente();

    Detalle=new Vector();

    Encabezado=new Vector();

    Modelo=new DefaultTableModel(Detalle,Encabezado){

    private static final long serialVersionUID = 1L;

    public boolean isCellEditable (int rowIndex, int columnIndex){

    return false;

    }

    };;

    initialize();

    this.setResizable(false);

    }

    public void limpiar(){

    this.tbxApellido.setText("");

    this.tbxCodigo.setText("");

    this.tbxDni.setText("");

    Detalle.clear();

    Modelo.fireTableDataChanged();

    this.lblTotal.setText("");

    }

    public void carga_en_table(List clientes){

    Integer total=clientes.size();

    lblTotal.setText(total.toString());

    Detalle.clear();

    if (clientes.size()>0)

    { Integer ind=0;

    ClienteBean cliente=new ClienteBean(); Vector Fila;

    while(ind

  • 150

    150

    //JOptionPane.showMessageDialog(this,usuario.getApmaterno(),

    "Registrar Usuario",1);

    if(rbtnNatural.isSelected())

    {Fila.add(cliente.getIdcliente());

    Fila.add(cliente.getNombre());

    Fila.add(cliente.getApepaterno());

    Fila.add(cliente.getNumdocumento());

    }

    else

    {Fila.add(cliente.getIdcliente());

    Fila.add(cliente.getNombre());

    Fila.add(cliente.getRuc());

    Fila.add(cliente.getTelefono());

    }

    Detalle.add(Fila);

    ind++;

    }

    Modelo.fireTableDataChanged();

    }

    else

    {

    Detalle.clear();

    Modelo.fireTableDataChanged();

    }

    }

    public void busca_clientes(){

    ClienteBean cliente=new ClienteBean();

    List clientes;

    if (!tbxCodigo.getText().equals(""))

    cliente.setIdcliente(Integer.parseInt(tbxCodigo.getText()));

    else

    cliente.setIdcliente(0);

    if(this.rbtnNatural.isSelected())

    {cliente.setApepaterno(tbxApellido.getText());

    cliente.setNumdocumento(tbxDni.getText());

    clientes=this.g_cliente.getClientesxFiltros(cliente);

    }

    else

    {cliente.setNombre(this.tbxApellido.getText());

    cliente.setRuc(this.tbxDni.getText());

    clientes=this.g_cliente.getClientesxFiltrosJ(cliente); }

    carga_en_table(clientes);

    }

  • 151

    151

    public void modifica(){

    if (tblCliente.getSelectedRow()==-1)

    JOptionPane.showMessageDialog(this, "Debe seleccionar un

    cliente.", "Mantenimiento de Cliente",JOptionPane.ERROR_MESSAGE);

    else

    {

    if (NuevoCliente==null)

    NuevoCliente= new FrmNuevoCliente();

    NuevoCliente.setTipo(1);

    NuevoCliente.setVentana_mantenimiento(this);

    NuevoCliente.limpiar();

    NuevoCliente.setDatos();

    Vector linea=(Vector)Detalle.get(tblCliente.getSelectedRow());

    Integer codigo=(Integer)linea.get(0);

    if(!rbtnNatural.isSelected()){

    NuevoCliente.setEsEmpresa(true);

    }

    else

    NuevoCliente.setEsEmpresa(false);

    NuevoCliente.carga_cliente(codigo);

    NuevoCliente.setVisible(true);

    }

    }

    private void elimina(){

    if (tblCliente.getSelectedRow()==-1)

    JOptionPane.showMessageDialog(this, "Debe

    seleccionar un cliente.", "Mantenimiento de

    Cliente",JOptionPane.ERROR_MESSAGE);

    else

    {

    Vector linea=(Vector)Detalle.get(tblCliente.getSelectedRow());

    Integer codigo=(Integer)linea.get(0);

    Integer decision=JOptionPane.showConfirmDialog(this,"Desea eliminar el cliente?",

    "Mantenimiento de Cliente", JOptionPane.YES_NO_OPTION);

    if (decision==0)

    {

    boolean exito=this.g_cliente.elimina(codigo);

    if (exito)

    {JOptionPane.showMessageDialog(this, "Se

    elimino con xito el cliente.", "Mantenimiento de

    Cliente",JOptionPane.INFORMATION_MESSAGE);

    this.busca_clientes();

  • 152

    152

    }

    else

    JOptionPane.showMessageDialog(this, "No se pudo eliminar el cliente.",

    "Mantenimiento de Cliente",JOptionPane.ERROR_MESSAGE);

    }

    }

    }

    /**

    * This method initializes this

    *

    * @return void

    */

    private void initialize() {

    this.setSize(437, 480);

    this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().g

    etResource("/Iconos/Contacto.png")));

    this.setContentPane(getJContentPane());

    this.setTitle("Mantenimiento de Clientes");

    }

    public void cambia_check(Integer modo){

    //Si modo=0 entonces es natural

    //Sino es jurdico

    if(modo==0)

    {this.rbtnNatural.setSelected(true);

    this.rbtnJuridico.setSelected(false);

    this.lblApellido.setText("Ap.Paterno :");

    this.lblDni.setText("D.N.I :");

    Encabezado.removeAllElements();

    Encabezado.add("Cdigo");

    Encabezado.add("Nombre");

    Encabezado.add("Ap. Paterno");

    Encabezado.add("Num.

    Documento");

    tblCliente.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    tblCliente.getTableHeader().setReorderingAllowed(false);

    tblCliente.addMouseListener(new java.awt.event.MouseAdapter()

    {

    public void mouseClicked(java.awt.event.MouseEvent e) {

    if (e.getClickCount()==2)

    modifica();

    }

  • 153

    153

    });

    }

    return tblCliente;

    }

    private JToolBar getTlbCliente() {

    if (tlbCliente == null) {

    tlbCliente = new JToolBar();

    tlbCliente.setBounds(new Rectangle(2, 1, 427, 51));

    tlbCliente.setBorder(BorderFactory.createBevelBorder(BevelBorder.R

    AISED));

    tlbCliente.setFloatable(false);

    tlbCliente.add(getBtnLimpiar());

    tlbCliente.add(getBtnRegistrar());

    tlbCliente.add(getBtnModificar());

    tlbCliente.add(getBtnEliminar());

    tlbCliente.add(getBtnBuscar());

    tlbCliente.add(getBtnSalir());

    }

    return tlbCliente;

    }

    private JButton getBtnLimpiar() {

    if (btnLimpiar == null) {

    btnLimpiar = new JButton();

    btnLimpiar.setToolTipText("Limpiar");

    btnLimpiar.setIcon(new

    ImageIcon(getClass().getResource("/Iconos/limpiar.png")));

    btnLimpiar.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    limpiar();

    }

    });

    }

    return btnLimpiar; }

  • 154

    154

    rbtnJuridico.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    cambia_check(1);

    }

    });

    }

    return rbtnJuridico;

    }

    }

    4. Men principal

    package presentacion;

    import javax.swing.JFrame;

    import javax.swing.JMenu;

    import javax.swing.JMenuBar;

    import javax.swing.JMenuItem;

    import javax.swing.JPanel;

    import javax.swing.JToolBar;

    import java.awt.Rectangle;

    import javax.swing.JButton;

    import javax.swing.ImageIcon;

    import javax.swing.JLabel;

    import java.awt.Font;

    import java.awt.Dimension;

    import java.awt.Frame;

    import java.awt.GridBagLayout;

    import javax.swing.SwingConstants;

    import Bean.PermisoBean;

    import Bean.UsuarioBean;

    import Logic.GestorUsuario;

    import java.awt.Color;

    import java.util.List;

    import java.awt.event.KeyEvent;

    public class FrmMenuPrincipal extends JFrame {

    private FrmMantenimientoCliente

    mantCliente=null;

  • 155

    155

    private FrmCambiarContrasena

    vent_cambiarContrasena=null;

    private FrmMantenerPaquete

    vent_MantPaquete=null;

    private FrmCargarRestaurantes vent_restaurantes;

    private FrmReportes rep_venta;

    private FrmReporteDestFrec rep_destinos;

    private GestorUsuario g_usuario;

    private FrmVentaPaquete vent_Ventas;

    private FrmArmarPaquete armarPaquete=null;

    private FrmMantSeguro MantSeguro=null;

    private FrmMantUsuario vent_usuario=null;

    private FrmMantTemporadas

    MantTemporadas=null;

    private FrmPromocion MantPromocion=null;

    private FrmMantActividades

    MantActividades=null;

    private FrmCargarHoteles vent_cargarHotel=null;

    private FrmCargarVuelos vent_cargarVuelo=null;

    private FrmCargarViajesTerrestres

    vent_cargarViajesTer=null;

    private FrmCargarViajesMar

    vent_cargarViajesMar=null;

    private FrmMantPerfiles vent_perfil=null;

    private FrmReporteTipoviaje rep_Tipoviaje=null;

    private FrmReporteVentasXUsuario

    rep_ventas=null;

    private FrmDesbloquearReserva

    vent_DesbReserva=null;

    private UsuarioBean usuario; // @jve:decl-

    index=0:

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    private JMenuBar jJMenuBar = null;

    private JMenu mnuMantenimientos = null;

    private JMenu mnuVentas = null;

    private JMenuItem mnuiUsuario = null;

    private JMenu mnuReportes = null;

  • 156

    156

    private JMenuItem mnuiCliente = null;

    private JMenuItem mnuiPaquete = null;

    private JMenuItem mnuiPerfil = null;

    private JMenuItem mnuiArmarPaquete = null;

    private JMenuItem mnuiSeguro = null;

    private JMenuItem mnuiTemporadas = null;

    private JMenuItem mnuiPromocion = null;

    private JMenuItem mnuiActividades = null;

    private JMenu mnuCargarXml = null;

    private JMenuItem mnuiHoteles = null;

    private JMenuItem mnuiVuelos = null;

    private JMenuItem mnuiTerrestres = null;

    private JMenuItem mnuiViajesMartimos = null;

    private JMenu mnuOpciones = null;

    private JMenuItem mnuiCambiarContrasena =

    null;

    private JLabel lblTiempo = null;

    //private JLabel lblTiempoHilo = new JLabel();

    private HiloHora Hilo;

    private JMenuItem mnuiSalir = null;

    private JLabel lblHoraHilo = null;

    private JPanel pnlHora = null;

    private JLabel lblUsuario = null;

    private JLabel lblNombre = null;

    private JToolBar tlbMenuPrincipal = null;

    private JButton btnAyuda = null;

    private JButton btnReporte = null;

    private JButton btnSalir = null;

    private JLabel jLabel = null;

    private JMenuItem mnuiTipoViaje = null;

    private JMenuItem mnuiVentasXUsuario = null;

    private JMenuItem mnuiDesbloquearReserva =

    null;

    private JButton btnMantenimiento = null;

    private JMenuItem mnuiCargarRestaurante =

    null;

    private JMenuItem mnuiDestinoFrecuente = null;

    private JMenuItem mnuiVentas = null;

    private JButton btnXml = null; private JMenuItem mnuiVta = null;

    /**

    * This is the default constructor

    */

  • 157

    157

    public FrmMenuPrincipal() {

    super();

    lblHoraHilo=new JLabel();

    //lblTiempo=new JLabel();

    initialize();

    Hilo=new HiloHora(this.lblHoraHilo);

    Hilo.start();

    //this.setExtendedState(JFrame.MAXIMIZED_B

    OTH);

    this.setResizable(false);

    this.g_usuario=new GestorUsuario();

    }

    /**

    * This method initializes this

    *

    * @return void

    */

    private void initialize() {

    this.setSize(655, 562);

    //this.setExtendedState(Frame.MAXIMIZED_BO

    TH);

    this.setJMenuBar(getJJMenuBar());

    this.setContentPane(getJContentPane());

    this.setTitle("Menu Principal");

    }

    public void setObjUsuario(UsuarioBean

    usuario){

    this.usuario=usuario;

    this.lblNombre.setText(usuario.getNombre()+"

    "+usuario.getAppaterno());

    }

    /**

    * This method initializes jContentPane

    * * @return javax.swing.JPanel

    */

    private JPanel getJContentPane() {

    if (jContentPane == null) {

  • 158

    158

    jLabel = new JLabel();

    jLabel.setBounds(new Rectangle(-1,

    69, 649, 371));

    jLabel.setIcon(new

    ImageIcon(getClass().getResource("/Iconos/travelsoft8.GIF")));

    jLabel.setText("");

    lblHoraHilo = new JLabel();

    lblHoraHilo.setFont(new

    Font("Dialog", Font.BOLD, 14));

    lblHoraHilo.setBounds(new

    Rectangle(456, 23, 163, 27));

    lblHoraHilo.setForeground(Color.blue);

    lblHoraHilo.setText("");

    lblTiempo = new JLabel();

    lblTiempo.setFont(new

    Font("Dialog", Font.BOLD, 14));

    lblTiempo.setBounds(new

    Rectangle(286, 23, 153, 28));

    lblTiempo.setHorizontalAlignment(SwingConsta

    nts.RIGHT);

    mnuMantenimientos.setText("Mantenimientos");

    mnuMantenimientos.setMnemonic(KeyEvent.VK

    _M);

    mnuMantenimientos.add(getMnuiUsuario());

    mnuMantenimientos.add(getMnuiCliente());

    mnuMantenimientos.add(getMnuiPaquete());

    mnuMantenimientos.add(getMnuiPerfil());

    mnuMantenimientos.add(getMnuiSeguro());

    mnuMantenimientos.add(getMnuiTemporadas());

    mnuMantenimientos.add(getMnuiPromocion());

    mnuMantenimientos.add(getMnuiActividades());

    mnuMantenimientos.add(getMnuiVta());

  • 159

    159

    }

    return mnuMantenimientos;

    }

    /**

    * This method initializes mnuVentas

    *

    * @return javax.swing.JMenu

    */

    private JMenu getMnuVentas() {

    if (mnuVentas == null) {

    mnuVentas = new JMenu();

    mnuVentas.setText("Ventas");

    mnuVentas.setMnemonic(KeyEvent.VK_V);

    mnuVentas.add(getMnuiArmarPaquete());

    mnuVentas.add(getMnuiDesbloquearReserva());

    }

    return mnuVentas;

    }

    /**

    * This method initializes mnuiUsuario

    *

    * @return javax.swing.JMenuItem

    */

    private JMenuItem getMnuiUsuario() {

    if (mnuiUsuario == null) {

    mnuiUsuario = new JMenuItem();

    mnuiUsuario.setText("Usuario");

    mnuiUsuario.setMnemonic(KeyEvent.VK_U);

    mnuiUsuario.setEnabled(false);

    mnuiUsuario.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if (vent_usuario==null)

    vent_usuario=new

    FrmMantUsuario(); vent_usuario.limpiar();

    vent_usuario.setVisible(true);

    }

  • 160

    160

    });

    }

    return mnuiUsuario;

    }

    /**

    * This method initializes mnuReportes

    *

    * @return javax.swing.JMenu

    */

    private JMenu getMnuReportes() {

    if (mnuReportes == null) {

    mnuReportes = new JMenu();

    mnuReportes.setText("Reportes");

    mnuReportes.setMnemonic(KeyEvent.VK_R);

    mnuReportes.add(getMnuiTipoViaje());

    mnuReportes.add(getMnuiVentasXUsuario());

    mnuReportes.add(getMnuiDestinoFrecuente());

    mnuReportes.add(getMnuiVentas());

    }

    return mnuReportes;

    }

    /**

    * This method initializes mnuiCliente

    *

    * @return javax.swing.JMenuItem

    */

    private JMenuItem getMnuiCliente() {

    if (mnuiCliente == null) {

    mnuiCliente = new JMenuItem();

    mnuiCliente.setText("Cliente");

    mnuiCliente.setMnemonic(KeyEvent.VK_C);

    mnuiCliente.setEnabled(false);

    mnuiCliente.addActionListener(new

    java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent e) {

    if

    (mantCliente==null)

  • 161

    161

    mantCliente=

    new FrmMantenimientoCliente();

    mantCliente.limpiar();

    mantCliente.cambia_check(0);

    mantCliente.setVisible(true);

    }

    });

    }

    return mnuiCliente;

    }

    private JMenuItem getMnuiPerfil() {

    if (mnuiPerfil == null) {

    mnuiPerfil = new JMenuItem();

    mnuiPerfil.setText("Perfil");

    mnuiPerfil.setMnemonic(KeyEvent.VK_F);

    mnuiPerfil.setEnabled(false);

    mnuiPerfil.addActionListener(new

    java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent

    e) {

    if (vent_perfil==null)

    vent_perfil=new FrmMantPerfiles();

    vent_perfil.limpiar();

    vent_perfil.setVisible(true);

    }

    });

    }

    return mnuiPerfil;

    }

    private JMenuItem getMnuiArmarPaquete() {

    if (mnuiArmarPaquete == null) {

    mnuiArmarPaquete = new JMenuItem();

    mnuiArmarPaquete.setText("Armar Paquete");

    mnuiArmarPaquete.setMnemonic(KeyEvent.VK_

    Q);

  • 162

    162

    mnuiArmarPaquete.setEnabled(false);

    mnuiArmarPaquete.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    System.out.println("1");

    if

    (armarPaquete==null)

    armarPaquete= new FrmArmarPaquete();

    armarPaquete.setUsuario(usuario);

    armarPaquete.limpiartodo();

    armarPaquete.setTipo(0);

    armarPaquete.setVisible(true);

    }

    });

    }

    return mnuiArmarPaquete;

    }

    private JMenuItem getMnuiSeguro() {

    if (mnuiSeguro == null) {

    mnuiSeguro = new JMenuItem();

    mnuiSeguro.setText("Seguro");

    mnuiSeguro.setMnemonic(KeyEvent.VK_S);

    mnuiSeguro.setEnabled(false);

    mnuiSeguro.addActionListener(new

    java.awt.event.ActionListener() {

    public void actionPerformed(java.awt.event.ActionEvent

    e) {

    if (MantSeguro==null)

    MantSeguro= new FrmMantSeguro();

    MantSeguro.actualiza();

    MantSeguro.limpiar();

  • 163

    163

    MantSeguro.setVisible(true);

    }

    });

    }

    return mnuiSeguro;

    }

    /**

    * This method initializes mnuiTemporadas

    *

    * @return javax.swing.JMenuItem

    */

    private JMenuItem getMnuiTemporadas() {

    if (mnuiTemporadas == null) {

    mnuiTemporadas = new

    JMenuItem();

    mnuiTemporadas.setText("Temporadas");

    mnuiTemporadas.setMnemonic(KeyEvent.VK_T

    );

    mnuiTemporadas.setEnabled(false);

    mnuiTemporadas.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if

    (MantTemporadas==null)

    MantTemporadas= new FrmMantTemporadas();

    MantTemporadas.setVisible(true);

    }

    });

    }

    return mnuiTemporadas;

    }

    /** * This method initializes mnuiPromocion

    *

    * @return javax.swing.JMenuItem

    */

  • 164

    164

    private JMenuItem getMnuiPromocion() {

    if (mnuiPromocion == null) {

    mnuiPromocion = new

    JMenuItem();

    mnuiPromocion.setText("Promocin");

    mnuiPromocion.setMnemonic(KeyEvent.VK_N);

    mnuiPromocion.setEnabled(false);

    mnuiPromocion.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if

    (MantPromocion==null)

    private JMenuItem getMnuiVuelos() {

    if (mnuiVuelos == null) {

    mnuiVuelos = new JMenuItem();

    mnuiVuelos.setText("Vuelos

    Areos");

    mnuiVuelos.setEnabled(false);

    mnuiVuelos.setMnemonic(KeyEvent.VK_UNDE

    FINED);

    mnuiVuelos.setToolTipText("Vuelos Areos");

    mnuiVuelos.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if

    (vent_cargarVuelo==null)

    vent_cargarVuelo=new FrmCargarVuelos();

    vent_cargarVuelo.setVisible(true);

    }

    });

    }

    return mnuiVuelos; }

    /**

    * This method initializes mnuiTerrestres

  • 165

    165

    *

    * @return javax.swing.JMenuItem

    */

    private JMenuItem getMnuiTerrestres() {

    if (mnuiTerrestres == null) {

    mnuiTerrestres = new JMenuItem();

    mnuiTerrestres.setText("Viajes

    Terrestres");

    mnuiTerrestres.setEnabled(false);

    mnuiTerrestres.setToolTipText("Viajes

    Terrestres");

    mnuiTerrestres.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if

    (vent_cargarViajesTer==null)

    vent_cargarViajesTer=new

    FrmCargarViajesTerrestres();

    vent_cargarViajesTer.setVisible(true);

    }

    });

    }

    return mnuiTerrestres;

    }

    /**

    * This method initializes mnuiViajesMartimos

    *

    * @return javax.swing.JMenuItem

    */

    private JMenuItem getMnuiViajesMartimos() {

    if (mnuiViajesMartimos == null) {

    mnuiViajesMartimos = new

    JMenuItem();

    mnuiViajesMartimos.setText("Viajes

    Martimos");

    mnuiViajesMartimos.setEnabled(false);

    mnuiViajesMartimos.setToolTipText("Viajes

    Martimos");

  • 166

    166

    mnuiViajesMartimos.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if

    (vent_cargarViajesMar==null)

    vent_cargarViajesMar=new

    FrmCargarViajesMar();

    vent_cargarViajesMar.setVisible(true);

    }

    });

    }

    return mnuiViajesMartimos;

    }

    /**

    * This method initializes mnuOpciones

    *

    * @return javax.swing.JMenu

    */

    private JMenu getMnuOpciones() {

    if (mnuOpciones == null) {

    mnuOpciones = new JMenu();

    mnuOpciones.setText("Opciones");

    mnuOpciones.setMnemonic(KeyEvent.VK_O);

    mnuOpciones.add(getMnuiCambiarContrasena())

    ;

    mnuOpciones.add(getMnuiSalir());

    }

    return mnuOpciones;

    }

    /**

    * This method initializes

    mnuiCambiarContrasena

    *

    * @return javax.swing.JMenuItem

    */ private JMenuItem getMnuiCambiarContrasena()

    {

    if (mnuiCambiarContrasena == null) {

  • 167

    167

    mnuiCambiarContrasena = new

    JMenuItem();

    mnuiCambiarContrasena.setText("Cambiar

    Contrasea");

    mnuiCambiarContrasena.setMnemonic(KeyEvent

    .VK_UNDEFINED);

    mnuiCambiarContrasena.setEnabled(true);

    mnuiCambiarContrasena.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if

    (vent_cambiarContrasena==null)

    vent_cambiarContrasena=new

    FrmCambiarContrasena();

    vent_cambiarContrasena.limpiar();

    vent_cambiarContrasena.setobjUsuario(usuario);

    vent_cambiarContrasena.setVisible(true);

    }

    });

    }

    return mnuiCambiarContrasena;

    }

    public void enables_forms(String permiso){

    if (permiso.equals("m_cliente"))

    this.mnuiCliente.setEnabled(true);

    if(permiso.equals("m_usuario"))

    this.mnuiUsuario.setEnabled(true);

    if (permiso.equals("m_seguro"))

    this.mnuiSeguro.setEnabled(true);

    if (permiso.equals("m_promocion"))

    this.mnuiPromocion.setEnabled(true);

    if(permiso.equals("m_actividades"))

    this.mnuiActividades.setEnabled(true);

    if(permiso.equals("m_perfil"))

    this.mnuiPerfil.setEnabled(true);

  • 168

    168

    if (permiso.equals("m_paquete"))

    this.mnuiPaquete.setEnabled(true);

    if(permiso.equals("armar_paquete"))

    this.mnuiArmarPaquete.setEnabled(true);

    if (permiso.equals("m_temporadas"))

    this.mnuiTemporadas.setEnabled(true);

    if (permiso.equals("desbloquear_reserva"))

    this.mnuiDesbloquearReserva.setEnabled(true);

    if(permiso.equals("reportes"))

    {

    this.mnuiTipoViaje.setEnabled(true);

    this.mnuiVentas.setEnabled(true);

    this.mnuiVentasXUsuario.setEnabled(true);

    this.mnuiDestinoFrecuente.setEnabled(true);

    this.btnReporte.setEnabled(true);

    }

    if (permiso.equals("cargaXML"))

    {

    this.mnuiHoteles.setEnabled(true);

    this.mnuiVuelos.setEnabled(true);

    this.mnuiTerrestres.setEnabled(true);

    this.mnuiViajesMartimos.setEnabled(true);

    this.mnuiCargarRestaurante.setEnabled(true);

    }

    }

    public void habilita_forms(){

    List

    permisos=this.g_usuario.getPerfilesUsuario(usuario.getNick());

    Integer ind=0;

    while (ind

  • 169

    169

    //System.out.println(permiso.getDescripcion());

    ind++;

    }

    }

    lblUsuario.setHorizontalTextPosition(SwingCons

    tants.RIGHT);

    lblUsuario.setHorizontalAlignment(SwingConsta

    nts.RIGHT);

    lblUsuario.setForeground(Color.blue);

    lblUsuario.setText("Usuario :");

    pnlHora = new JPanel();

    pnlHora.setLayout(null);

    pnlHora.setBounds(new

    Rectangle(0, 440, 651, 65));

    pnlHora.add(lblHoraHilo, null);

    pnlHora.add(lblTiempo, null);

    pnlHora.add(lblUsuario, null);

    pnlHora.add(lblNombre, null);

    }

    return pnlHora;

    }

    /**

    * This method initializes tlbMenuPrincipal

    *

    * @return javax.swing.JToolBar

    */

    private JToolBar getTlbMenuPrincipal() {

    if (tlbMenuPrincipal == null) {

    tlbMenuPrincipal = new JToolBar();

    tlbMenuPrincipal.setBounds(new

    Rectangle(1, 6, 647, 57));

    private JButton getBtnSalir() {

    if (btnSalir == null) {

    btnSalir = new JButton();

    btnSalir.setIcon(new

    ImageIcon(getClass().getResource("/Iconos/salir1.png")));

    btnSalir.setToolTipText("Salir");

    btnSalir.addActionListener(new java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

  • 170

    170

    FrmMenuPrincipal.this.Hilo.finaliza();

    usuario.setConectado(false);

    g_usuario.setConectado(usuario);

    System.exit(0);

    }

    });

    }

    return btnSalir;

    }

    /**

    * This method initializes mnuiTipoViaje

    *

    * @return javax.swing.JMenuItem

    */

    private JMenuItem getMnuiTipoViaje() {

    if (mnuiTipoViaje == null) {

    mnuiTipoViaje = new JMenuItem();

    mnuiTipoViaje.setText("Tipo de

    Viajes");

    mnuiTipoViaje.setEnabled(false);

    private JButton getBtnXml() {

    if (btnXml == null) {

    btnXml = new JButton();

    btnXml.setIcon(new

    ImageIcon(getClass().getResource("/Iconos/niZe - XML.PNG")));

    btnXml.setToolTipText("Cargar

    Hoteles");

    btnXml.addActionListener(new

    java.awt.event.ActionListener() {

    public void

    actionPerformed(java.awt.event.ActionEvent e) {

    if

    (vent_cargarHotel==null)

    vent_cargarHotel=new FrmCargarHoteles();

    vent_cargarHotel.setVisible(true);

    } });

    }

    return btnXml;

    }

  • 171

    171

    vent_Ventas=new FrmVentaPaquete();

    vent_Ventas.setVisible(true);

    }

    });

    }

    return mnuiVta;

    }

    }

    5. Nuevo Cliente

    package presentacion;

    import java.awt.BorderLayout;

    import javax.swing.JPanel;

    import javax.swing.JFrame;

    import java.awt.Dimension;

    import java.awt.Rectangle;

    import java.awt.GridBagLayout;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JTextField;

    import javax.swing.JComboBox;

    import java.awt.Color;

    import javax.swing.BorderFactory;

    import java.awt.Toolkit;

    import javax.swing.JButton;

    import javax.swing.SwingConstants;

    import javax.swing.ImageIcon;

    import javax.swing.border.TitledBorder;

    import java.awt.Font;

    import java.awt.event.KeyEvent;

    import javax.swing.JRadioButton;

    import java.lang.Object;

    import Bean.ClienteBean;

    import Bean.UsuarioBean;

    import Logic.GestorCliente;

    public class FrmNuevoCliente extends JFrame {

  • 172

    172

    private static final long serialVersionUID = 1L;

    private FrmMantenimientoCliente

    vent_mantCliente;

    private GestorCliente g_cliente;

    private boolean esEmpresa;

    private JPanel jContentPane = null;

    private JPanel pnlCliente = null;

    private JLabel lblCodigo = null;

    private JTextField tbxCodigo = null;

    private JLabel lblNombre = null;

    private JTextField tbxNombre = null;

    private JLabel lblApePaterno = null;

    private JTextField tbxApPaterno = null;

    private JLabel lblApeMaterno = null;

    private JTextField tbxApMaterno = null;

    private JLabel lblDNI = null;

    private JTextField tbxDni = null;

    private JLabel lblDireccion = null;

    private JTextField tbxDireccion = null;

    private JLabel lblEdad = null;

    private JTextField tbxEdad = null;

    private JLabel lblSexo = null;

    private JComboBox cbxSexo = null;

    private JLabel lblTelefono = null;

    private JTextField tbxTelefono = null;

    private JLabel lblEmail = null;

  • 173

    173

    private JTextField tbxEmail = null;

    private JLabel lblRUC = null;

    private JTextField tbxRuc = null;

    private JRadioButton rbtnDni = null;

    private JRadioButton rbtnRuc = null;

    private JButton btnRegistrar = null;

    private JButton btnCancelar = null;

    private Integer tipo;//tipo=0 registrar,tipo=1

    modificar // @jve:decl-index=0:

    /**

    * This is the default constructor

    */

    public FrmNuevoCliente() {

    super();

    g_cliente=new GestorCliente();

    initialize();

    this.setResizable(false);

    this.setResizable(false);

    }

    public void

    setVentana_mantenimiento(FrmMantenimientoCliente vent_mantCliente)

    { this.vent_mantCliente=vent_mantCliente;

    }

    public void carga_cliente(Integer codigo){

    ClienteBean cliente;

    cliente=this.g_cliente.getCliente(codigo);

    this.carga_datos(cliente);

    }

    public void setEsEmpresa(boolean esEmpresa){

    this.esEmpresa=esEmpresa;

    }

    public void carga_datos(ClienteBean cliente){

    this.tbxCodigo.setText(cliente.getIdcliente().toStr

    ing());

  • 174

    174

    if(!esEmpresa)

    {this.tbxApPaterno.setText(cliente.getApepaterno

    ());

    this.tbxApMaterno.setText(cliente.getApematern

    o());

    this.tbxEdad.setText(cliente.getEdad().toString())

    ;

    this.tbxDni.setText(cliente.getNumdocumento());

    if

    (cliente.getSexo().equals("Masculino"))

    this.cbxSexo.setSelectedIndex(0);

    else

    this.cbxSexo.setSelectedIndex(1);

    this.cambia_lblnombre(0);

    tbxRuc.setEditable(false);

    tbxDni.setEditable(true);

    rbtnDni.setSelected(true);

    rbtnRuc.setSelected(false);

    }

    else

    {this.cambia_lblnombre(1);

    tbxRuc.setEditable(true);

    tbxDni.setEditable(false);

    rbtnRuc.setSelected(true);

    rbtnDni.setSelected(false);

    }

    this.tbxNombre.setText(cliente.getNombre());

    this.tbxDireccion.setText(cliente.getDireccion());

    this.tbxEmail.setText(cliente.getEmail());

    this.tbxTelefono.setText(cliente.getTelefono());

    this.tbxRuc.setText(cliente.getRuc());

    }

    public void setDatos(){

    if (this.tipo==0)

    {

    this.setTitle("Registrar Cliente");

  • 175

    175

    this.btnRegistrar.setText("Registrar");

    this.calcula_codigoMax();

    this.rbtnDni.setSelected(true);

    this.rbtnRuc.setSelected(false);

    this.tbxRuc.setEditable(false);

    this.cambia_lblnombre(0);

    }

    else

    {

    this.setTitle("Modificar Cliente");

    this.btnRegistrar.setText("Modificar");

    //this.carga_usuario();

    }

    }

    public void setTipo(Integer tipo){

    this.tipo=tipo;

    }

    public void calcula_codigoMax(){

    this.tbxCodigo.setText(g_cliente.getMaxId().toSt

    ring());

    }

    public ClienteBean getObjCliente(){

    ClienteBean cliente=new ClienteBean();

    String sexo;

    cliente.setIdcliente(Integer.parseInt(tbxCodigo.ge

    tText()));

    cliente.setNombre(this.tbxNombre.getText());

    cliente.setNumdocumento(this.tbxDni.getText());

    cliente.setApepaterno(this.tbxApPaterno.getText(

    ));

    cliente.setApematerno(this.tbxApMaterno.getText());

    if(!esEmpresa)

    {

  • 176

    176

    cliente.setEdad(Integer.parseInt(this.tbxEdad.get

    Text()));

    sexo=(String)

    this.cbxSexo.getItemAt(this.cbxSexo.getSelectedIndex());

    cliente.setSexo(sexo);

    }

    cliente.setEmail(this.tbxEmail.getText());

    cliente.setDireccion(this.tbxDireccion.getText());

    cliente.setRuc(this.tbxRuc.getText());

    cliente.setTelefono(this.tbxTelefono.getText());

    //estado=(String)this.cb.getItemAt(this.cbxEstado

    .getSelectedIndex());

    cliente.setEstado("Registrado");

    return cliente;

    }

    public void inserta(){

    if (this.datos_validos("Registrar Cliente"))

    {boolean exito;

    ClienteBean cliente;

    cliente=this.getObjCliente();

    exito=this.g_cliente.Inserta(cliente);

    System.out.println(exito);

    if (exito)

    {JOptionPane.showMessageDialog(this, "Se

    registro correctamete al cliente", "Registrar

    Cliente",JOptionPane.INFORMATION_MESSAGE);

    this.limpiar();

    this.vent_mantCliente.busca_clientes();

    this.calcula_codigoMax();

    }

    else

    JOptionPane.showMessageDialog(this, "No se registro correctamete al cliente", "Registrar

    Cliente",JOptionPane.ERROR_MESSAGE);

    }

    }

  • 177

    177

    public boolean datos_validos(String ventana){

    boolean correcto=true;

    if(!esEmpresa)

    {if(this.tbxNombre.getText().length()==0)

    {JOptionPane.showMessageDialog(this, "Debe

    ingresar el nombre.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    if(this.tbxApPaterno.getText().length()==0)

    {JOptionPane.showMessageDialog(this, "Debe

    ingresar el apellido paterno.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    if(this.tbxApMaterno.getText().length()==0)

    {JOptionPane.showMessageDialog(this, "Debe

    ingresar el apellido materno.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    if(this.tbxEdad.getText().length()==0)

    {JOptionPane.showMessageDialog(this, "Debe

    ingresar la edad.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    if(this.tbxTelefono.getText().length()==0)

    {JOptionPane.showMessageDialog(this, "Debe

    ingresar el nmero de telfono.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    if(this.cbxSexo.getSelectedIndex()==-1)

    {JOptionPane.showMessageDialog(this, "Debe

    seleccionar el sexo.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    if(this.tbxDireccion.getText().length()==0)

    {JOptionPane.showMessageDialog(this, "Debe

    ingresar la direccin.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

  • 178

    178

    if(this.tbxEmail.getText().length()==0)

    {JOptionPane.showMessageDialog(this, "Debe

    ingresar el correo electrnico.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    if(this.tbxEdad.getText().length()!=2)

    {JOptionPane.showMessageDialog(this, "La edad

    debe ser de 2 dgitos.",ventana,JOptionPane.ERROR_MESSAGE);

    return false;

    }

    }

    return correcto;

    }

    public void modifica(){

    if (this.datos_validos("Modificar Cliente"))

    {boolean exito;

    ClienteBean cliente;

    cliente=this.getObjCliente();

    exito=this.g_cliente.Modifica(cliente);

    if (exito)

    {JOptionPane.showMessageDialog(this, "Se

    modific correctamete al cliente.", "Modificar

    Cliente",JOptionPane.INFORMATION_MESSAGE);

    this.vent_mantCliente.busca_clientes();

    this.dispose();

    }

    else

    JOptionPane.showMessageDialog(this, "No se

    modific correctamete al cliente.", "Modificar

    Cliente",JOptionPane.ERROR_MESSAGE);

    }

    }

  • 179

    179

    OBJETIVOS

    Implementar un sistema o aplicacin grfica utilizando Swing.

    Presentar los entornos grficos del proyetco final.

  • 180

    180

    JDBC

    JDBC fue diseado para mantener sencillas las cosas sencillas. Esto significa que el API JDBC hace muy sencillas las tareas diarias de una base de datos, como una simple sentencia SELECT.

    JDBC proporciona a los desarrolladores de base de datos una serie de poderosas y flexibles herramientas que permiten escribir aplicaciones de base de datos con una interface estndar. Los mtodos definidos en JDBC operan independiente de la base de datos. Se usan las mismas tcnicas de programacin para hacer cualquiera de las siguientes tareas si se usa DB2, Oracle, Informix, SQLServer, mySQL, o cualquier otra base de datos:

    Abrir o cerrar una conexin Llamar procedimientos Agregar, modificar, o eliminar data usando sentencias SQL DML

    OBJETIVOS

    Implementar un sistema o aplicacin utilizando conexin a base de datos.

  • 181

    181

    Ejecutar sentencias DDL Manejar errores de base de datos

    Como se puede notar, tener una sola interface proporciona muchos beneficios, como trabajar con mltiples bases de datos. JDBC generaliza las funciones de acceso a datos ms comunes. Las clases estn contenidas en los paquetes: java.sql y javax.sql

    1.1 Arquitectura de JDBC

    El API de JDBC ofrece una serie de interfaces Java que permiten establecer conexiones con bases de datos particulares, ejecutar sentencias SQL y procesar los resultados. Las interfaces ms importantes son las siguientes: java.sql.DriverManager Permite cargar los controladores JDBC especficos para cada DBMS y establecer conexiones con bases de datos. java.sql.Statement Permite ejecutar sentencias SQL dada una conexin ya establecida. Esta interface tiene dos subtipos bastante importantes: java.sql.PreparedStatement para ejecutar sentencias SQL precompiladas y java.sqlCallableStatement para llamar procedimientos almacenados en la base de datos. java.sql.ResultSet Permite acceder al resultado de una consulta SQL hecha a la base de datos. java.sql.ResultSetMetaData Tiene informacin sobre el conjunto de resultados, como el nmero de columnas que tiene la consulta, de filas, etc. La figura siguiente, muestra la interrelacin entre estas interfaces segn el modelo de objetos de la especificacin de JDBC.

  • 182

    182

    1.2 La interface Connection

    Representa una conexin con una base de datos. Una aplicacin puede tener ms de una conexin a ms de una base de datos. Una conexin (sesin) con una especfica base de datos, permite ejecutar sentencias SQL y retornar resultados dentro del contexto de la conexin. Una conexin permite proporcionar informacin de la base de datos como, descripcin de las tablas de la base de datos, la gramtica SQL soportada, los procedimientos almacenados, las capacidades de conexin, y ms.

  • 183

    183

    Esta informacin se obtiene con el mtodo getMetaData. La conexin se establece a travs del driver, que se carga en ejecucin mediante el mtodo: Class.forName(String nombredelDriver) Una vez cargado el driver, la conexin a la BD se realiza invocando a alguno de los siguientes mtodos de la clase java.sql.DriverManager : Connnection getConnection(String url, java.util.Properties info) Connnection getConnection(String url, String usr, String pwd) Connnection getConnection(String url) El objeto Connection que devuelve el programa se usa para realizar todas las operaciones sobre la BD. El siguiente cdigo de programa muestra una tpica conexin de base de datos:

    A partir de este momento el objeto miConexin ser usado en el resto del programa para realizar todas las operaciones sobre la Base de Datos.

    . . .

    Connection miConexion;

    try {

    Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); //Driver // URL de la Base de Datos (Nombre del ODBC)

    miConexion = DriverManager.getConnection(jdbc:odbc:empleadosDB); ........

    } catch (ClassNotFounException e1) {

    // captura el error: no se encontr el driver } catch (SQLException e2) {

    // captura el error: no se pudo conectar a la BD }

    public boolean isCellEditable(int row, int col) {

    return false;

    }

    }

  • 184

    184

    Al crear una conexin se debe manejar dos excepciones. Una es para controlar si el Driver no ha sido encontrado y la otra para verificar si se realiz la conexin. Nota: Por defecto un objeto Connection est en modo auto-commit, que significa que automticamente se hace commit a los cambios despus de ejecutar una sentencia. Si el modo auto-commit ha sido deshabilitado, el mtodo commit debe llamarse explcitamente para hacer permanentes los cambios; de otra manera, los cambios no sern guardados en la base de datos.

    1.3 La interface Statement

    Es el objeto utilizado para ejecutar una sentencia SQL esttica y retornar los resultados que produce. Una vez que se establece una conexin con una base de datos en particular, esa conexin puede ser usada para enviar sentencias sql. Un objeto Statement es creado con el mtodo createStatement del objeto Connection, como se muestra en el fragmento de cdigo siguiente: Connection con = DriverManager.getConnection(url, admin, ); Statement stmt = con.createStatement(); La sentencia SQL que enviaremos a la base de datos es proporcionada como argumento para uno de los mtodos execute de un objeto Statement. Esto se muestra en el siguiente ejemplo, que usa el mtodo executeQuery:

    ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Tabla);

    La variable rs contiene el resultado de ejecutar la sentencia. Nota: Por defecto, slo un objeto ResultSet puede ser abierto al mismo tiempo por un objeto Statement. Por lo tanto, si la lectura de un objeto ResultSet est intercalada con la lectura de otro, cada uno debera haber sido generado por diferentes objetos Statement. Todos los mtodos de ejecucin de la interface Statement implcitamente cierran el actual objeto ResultSet si existe alguno abierto en el objeto Statement.

  • 185

    185

    1.4 La interface Resultset Un ResultSet es un objeto Java que contiene el resultado de ejecutar una consulta SQL en la base de datos. En otras palabras, contiene las filas que satisfacen las condiciones de la consulta. La interface ResultSet proporciona mtodos para obtener (getBoolean, getLong, y ms) los valores de las varias columnas de la fila actual. Los valores pueden ser obtenidos usando el ndice o el nombre de la columna. En general, usar el ndice de la columna es ms eficiente. Las columnas estn numeradas desde el 1. El mtodo next mueve el cursor del objeto ResultSet a la siguiente fila haciendo la fila actual, y retorna false cuando no hay ms filas. este mtodo se puede utilizar en un bucle while para recorrer el juego de resultados. Inicialmente el cursor est posicionado antes de la primera fila. Un objeto ResultSet por defecto no es actualizable y tiene un cursor que se mueve slo hacia adelante. Por lo que, slo se puede recorrer el ResulSet una vez y slo de la primera a la ltima fila. Es posible crear objetos ResultSet que se pueden mover adelante y atrs (scrollable), y que son actualizables. Por ejemplo:

    Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

    ResultSet rs = stmt.executeQuery(SELECT a, b,c FROM TABLA); En el segmento de cdigo anterior rs es scrollable, no muestra cambios hechos por otros, y es actualizable.

    1.5 La interface ResultsetMetaData

    Es un objeto que puede ser usado para obtener informacin sobre los tipos y propiedades de las columnas en un objeto ResultSet. El siguiente fragmento de cdigo crea un objeto ResultSet rs, crea el objeto ResultSetMetaData rsmd, y usa rsmd para averiguar cuntas columnas tiene rs y si la primera columna en rs puede ser usada en una clasula WHERE. ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM TABLE2); ResultSetMetaData rsmd = rs.getMetaData();

  • 186

    186

    int numberOfColumns = rsmd.getColumnCount(); boolean b = rsmd.isSearchable(1); El siguiente fragmento de cdigo imprime los nombres de todas las columnas en el objeto ResultSet rs. ResultSetMetaData rsmd = rs.getMetaData(); for ( int i=1; i

  • 187

    187

    1.7 Ejercicio 2

    Cree un formulario que permita consultar registros de una base de datos utilizando el driver, el url y la sentencia sql especificados.

    1.7 Ejercicio 2 Cree un formulario que permita consultar registros de una base de datos utilizando el driver, el url y la sentencia sql especificados.

    import java.sql.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class Ejemplo2JDBC extends JFrame implements ActionListener{

    private JTable jTable;

    private JTextField drvField;

    private JTextField urlField;

    private JTextField sqlField;

    private JButton bEjecutar;

    public Ejemplo2JDBC(String s) {

    super(s);

    JPanel contentPane = new JPanel(new BorderLayout());

    jTable = new JTable();

    jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    jTable.setPreferredScrollableViewportSize(new Dimension(600, 120));

    contentPane.add(new JScrollPane(jTable),BorderLayout.CENTER);

    JPanel panel = new JPanel(new BorderLayout());

    JPanel panelOeste = new JPanel(new GridLayout(3,1));

    panelOeste.add(new JLabel(Driver: )); panelOeste.add(new JLabel(URL: )); panelOeste.add(new JLabel(SQL: )); panel.add(panelOeste,BorderLayout.WEST);

    JPanel panelCentro = new JPanel(new GridLayout(3,1));

    drvField = new JTextField(sun.jdbc.odbc.JdbcOdbcDriver,20); urlField = new JTextField(jdbc:odbc:dsnPubs,20);

  • 188

    188

    panelCentro.add(drvField);

    panelCentro.add(urlField);

    panelCentro.add(sqlField);

    panel.add(panelCentro,BorderLayout.CENTER);

    JPanel panelSur = new JPanel(new FlowLayout(FlowLayout.RIGHT));

    bEjecutar = new JButton(Ejecutar consulta); bEjecutar.addActionListener(this);

    panelSur.add(bEjecutar);

    panel.add(panelSur,BorderLayout.SOUTH);

    contentPane.add(panel,BorderLayout.NORTH);

    contentPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

    setContentPane(contentPane);

    pack();

    setVisible(true);

    }

    public void actionPerformed(ActionEvent evt){

    String drv = drvField.getText();

    String url = urlField.getText();

    String sql = sqlField.getText();

    DefaultTableModel tableModel = new DefaultTableModel();

    try{

    Class.forName(drv);

    Connection cn = DriverManager.getConnection(url);

    Statement st = cn.createStatement();

    ResultSet rs = st.executeQuery (sql);

    ResultSetMetaData rsmd = rs.getMetaData();

    for (int i=1; i

  • 189

    189

    2 CONSULTAS DE BASES DE DATOS

    2.1 Consultas SQL

    El lenguaje estructurado de consultas SQL, mediante su instruccin Select nos permite poder consultar la base de datos y obtener de ella datos segn nuestros requerimientos. El formato de la instruccin Select es: Ser obligatorio el uso de la clusula Select y From, pero las dems son opcionales. Clausulas opcionales Where y Order By WHERE y condicin de bsqueda. Si la condicin de bsqueda es TRUE, la fila se incluye en los resultados de la bsqueda.

    SELECT Campos

    FROM Tablas

    WHERE Condicin de bsqueda

    GROUP BY Columna de agrupacin

    HAVING Condicin de bsqueda

    ORDER BY Especificacin de ordenacin

  • 190

    190

    Test de comparacin(=,,=) Select Nombre from Empleados Where Sueldo >= 2000 Select Nombre from Empleados Where Contrato = 2000 And Sueldo 3000 Select Nombre from Empleados Where (Nombre Like P%) And (Contrato >= 01-Ene-90) And (Edad 2000

  • 191

    191

    Order By Nombre Select Nombre from Empleados Where Sueldo > 2000 Order By Nombre Desc Select Nombre from Empleados Where Sueldo > 2000 Order By Nombre Asc, FechaNacimiento Desc Consultas Sumarias SQL permite sumarizar datos de la base de datos mediante un conjunto de funciones de columna. Una funcin de columna SQL acepta una columna entera de datos como argumentos y produce un nico dato que sumariza la columna. Ejemplo: Cul es la cuota promedio y las ventas promedio de los vendedores? Select AVG(Cuota),AVG(Ventas) From Repventas AVG(Cuota) AVG(Ventas) $300,000 $289,353.20 SQL ofrece 6 funciones de columnas diferentes: SUM() Calcula el total de una columna numrica. AVG() Calcula el valor promedio de una columna

    numrica. MIN() Encuentra el valor ms pequeo de

    una columna. MAX() Encuentra el mayor valor de una columna. COUNT() Cuenta el nmero de valores efectivos de

    una columna. COUNT(*) Cuenta el nmero de filas de una columna. Clculo de total de una columna(SUM) Cul es el rendimiento de cuota promedio de los vendedores?

  • 192

    192

    Select AVG(100*(Ventas/Cuotas)) From Repventas AVG(100*(Ventas/Cuotas)) 102.60 Cules son las cuotas y ventas totales para todos los vendedores? Select SUM(Cuota),SUM(Ventas) From Repventas SUM(Cuota) SUM(Ventas) $2,700,000.00 $2,893,353.20 Cul es el total de los pedidos acepatados por Bill Adams? Select SUM(Importe) From Pedidos,Repventas Where Nombre=Bill Adams AndRep=Num_Empl SUM(Importe) $39,353.00 Clculo del promedio de una columna(AVG) Calcula el precio medio de los productos del fabricante ACI? Select AVG(Precio) From Productos Where ID_Fab = ACI AVG(Precio) $804.00 Cuantos son los empleados asignados a cada oficina? Select Cod_Oficina,Count(*) From tblEmpleados Group By Cod_Oficina Cod_Oficina Count(*) NULL 1 //Empleado sin oficina. 11 5 12 8

  • 193

    193

    13 4 . . Condiciones de bsqueda de grupos(Clusula HAVING) Al igual que la clusula WHERE es utilizada para seleccionar o rechazar filas individuales que participan en una consulta, la clusula HAVING es utilizada para seleccionar o rechazar grupos de filas. El formato de la clusula HAVING es anlogo al de la clusula WHERE. La clusula HAVING especifica una condicin de bsqueda para grupos. Cul es el tamao de pedido promedio para cada vendedor cuyas ventas totalizan ms de $30000? Select Cod_Vendedor,AVG(Ventas) From tblVentas Group By Cod_Vendedor Having SUM(Ventas) > 30000 Cod_Vendedor AVG(Ventas) 105 $8234.00 106 $9234.00 112 $5001.00 . . Por cada oficina con dos o ms personas, calcular la cuota total y las ventas totales para todos los vendedores que trabajan en la oficina. Select Ciudad,SUM(Cuota),SUM(RepVentas.Ventas) From Oficinas, RepVentas Where Oficina=Oficina_Rep Group by Ciudad Having Count(*) >=2 Ciudad SUM(Cuota) SUM(RepVentas.Ventas) Chicago $775,210.00 $735,200.00 Los Angeles $700,000.00 $835,400.00 New York $575,211.00 $692,220.00

    1.1 La interface PreparedStatement

    Una sentencia preparada (prepared statemen