Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.Date; import java.util.GregorianCalendar; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; /** * * @author luisjo */ public class PedidoDAO implements PedidoDAOInterface { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public void alta(Pedido p) { double importe = 0; int idPed = p.getIdPedido(); int idProd, cantidad; ArrayList<PedidoLinea> aux = p.getLineasPedido(); String inserQuery = "insert into TPedidos (idPedido, idCliente, FHPedido, FRecogida, Importe, Observaciones) values (?, ?, ?, ?, ?, ?) "; Object[] params = new Object[] { p.getIdPedido(), p.getIdCliente(), p.getFhPedido(), p.getfRecogida(), importe, p.getObservaciones() }; jdbcTemplate.update(inserQuery, params); for (PedidoLinea pl : aux) { idProd = pl.getProducto().getIdProducto(); cantidad = pl.getCantidad(); inserQuery = "insert into TPedidoLineas (idPedido, idProducto, Cantidad) values (?, ?, ?) "; params = new Object[] { idPed, idProd, jdbcTemplate }; jdbcTemplate.update(inserQuery, params); importe += pl.getProducto().getPrecio() * cantidad; } String updateQuery = "update TPedidos set Importe = ? where IdPedido = ?"; params = new Object[] { importe, p.getIdPedido() }; jdbcTemplate.update(updateQuery, params); } @Override public void baja(Pedido p) { String updateQuery = "delete from TPedidoLineas where IdPedido = ?"; Object[] params = new Object[] { p.getIdPedido() }; jdbcTemplate.update(updateQuery, params); updateQuery = "delete from TPedidos where IdPedido = ?"; params = new Object[] { p.getIdPedido() }; jdbcTemplate.update(updateQuery, params); } @Override public void modificacion(Pedido p) { double importe = 0; int idPed = p.getIdPedido(); int idProd, cantidad; ArrayList<PedidoLinea> aux = p.getLineasPedido(); Object[] params; String updateQuery = "delete from TPedidoLineas where IdPedido = ?"; params = new Object[] { p.getIdPedido() }; jdbcTemplate.update(updateQuery, params); for (PedidoLinea pl : aux) { idProd = pl.getProducto().getIdProducto(); cantidad = pl.getCantidad(); updateQuery = "insert into TPedidoLineas (idPedido, idProducto, Cantidad) values (?, ?, ?) "; params = new Object[] { idPed, idProd, cantidad }; jdbcTemplate.update(updateQuery, params); importe += pl.getProducto().getPrecio() * cantidad; } updateQuery = "update TPedidos set idCliente = ? , FHPedido = ? , FRecogida = ? , Importe = ? , Observaciones = ? where idPedido = ? "; params = new Object[] { p.getIdCliente(), p.getFhPedido(), p.getfRecogida(), importe, p.getObservaciones(), p.getIdPedido() }; jdbcTemplate.update(updateQuery, params); } @Override public Pedido consulta(int idPedido) { String selQuery = "select * from TPedidos where idPedido = ?"; Pedido p = (Pedido) jdbcTemplate.queryForObject(selQuery, new Object[] { idPedido }, new PedidoMapper()); selQuery = "select * from TPedidoLineas L, TProductos P where L.idProducto = P.idProducto and idPedido = ?"; ArrayList<PedidoLinea> pl = (ArrayList) jdbcTemplate.query(selQuery, new Object[] { idPedido }, new PLMapper()); p.setLineasPedido(pl); return p; } @Override public Pedido consulta(String idCliente, GregorianCalendar fPedido) { Date fecha = new Date(fPedido.getTimeInMillis()); String selQuery = "select * from TPedidos where idCliente = ? and FHPedido = ?"; Pedido p = (Pedido) jdbcTemplate.queryForObject(selQuery, new Object[] { idCliente, fecha }, new PedidoMapper()); selQuery = "select * from TPedidoLineas L, TProductos P where L.idProducto = P.idProducto and idPedido = ?"; ArrayList<PedidoLinea> pl = (ArrayList<PedidoLinea>) jdbcTemplate.query(selQuery, new Object[] { p.getIdPedido() }, new BeanPropertyRowMapper(PedidoLinea.class)); p.setLineasPedido(pl); return p; } @Override public ArrayList<Pedido> consultaAll(GregorianCalendar fecha) { String selQuery = "select * from TPedidos where FPedido = ?"; ArrayList<Pedido> p = (ArrayList) jdbcTemplate.query(selQuery, new Object[] { fecha }, new PedidoMapper()); return p; } private static class PedidoMapper implements RowMapper<Pedido> { public PedidoMapper() { } @Override public Pedido mapRow(ResultSet rs, int i) throws SQLException { Pedido p = new Pedido(); GregorianCalendar gcP = new GregorianCalendar(); gcP.setTime(rs.getTimestamp("FHPedido")); GregorianCalendar gcR = new GregorianCalendar(); gcR.setTime(rs.getTimestamp("FRecogida")); p.setIdPedido(rs.getInt("idPedido")); p.setIdCliente(rs.getNString("idCliente")); p.setFhPedido(gcP); p.setfRecogida(gcR); p.setImporte(rs.getDouble("Importe")); p.setObservaciones(rs.getString("Observaciones")); return p; } } private static class PLMapper implements RowMapper<PedidoLinea> { public PLMapper() { } @Override public PedidoLinea mapRow(ResultSet rs, int i) throws SQLException { PedidoLinea pl = new PedidoLinea(); Producto producto = new Producto(); producto.setIdProducto(rs.getInt("idProducto")); producto.setNombre(rs.getString("Nombre")); producto.setTipo(rs.getString("Tipo")); producto.setDescripcion(rs.getString("Descripcion")); producto.setPrecio(rs.getDouble("Precio")); producto.setDisponible(rs.getInt("Disponible")); pl.setCantidad(rs.getInt("Cantidad")); pl.setProducto(producto); return pl; } } }