diff --git a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form index dbfb1306a44fadea51d6bae33e9d35e2a3ba7d46..bffaede8fdf5c09908214d026d6c6d2499841c1d 100644 --- a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form +++ b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form @@ -54,7 +54,6 @@ </Properties> <Events> <EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="txtNombreFocusGained"/> - <EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtNombreKeyTyped"/> <EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtNombreKeyPressed"/> </Events> <Constraints> diff --git a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java index ed6d1ce62f2669992189d5637aa184deb3496729..10ea8ea7907527ca2d7aa4326a2ccc41e6b7a3e2 100644 --- a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java +++ b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java @@ -7,6 +7,8 @@ import Logica.Interfaces.IAdmin; import java.awt.Color; import java.awt.event.KeyEvent; import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.swing.BorderFactory; import javax.swing.JOptionPane; import javax.swing.border.Border; @@ -18,7 +20,10 @@ public class frmAltaCategoria extends javax.swing.JDialog { Border bordeDefault; Color colorOK = new ColorUIResource(40,167,69); Color colorError = new ColorUIResource(220,53,69); - + Pattern patronCategoria= Pattern.compile("^([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*" + + "([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)$"); + String nuevaCategoria = new String(); + public frmAltaCategoria(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); @@ -26,6 +31,49 @@ public class frmAltaCategoria extends javax.swing.JDialog { bordeDefault = txtNombre.getBorder(); sys = Fabrica.getInstancia().getIAdmin(); } + + private boolean validarCategoria(){ + nuevaCategoria = txtNombre.getText().trim().toUpperCase(); + if(nuevaCategoria.equals("")){ + lbMensaje.setText(" El campo nombre está vacío");//mensaje de error al adminstrador + cambiarColoresError(); + return false; + }else if(nuevaCategoria.length() > 30){ + lbMensaje.setText(" El nombre excede los 30 caracteres");//mensaje de error al adminstrador + cambiarColoresError(); + return false; + } + else if(!validarFormatoCategoria(nuevaCategoria)){ + lbMensaje.setText(" El fomrato es alfanumérico");//mensaje de error al adminstrador + cambiarColoresError(); + return false; + } + else{ + //Recorre todas las categorias existentes + try{ + for(String item : sys.listarCategorias()) { + //Si la categoria ya existe avisa al administrador + if(nuevaCategoria.equals(item)){ + lbMensaje.setText(" "+nuevaCategoria + " ya existe");//mensaje de error al adminstrador + cambiarColoresError(); + nuevaCategoria = ""; + return false; + } + } + } catch (Exception e) { + JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE); + } + } + return true; + } + + private boolean validarFormatoCategoria(String cat){ + Matcher mather = patronCategoria.matcher(cat); + if (mather.find() == true) { + return true; + } + return false; + } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents @@ -56,9 +104,6 @@ public class frmAltaCategoria extends javax.swing.JDialog { } }); txtNombre.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyTyped(java.awt.event.KeyEvent evt) { - txtNombreKeyTyped(evt); - } public void keyPressed(java.awt.event.KeyEvent evt) { txtNombreKeyPressed(evt); } @@ -111,50 +156,16 @@ public class frmAltaCategoria extends javax.swing.JDialog { }// </editor-fold>//GEN-END:initComponents private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptarActionPerformed - String nuevaCategoria = txtNombre.getText().trim().toUpperCase(); - if(!nuevaCategoria.equals("") && nuevaCategoria.length()<31){ - //Recorre todas las categorias existentes - boolean existe = false;//Variable - try{ - for(String item : sys.listarCategorias()) { - //Si la categoria ya existe avisa al administrador - if(nuevaCategoria.equals(item)){ - existe = true; - lbMensaje.setText(" "+nuevaCategoria + " ya existe");//mensaje de error al adminstrador - lbMensaje.setBackground(colorError); - lbMensaje.setOpaque(true); - lbMensaje.setForeground(Color.WHITE); //texto en rojo - txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo - nuevaCategoria = ""; - break; - } - } - //Si la categoria no existe se agrega - if(!existe){ - sys.altaCategoria(nuevaCategoria); - txtNombre.setText(""); - lbMensaje.setForeground(Color.white); //texto en rojo - lbMensaje.setBackground(colorOK); - lbMensaje.setText(" Categoría \""+nuevaCategoria +"\" ingresada. OK");// - lbMensaje.setOpaque(true); - txtNombre.setBorder(bordeDefault); //Pone el borde con sus valores por default - nuevaCategoria = ""; - } + //Si la categoria supera la validacion la ingresa + if (validarCategoria()) { + try { + sys.altaCategoria(nuevaCategoria); + txtNombre.setText(""); + cambiarColoresOK(); + nuevaCategoria = ""; } catch (Exception e) { - JOptionPane.showMessageDialog(null, "Se produjo un error al intentar ingresar la nueva categoría.", "Alta de Categoría", JOptionPane.WARNING_MESSAGE); - } - }else if(nuevaCategoria.equals("")){ - lbMensaje.setText(" El campo nombre está vacío");//mensaje de error al adminstrador - lbMensaje.setBackground(colorError); - lbMensaje.setOpaque(true); - lbMensaje.setForeground(Color.WHITE); //texto en rojo - txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo - }else if(nuevaCategoria.length() > 30){ - lbMensaje.setText(" El nombre excede los 30 caracteres");//mensaje de error al adminstrador - lbMensaje.setBackground(colorError); - lbMensaje.setOpaque(true); - lbMensaje.setForeground(Color.WHITE); //texto en rojo - txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo + JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE); + } } }//GEN-LAST:event_btnAceptarActionPerformed @@ -165,76 +176,44 @@ public class frmAltaCategoria extends javax.swing.JDialog { this.setVisible(false); }//GEN-LAST:event_btnCancelarActionPerformed - private void txtNombreKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNombreKeyTyped - // Solo letras - if ( ! Character.isLetter(evt.getKeyChar())) { - getToolkit().beep(); - evt.consume(); - } - }//GEN-LAST:event_txtNombreKeyTyped - private void txtNombreFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNombreFocusGained // Cuando obtiene el foco los colores se resetean txtNombre.setText(""); lbMensaje.setText(""); lbMensaje.setOpaque(false); - txtNombre.setBorder(bordeDefault); - + txtNombre.setBorder(bordeDefault); }//GEN-LAST:event_txtNombreFocusGained - + + private void cambiarColoresOK(){ + lbMensaje.setForeground(Color.white); //texto en rojo + lbMensaje.setBackground(colorOK); + lbMensaje.setText(" Categoría \"" + nuevaCategoria + "\" ingresada. OK");// + lbMensaje.setOpaque(true); + txtNombre.setBorder(bordeDefault); //Pone el borde con sus valores por default + } + + private void cambiarColoresError() { + lbMensaje.setBackground(colorError); + lbMensaje.setOpaque(true); + lbMensaje.setForeground(Color.WHITE); //texto en rojo + txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo + } + private void txtNombreKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNombreKeyPressed // Al presionar ENTER if(evt.getKeyCode() == KeyEvent.VK_ENTER){ - String nuevaCategoria = txtNombre.getText().trim().toUpperCase(); - if(!nuevaCategoria.equals("") && nuevaCategoria.length()<31){ - //Recorre todas las categorias existentes - boolean existe = false;//Variable - try{ - for(String item : sys.listarCategorias()) { - //Si la categoria ya existe avisa al administrador - if(nuevaCategoria.equals(item)){ - existe = true; - lbMensaje.setText(" "+nuevaCategoria + " ya existe");//mensaje de error al adminstrador - lbMensaje.setBackground(colorError); - lbMensaje.setOpaque(true); - lbMensaje.setForeground(Color.WHITE); //texto en rojo - txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo - nuevaCategoria = ""; - break; - } - } - //Si la categoria no existe se agrega - if(!existe){ - sys.altaCategoria(nuevaCategoria); - txtNombre.setText(""); - lbMensaje.setForeground(Color.white); //texto en rojo - lbMensaje.setBackground(colorOK); - lbMensaje.setText(" Categoría \""+nuevaCategoria +"\" ingresada. OK");// - lbMensaje.setOpaque(true); - txtNombre.setBorder(bordeDefault); //Pone el borde con sus valores por default - nuevaCategoria = ""; - } - } catch (Exception e) { - JOptionPane.showMessageDialog(null, "Se produjo un error al intentar ingresar la nueva categoría.", "Alta de Categoría", JOptionPane.WARNING_MESSAGE); - } - }else if(nuevaCategoria.equals("")){ - lbMensaje.setText(" El campo nombre está vacío");//mensaje de error al adminstrador - lbMensaje.setBackground(colorError); - lbMensaje.setOpaque(true); - lbMensaje.setForeground(Color.WHITE); //texto en rojo - txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo - }else if(nuevaCategoria.length() > 30){//Cheque el largo del campo - lbMensaje.setText(" El nombre excede los 30 caracteres");//mensaje de error al adminstrador - lbMensaje.setBackground(colorError); - lbMensaje.setOpaque(true); - lbMensaje.setForeground(Color.WHITE); //texto en rojo - txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo + //Si la categoria supera la validacion la ingresa + if (validarCategoria()) { + try { + sys.altaCategoria(nuevaCategoria); + txtNombre.setText(""); + cambiarColoresOK(); + nuevaCategoria = ""; + } catch (Exception e) { + JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE); } - btnAceptar.requestFocus(); - }else if(evt.getKeyCode() == KeyEvent.VK_TAB){ - btnAceptar.requestFocus();//Al presionar tabulador cambia el foco al boton aceptar - System.out.println("Hola mundo"); } + } }//GEN-LAST:event_txtNombreKeyPressed private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing