Fórum somar produtos iguais #401793
26/05/2011
0
tenho 2 classe a de repositorio e a classe de produto, to fazendo um programa de estoque de produtos, onde cada vez q uma pessoa for estocar um novo produto ele salve e gere um codigo diferente, so que eu quero fazer com que o cliente quando va estocar exemplo açucar, se ja estivar no estoque ele não salve repetido ele some com a qunatidade que ja tem no estoque ao invez de salvar repetido
estava tentando assim na classe repositorio
public void atualizar(Produto produto) throws Exception {
this.lista.set(this.verificaExistencia(produto), produto);
public int verificaExistencia(Produto produto) {
int retorno = + 1;
for (int i = 0; i < this.lista.size(); i++) {
if (produto.getDescricaoProduto().trim().equals(this.lista.get(i).getDescricaoProduto().trim())) {
retorno = i;
break;
}
}
return retorno;
}
se puder me ajudar,
agradesço
Lu
Curtir tópico
+ 0Posts
26/05/2011
Davi Costa
Na Movimentacao vc escolhe um produto, a qtde e diz se é movimentação de entrada ou saída.
Quando vc cadastrar uma movimentação vc dá um update no Repositório de mesmo produto, caso não tenha este repositório vc cria,do jeito que vc quer.
att Davi
Gostei + 0
26/05/2011
Lu
Gostei + 0
26/05/2011
Davi Costa
Caso queira deixar do jeito que está o método equals só vai funcionar direito se vc na entidade Produto tiver implementado o método equals.
Espero ter ajudado
Att Davi
Gostei + 0
26/05/2011
Lu
eu fiz isso + não funcionol.
to tentando desse geito agora, não sei se esse codigo sta certo.
public void atualizar(Produto produto) throws Exception {
this.lista.set(this.verificaExistencia(produto), produto);
}
public int verificaExistencia(Produto produto) {
int retorno = -1;
for (int i = 0; i < this.lista.size(); i++) {
if (produto.getDescricaoProduto().trim().equals(this.lista.get(i).getDescricaoProduto().trim())) {
retorno = i;
break;
}
}
return retorno;
}
Gostei + 0
26/05/2011
Robson Teixeira
so uma pergunta não seria melhor vc sobreescrever o metodo equals em sua classe produto e na sua collection use o metodo contains pois com esse metodo ele verifica se o objeto passado como parametro e igual a um dos objetos presentes em sua lista.
mas lembre-se so ira funcionar se sobreescrever o metodo equals na classe Produto.
qualquer coisa é so chamar
att
robson
Gostei + 0
27/05/2011
Davi Costa
Att Davi
Gostei + 0
27/05/2011
Davi Costa
public void atualizar(Produto produto) throws Exception {
this.lista.set(this.verificaExistencia(produto), produto);
}
Desse modo vc pode sobrescrever algum produto, o ideal seria que o método verificaExistencia(produto) retornasse um boolean, que caso não fosse verificado a existência de nenhum produto na lista vc adicionava o mesmo na lista:
public void atualizar(Produto produto) throws Exception {
if(!this.verificaExistencia(produto)){
this.lista.add(produto);
}else{
System.out.println("produto já existia na lista.")
}
}
Observe que essa "!" (ela quer dizer contrário), usandoela no caso o método verificaExistencia deve retornar true quando o produto existir. Alterei a utilização do método set pelo add.
E caso ele já esteja na lista fiz uma chamada a System.out.println("produto já existia na lista."), só para vc ver no console. Seria até interessante vc concatenar essa String com a descrição do produto. por exemplo:
System.out.println("produto já existia na lista - "+ produto.getDescricao()).
Espero ter ajudado.
Att Davi
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)