Inicio

miércoles, 21 de septiembre de 2016

Combos Depenedientes

En este ejemplo vamos a publicar Combo dependiente de otro, para ello se utilizara Netbeans primefaces y jsf pasos a seguir.

1. Crear una Entidad llamado UbigeoEntity con los siguientes atributos

    private Integer id;
    private String cod_dpto;
    private String cod_prov;
    private String cod_dist;
    private String nombre;

y crear los métodos de accedo get y set

2. Crear un interfaz llamada UbigeoDao con los siguientes metodos

 public List<UbigeoEntity> findDepartamento();
    public List<UbigeoEntity> findProvincia(UbigeoEntity v);
    public List<UbigeoEntity> findDistrito(UbigeoEntity v);

3. Crear una clase UbigeoDaoImpl e implementar todos los metos de UbigeoDao el siguiente código


public class UbigeoDaoImpl implements UbigeoDao{
   private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    @Override
    public List<UbigeoEntity> findDepartamento() {
          List<UbigeoEntity> listado = null;
          Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            Criteria crit = session.createCriteria(UbigeoEntity.class);
            crit.add(Restrictions.eq("cod_prov", "00"));
            listado = crit.list();
            session.beginTransaction().commit();
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
            session.beginTransaction().rollback();
        }
        return listado;
    }

    @Override
    public List<UbigeoEntity> findProvincia(UbigeoEntity v) {
          List<UbigeoEntity> listado = null;
          Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            Criteria crit = session.createCriteria(UbigeoEntity.class);
            crit.add(Restrictions.eq("cod_dpto", v.getCod_dpto()));
            crit.add(Restrictions.eq("cod_dist", "00"));
            crit.add(Restrictions.not(Restrictions.in("cod_prov",new String[] {"00"})));
            listado = crit.list();
            session.beginTransaction().commit();
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
            session.beginTransaction().rollback();
        }
        return listado;
    }

    @Override
    public List<UbigeoEntity> findDistrito(UbigeoEntity v) {
        List<UbigeoEntity> listado = null;
          Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            Criteria crit = session.createCriteria(UbigeoEntity.class);
            crit.add(Restrictions.eq("cod_dpto", v.getCod_dpto()));
            crit.add(Restrictions.eq("cod_prov", v.getCod_prov()));
             crit.add(Restrictions.not(Restrictions.in("cod_dist",new String[] {"00"})));
            listado = crit.list();
            session.beginTransaction().commit();
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
            session.beginTransaction().rollback();
        }
        return listado;
    }

4. Crear una mabagedbean con el nombre RegistroBean tal como esta

@ManagedBean
@SessionScoped
public class RegistroBean {

private List<SelectItem> selectItemsOneDepartamento;
    private List<SelectItem> selectItemsOneProvincia;
    private List<SelectItem> selectItemsOneDistrito;

  public List<SelectItem> getSelectItemsOneDepartamento() {
        this.selectItemsOneDepartamento = new ArrayList<SelectItem>();
        VideoDao dao = new VideoDaoImpl();
        List<UbigeoEntity> p = dao.findDpto();
        selectItemsOneDepartamento.clear();
        for (UbigeoEntity dpt : p) {
            SelectItem dptItem = new SelectItem(dpt.getCod_dpto(), dpt.getNombre());
            this.selectItemsOneDepartamento.add(dptItem);
        }
        return selectItemsOneDepartamento;
    }

    public void setSelectItemsOneDepartamento(List<SelectItem> selectItemsOneDepartamento) {
        this.selectItemsOneDepartamento = selectItemsOneDepartamento;
    }

    public List<SelectItem> getSelectItemsOneProvincia() {
        this.selectItemsOneProvincia = new ArrayList<SelectItem>();
        VideoDao dao = new VideoDaoImpl();
        List<UbigeoEntity> p = dao.findProvincia(this.selectedEntity);
        selectItemsOneProvincia.clear();
        for (UbigeoEntity t : p) {
            SelectItem dptItem = new SelectItem(t.getCod_prov(), t.getNombre());
            this.selectItemsOneProvincia.add(dptItem);
        }
        return selectItemsOneProvincia;
    }

    public void setSelectItemsOneProvincia(List<SelectItem> selectItemsOneProvincia) {
        this.selectItemsOneProvincia = selectItemsOneProvincia;
    }

    public List<SelectItem> getSelectItemsOneDistrito() {
        this.selectItemsOneDistrito = new ArrayList<SelectItem>();
        VideoDao dao = new VideoDaoImpl();
        List<UbigeoEntity> p = dao.findDistrito(this.selectedEntity);
        selectItemsOneDistrito.clear();
        for (UbigeoEntity t : p) {
            SelectItem dptItem = new SelectItem(t.getId(), t.getNombre());
            this.selectItemsOneDistrito.add(dptItem);
        }
        return selectItemsOneDistrito;

    }

    public void setSelectItemsOneDistrito(List<SelectItem> selectItemsOneDistrito) {
        this.selectItemsOneDistrito = selectItemsOneDistrito;
    }

5 En xtml crear el siguiente código







martes, 20 de septiembre de 2016

Jdbc

JDBC

Procedimiento y Resultados:
Modelo entidad relación: “tienda”

1. Acceso a BD desde una aplicación de consola
Aplicacion1.java
package proyecto.dao;
import java.sql.* ;
public class Aplicacion1 {
public static voidmain(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/tienda", "root", "");
Statement stmt = con.createStatement();
String idUsuario = "esaavedra";
ResultSet rs = stmt.executeQuery("select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario where id_usuario=' " + idUsuario + " ' ");
if(rs.next()) {
System.out.println("Nombres: " + rs.getString(3));
System.out.println("Paterno: " + rs.getString("paterno"));
System.out.println("Correo: " + rs.getString("correo"));
}
rs.close();
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

}

2. Acceso a BD desde una aplicación de consola usando DAO
Usuario.java
package proyecto.modelo;
public class Usuario {
privateString idUsuario;
privateString clave;
privateString nombres;
privateString paterno;
privateString materno;
privateString correo;
privateString direccion;
privateString telefono;
privateString estado;
/* CREAR LOS MÉTODOS GET Y SET PARA CADA ATRIBUTO */
}
UsuarioDAO.java
package proyecto.dao;
import java.sql.*;
public class UsuarioDAO {
public Usuario obtenerPorIdUsuario(String idUsuario){
Usuario vo = new Usuario();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/tienda", "root", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario where id_usuario='"+
idUsuario + "'");
if(rs.next()) {
vo.setIdUsuario(rs.getString("id_usuario"));
vo.setClave(rs.getString("clave"));
vo.setNombres(rs.getString("nombres"));
vo.setPaterno(rs.getString("paterno"));
vo.setMaterno(rs.getString("materno"));
vo.setCorreo(rs.getString("correo"));
vo.setDireccion(rs.getString("direccion"));
vo.setTelefono(rs.getString("telefono"));
vo.setEstado(rs.getString("estado"));
}
rs.close();
stmt.close();
con.close();
} catch(ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return vo;
}
}
Aplicacion2.java
package proyecto.dao;
public classAplicacion2 {
public static void main(String[] args) {
UsuarioDAO dao = new UsuarioDAO();
Usuario u = dao.obtenerPorIdUsuario("esaavedra");
System.out.println(u.getNombres());
System.out.println(u.getPaterno());
System.out.println(u.getMaterno());
}
}
Creando una clase conexión y los métodos del DAO:
· Crear la clase ConexionBD
package proyecto.dao;
import java.sql.*;
public final class ConexionBD {
public static Connection obtenerConexion() throws SQLException {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
con = DriverManager.getConnection("jdbc:mysql://localhost/tienda", "root", "");
return con;
}
}

· En la clase UsuarioDAO, implementar los siguientes métodos:
public Collection<Usuario> buscarPorNombre(String nombre) {
String query = "select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario where nombres like '%"+nombre +"%'";
Collection<Usuario> c = new ArrayList<Usuario>();
try {
Connection con = ConexionBD.obtenerConexion();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()) {
Usuario vo = new Usuario();
vo.setIdUsuario(rs.getString("id_usuario"));
vo.setClave(rs.getString("clave"));
vo.setNombres(rs.getString("nombres"));
vo.setPaterno(rs.getString("paterno"));
vo.setMaterno(rs.getString("materno"));
vo.setCorreo(rs.getString("correo"));
vo.setDireccion(rs.getString("direccion"));
vo.setTelefono(rs.getString("telefono"));
vo.setEstado(rs.getString("estado"));
c.add(vo);
}
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return c;
}
public Usuario insertar(Usuario vo) {
String query = "INSERT INTO usuario (id_usuario,clave,nombres,paterno,materno,correo,direccion, telefono,estado) "
+ "VALUES (?,?,?,?,?,?,?,?,?)";
System.err.println(query);
Connection con = null;
PreparedStatement stmt = null;
try {
con = ConexionBD.obtenerConexion();
stmt = con.prepareStatement(query);
stmt.setString(1, vo.getIdUsuario());
stmt.setString(2, vo.getClave());
stmt.setString(3, vo.getNombres());
stmt.setString(4, vo.getPaterno());
stmt.setString(5, vo.getMaterno());
stmt.setString(6, vo.getCorreo());
stmt.setString(7, vo.getDireccion());
stmt.setString(8, vo.getTelefono());
stmt.setString(9, vo.getEstado());
int i = stmt.executeUpdate();
if (i != 1) {
throw new SQLException("No se pudo insertar");
}
stmt.close();
con.close();
} catch (SQLException e) {
System.err.println(e.getMessage());
}
return vo;
}
public Usuario actualizar(Usuario vo) {
String query = "UPDATE usuario SET clave=?, nombres=?, paterno=?, materno=?, correo=?, direccion=?, telefono=?, estado=? WHERE id_usuario=?";
try {
Connection con = ConexionBD.obtenerConexion();
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, vo.getClave());
stmt.setString(2, vo.getNombres());
stmt.setString(3, vo.getPaterno());
stmt.setString(4, vo.getMaterno());
stmt.setString(5, vo.getCorreo());
stmt.setString(6, vo.getDireccion());
stmt.setString(7, vo.getTelefono());
stmt.setString(8, vo.getEstado());
stmt.setString(9, vo.getIdUsuario());
int i = stmt.executeUpdate();
if(i != 1){
throw new SQLException("No se pudo actualizar");
}
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return vo;
}

public void eliminar(String idUsuario) {
String query = "DELETE FROM usuario WHERE id_usuario=?";
try {
Connection con = ConexionBD.obtenerConexion();
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, idUsuario);
int i = stmt.executeUpdate();
if(i != 1){
throw new SQLException("No se pudo eliminar");
}
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Collection<Usuario> listarTodos() {
Collection<Usuario> c = new ArrayList<Usuario>();
try {
Connection con = ConexionBD.obtenerConexion();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select id_usuario,clave,nombres,paterno,materno,correo,direccion,telefono,estado from usuario");
while (rs.next()) {
Usuario vo = new Usuario();
vo.setIdUsuario(rs.getString("id_usuario"));
vo.setClave(rs.getString("clave"));
vo.setNombres(rs.getString("nombres"));
vo.setPaterno(rs.getString("paterno"));
vo.setMaterno(rs.getString("materno"));
vo.setCorreo(rs.getString("correo"));
vo.setDireccion(rs.getString("direccion"));
vo.setTelefono(rs.getString("telefono"));
vo.setEstado(rs.getString("estado"));
c.add(vo);
}
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return c;
}

3. Acceso a BD desde una aplicación Web usando capas
Se rehusarán las clases Usuario y UsuarioDAO del ejercicio 2.
Estructura del proyecto
/src
|- / proyecto.dao
|-UsuarioDAO
|-ConexionBD
|- / proyecto.servlet
|-UsuarioBuscarServlet
|- /proyecto.modelo
|-Usuario
Agregar el método en UsuarioBuscarServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UsuarioDAO dao = new UsuarioDAO();
Collection c = dao.buscarPorNombre(request.getParameter("nombre"));
request.setAttribute("USUARIOS", c);
RequestDispatcher rd = request.getRequestDispatcher("/usuario_buscar.jsp");
rd.forward(request, response);
}
usuario_buscar.jsp
<%@page import="java.util.*, proyecto.modelo.Usuario" %>
<html>
<head>
<title>Usuario Buscar</title>
</head>
<body>
<form name="f1" action="UsuarioBuscarServlet" method="post">
Nombre: <input type="text" name="nombre"/>
<input type="submit" name="enviar"value="Buscar"/>
</form>
<table border="1">
<tr>
<th>Id</th><th>Nombre</th><th>Paterno</th><th>Email</th>
</tr>
<%
Collection<Usuario> c = (ArrayList<Usuario>)request.getAttribute("USUARIOS");
if(c != null) {
for(Usuario vo : c) {
out.println("<tr><td>"+vo.getIdUsuario()+"</td>");
out.println("<td>"+vo.getNombres()+"</td>");
out.println("<td>"+vo.getPaterno()+"</td>");
out.println("<td>"+vo.getCorreo()+"</td></tr>");
}
}
%>
</table>
</body>
</html>