somar produtos iguais
oi gostaria de uma ajudinha,
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
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
Curtidas 0
Respostas
Davi Costa
26/05/2011
Não sei como está sua modelagem, mas uma boa solução, seria ter a entidade Produto(somente campos referentes ao produto - sem qtde), a entidade Repositorio (esse com campo quantidade) e a entidade Movimentacao(tb com qtde e com um campo que diga se a movimentação é de entrada ou saída).
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
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
Lu
26/05/2011
ja tenho sim, so esqueci de mencionas
GOSTEI 0
Davi Costa
26/05/2011
Se tiver usando banco de dados, vc pode fazer uma consulta passandocomo parâmetro seu produto.(Melhor opção na minha opnião)
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
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
Lu
26/05/2011
to usando sem banco de dados banco.
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;
}
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
Robson Teixeira
26/05/2011
Olá lucynha
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
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
Davi Costa
26/05/2011
Sua IDE seja, eclipse ou netbeans gera esse equals automaticamente para vc clica com o botão direito que eles vão dar essa opção para vc e vai ser solicitado qual atributo de comparação, daí vc esclhe a descrição ou qualquer atributo que faça sentido na sua aplicação para determinar quando doi produtos são iguais. e vc não fica restrita a usar só um atributo pode usar quantos achar necessário.
Att Davi
Att Davi
GOSTEI 0
Davi Costa
26/05/2011
Mais uma coisa pq vc usa :
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
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