Opa iai galera tudo bem? estou com uma duvida eu estou seguindo a apostila fj28 e fiz ela toda e esta tudo funcionando so q eu qro dar baixa no estoque qndo por exemplo tem 15 dvds ao comprar 1 ficaria 14 no banco e eu não estou conseguindo fazer tentei assim mais não consegui,obrigado…segue meu codigo
carrinhoController
package br.com.umc.get.controller;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.umc.get.dao.ProdutoDao;
import br.com.umc.get.modelo.Carrinho;
import br.com.umc.get.modelo.Item;
@Resource
public class CarrinhoController {
private final Carrinho carrinho;
private final ProdutoDao dao;
private final Result result;
public CarrinhoController(Carrinho carrinho, ProdutoDao dao, Result result) {
this.carrinho = carrinho;
this.dao = dao;
this.result = result;
}
@Post @Path("/carrinho")
public void adiciona(Item item) {
dao.recarrega(item.getProduto());
dao.estoque(item.getProduto());
carrinho.adiciona(item);
carrinho.estoque(item);
result.redirectTo(this).visualiza();
}
public void visualiza() {
}
@Delete @Path("/carrinho/{indiceItem}")
public void remove(int indiceItem) {
carrinho.remove(indiceItem);
result.redirectTo(this).visualiza();
}
}
Carrinho
package br.com.umc.get.modelo;
import java.util.ArrayList;
import java.util.List;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
@Component
@SessionScoped
public class Carrinho {
private List itens = new ArrayList();
private Double total = 0.0;
private Integer ItemEstoque;
public List getItens() {
return itens;
}
public void setItens(List itens) {
this.itens = itens;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public Integer getItemEstoque() {
return ItemEstoque;
}
public void setItemEstoque(Integer ItemEstoque) {
this.ItemEstoque = ItemEstoque;
}
public void adiciona(Item item) {
itens.add(item);
total += item.getProduto().getPreco() * item.getQuantidade();
}
public Integer getTotalDeItens() {
return itens.size();
}
public void remove(int indiceItem) {
Item removido = itens.remove(indiceItem);
total -= removido.getProduto().getPreco() * removido.getQuantidade();
}
// esse seria o metodo q estou tentando fazer para dar baixar no estoque
public void estoque(Item item) {
ItemEstoque = item.getProduto().getEstoque() - item.getQuantidade();
}
}
Dao
package br.com.umc.get.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.vraptor.ioc.Component;
import br.com.umc.get.infra.CriadorDeSession;
import br.com.umc.get.modelo.Produto;
@Component
public class ProdutoDao {
private final Session session;
public ProdutoDao(Session session) {
this.session = session;
}
public void salva(Produto produto) {
Transaction tx = session.beginTransaction();
session.save(produto);
tx.commit();
}
public List listaTudo() {
return this.session.createCriteria(Produto.class).list();
}
public Produto carrega(Long id) {
return (Produto) this.session.load(Produto.class, id);
}
public void atualiza (Produto produto) {
Transaction tx = session.beginTransaction();
this.session.update(produto);
tx.commit();
}
public void remove(Produto produto) {
Transaction tx = session.beginTransaction();
this.session.delete(produto);
tx.commit();
}
public List busca(String nome) {
return session.createCriteria(Produto.class)
.add(Restrictions.ilike(“nome”,nome, MatchMode.ANYWHERE))
.list();
}
public void recarrega(Produto produto) {
session.refresh(produto);
}
// junto com esse metodo q iria atualizar no banco
public void estoque(Produto produto) {
Transaction tx = session.beginTransaction();
this.session.update(produto);
tx.commit();
}
}