Boton retirar JAVA

Iniciado por padiuwu, 22 Abril 2019, 02:30 AM

0 Miembros y 1 Visitante están viendo este tema.

padiuwu

Alguien que me pueda ayudar a reducir este codigo, creo que tengo demasiados if
Código (java) [Seleccionar]
if (e.getSource() == this.forminventario.btnRetirar) {
           int fila = this.forminventario.tbProducto.getSelectedRow();
           if (fila >= 0) {
               try {
                   int codigo = Integer.parseInt(modelotabla.getValueAt(fila, 0).toString());
                   int oldStock = dbproducto.getProducto(codigo).getStock();
                   if (oldStock <= 0) {
                       JOptionPane.showMessageDialog(null, "*EL PRODUCTO NO ESTÁ DISPONIBLE*", "Error", 0);
                   } else {
                       int retirar = Integer.parseInt(JOptionPane.showInputDialog(null, "NUMERO DE PRODUCTOS A RETIRAR", "Retiro de Producto", 3));
                       if (dbproducto.isExiste(codigo)) {

                           if (retirar >= oldStock) {
                               dbproducto.retirar(codigo, (0));
                               JOptionPane.showMessageDialog(null, "PRODUCTO RETIRADO CORRECTAMENTE", "Success", 1);
                               cargarTabla("");
                           } else if (retirar != 0) {
                               dbproducto.retirar(codigo, (oldStock - retirar));
                               JOptionPane.showMessageDialog(null, "PRODUCTO RETIRADO CORRECTAMENTE", "Success", 1);
                               cargarTabla("");
                           } else {
                               JOptionPane.showMessageDialog(null, "*ERROR*", "Error", 0);
                           }
                       }
                   }
               } catch (Exception ex) {
                   Logger.getLogger(ControladorProducto.class.getName()).log(Level.SEVERE, null, ex);
               }
           } else {
               JOptionPane.showMessageDialog(forminventario, "SELECCIONE UN REGISTRO");
           }
       }

rub'n

#1
No uses geshi nunca, como quinta ves que te lo decimos.

No hace falta que crees otro tema, usa el botón editar.

Edita los otros temas y así aprendes.

Con respecto a la pregunta, divide y vencerás, distribuye esos if en métodos que te retornen valores booleanos, o sin retorno, tienes muchas maneras de resolverr.


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

CalgaryCorpus

#2
En la linea 11 preguntas si El products existe, pero en la linea 6 preguntaste si habia stock. Es posible que El producto no exista en ese punto?
Para mi, parece imposible y por tanto superfluo hacer ese if ahi.

Los ifs que comparan retirar y oldstock hacen lo mismo para Las 2 primeras condiciones. Por que no hacer solo 1 if para ambos casos (por ejemplo if retirar > 0 y quedarse solo con El codigo maa generico (El que resta oldStock y retirar)

No captures la exception aqui para disminuir El tamaño de este codigo y en general no captures la exception generica, Sino captura solo la exception especifica que se produce, tal vez la exception ocurre porque no chequeas que El products existe ANTES de obtener El stock?

Aqui mi perfil en LinkedIn, invitame un cafe aqui