vista.controlador.Validador.java Source code

Java tutorial

Introduction

Here is the source code for vista.controlador.Validador.java

Source

/*
 * Copyright (C) 2015 Jess Donaldo Osornio Hernndez
 *
 * This file is part of MatExmenes.
 *
 * MatExmenes is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 *
 * MatExmenes is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 51
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package vista.controlador;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;

/**
 * Clase Validador que es utilizada para validar las cadenas de texto y
 * comprobar que cumplen con la longitud mxima, caracteres aceptados, etc.
 *
 * @author Jesus Donaldo Osornio Hernndez
 * @version 1 18 Mayo 2015
 */
public class Validador {

    /**
     * Longitud mxima del curso
     */
    public static final int LONGITUD_CURSO = 50;
    /**
     * Longitud mxima del tema
     */
    public static final int LONGITUD_TEMA = 150;
    /**
     * Longitud mxima del nombre del reactivo
     */
    public static final int LONGITUD_NOMBRE_REACTIVO = 100;
    /**
     * Longitud mxima de la redaccin del reactivo
     */
    public static final int LONGITUD_REDACCION_REACTIVO = 1000;
    /**
     * Longitud mxima de las opciones del reactivo
     */
    public static final int LONGITUD_OPCION_REACTIVO = 250;
    /**
     * Longitud mxima del nombre del examen
     */
    public static final int LONGITUD_NOMBRE_EXAMEN = 100;
    /**
     * Longitud mxima de las instrucciones del examen
     */
    public static final int LONGITUD_INSTRUCCIONES_EXAMEN = 350;
    /**
     * Longitud mxima de los datos del usuario
     */
    public static final int LONGITUD_DATOS_USUARIO = 50;

    /**
     * Expresion regular para verificar que sea una ipv4.
     */
    private static final String EXPRESION_IP = "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$";

    /**
     * Valida que el campo no est vaco, incluyendo espacios.
     *
     * @param campo la cadena a validar
     * @return false si el campo no est vaco, true si el campo est vaco
     */
    public static boolean estaVacio(String campo) {
        boolean ok = false;

        if (campo == null || campo.trim().isEmpty()) {
            ok = true;
        }

        return ok;
    }

    /**
     * Valida que el campo sea nombre, esto es que no est vaco y que contenga
     * slo letras y espacios
     *
     * @param campo la cadena de texto a validar
     * @return true si el campo ingresado es validado como un nombre, false si
     * ocurre lo contrario
     */
    public static boolean esNombre(String campo) {
        boolean ok = true;

        if (estaVacio(campo) || !StringUtils.isAlphaSpace(campo)) {
            ok = false;
        }

        return ok;
    }

    /**
     * Sirve para poner en mayscula la primera letra de cada palabra y las
     * dems en minsculas, como un nombre debe ser.
     *
     * @param nombre el nombre que se quiere capitalizar
     * @return el nombre escrito correctamente
     */
    public static String capitalizarNombre(String nombre) {
        String nuevoNombre;

        nuevoNombre = WordUtils.capitalizeFully(nombre);

        return nuevoNombre;
    }

    /**
     * Valida si el campo es un usuario, esto es que slo contenga letras o
     * nmeros y sin espacios
     *
     * @param campo la cadena de texto a validar
     * @return true si el campo es un usuario
     */
    public static boolean esUsuario(String campo) {
        boolean ok = true;

        if (estaVacio(campo) || !StringUtils.isAlphanumeric(campo)) {
            ok = false;
        }
        return ok;
    }

    /**
     * Valida que el campo sea una contrasea, esto es que no est vaco y que
     * contenga los caracteres permitidos
     *
     * @param campo la cadena de texto a validar
     * @return true si el campo es contrasea, false si no es as.
     */
    public static boolean esPassword(String campo) {
        boolean ok = true;

        if (estaVacio(campo) || !StringUtils.isAsciiPrintable(campo) || campo.contains("'") || campo.contains("\"")
                || campo.contains("<") || campo.contains(">") || campo.contains("\\") || campo.contains("&")
                || campo.contains("%") || campo.contains("_") || campo.length() < 4) {
            ok = false;
        }

        return ok;
    }

    /**
     * Valida si el campo es un nmero entero positivo
     *
     * @param campo la cadena de texto a validar
     * @return false si el campo es negativo, decimal o demasiado grande, o si
     * en efecto no es un numero, true si ocurre lo contrario
     */
    public static boolean esNumero(String campo) {
        boolean ok = true;

        //Si es numero entero sin signo
        if (estaVacio(campo) || !StringUtils.isNumeric(campo)) {
            ok = false;
        }

        return ok;
    }

    /**
     * Para validar tanto cursos como temas. Esto es que slo contengan letras,
     * nmeros y espacios
     *
     * @param campo la cadena de texto a validar
     * @return true si el campo es un curso/tema, false si no
     */
    public static boolean esCurso(String campo) {
        boolean ok = true;

        if (estaVacio(campo) || !StringUtils.isAlphanumericSpace(campo)) {
            ok = false;
        }

        return ok;
    }

    /**
     * Valida que el campo sea un grupo, osea que no est vaco, y que contenga
     * solo una letra.
     *
     * @param campo la cadena de texto a validar
     * @return true si el campo es un grupo, false si no
     */
    public static boolean esGrupo(String campo) {
        boolean ok = true;
        if (estaVacio(campo) || StringUtils.isNumeric(campo) || campo.length() != 1) {
            ok = false;
        }
        return ok;
    }

    /**
     * Valida que la longitud ingresada se cumpla en el campo ingresado.
     *
     * @param longitud el total mximo de caracteres que se espera que un campo
     * de texto tenga
     * @param campoTexto la cadena de texto a validar
     * @return true si la longitud de campoTexto es menor o igual a la longitud
     * especificada. De lo contrario retorna false
     */
    public static boolean validarLongitud(int longitud, String campoTexto) {
        boolean ok = true;

        if (campoTexto.length() >= longitud) {
            ok = false;
        }

        return ok;
    }

    /**
     * Valid la estructura de la ip ingresada para que concuerde con una ipv4.
     *
     * @param ip La ip a validar.
     * @return Verdadero si la ip ingresada fue exitosamente validada como una
     * ip.<br>
     * Falso de otra forma.
     */
    public static boolean esIp(String ip) {
        Pattern pattern;
        Matcher matcher;
        pattern = Pattern.compile(EXPRESION_IP);
        matcher = pattern.matcher(ip);
        return matcher.matches();
    }

/**
 * Reemplaza las letras que contengan acentos a su letra equivalente sin
 * acento en una cadena de caracteres dada.
 *
 * @param cadena cadena de caracteres de la cual se eliminarn los acentos.
 * @return Cadena de caracteres sin letras con acentos.
 */
public static String quitarAcentos(String cadena) {
    String noAcentos = "";

    char caracteres[] = cadena.toLowerCase().toCharArray();

    for (int i = 0; i < caracteres.length; i++) {
        switch (caracteres[i]) {
            case '':
                caracteres[i] = 'a';
                break;
            case '':
                caracteres[i] = 'e';
                break;
            case '':
                caracteres[i] = 'i';
                break;
            case '':
                caracteres[i] = 'o';
                break;
            case '':
                caracteres[i] = 'u';
                break;
            case '':
                caracteres[i] = 'u';
                break;
            default:

        }
    }

    noAcentos = String.valueOf(caracteres);

    return noAcentos;
}

}