Validador de Número de Identificação Social (NIS)

1 resposta
R

Boa tarde, tudo certo?? Bem, na minha aplicação estou fazendo um validador de NIS, porém, não estou obtendo muito sucesso. Tem várias maneiras de fazê-lo e estou vendo no momento qual a melhor. De início estou fazendo o seguinte: criei duas classes Nis.validator e Nis.converter e nelas estou fazendo as validações necessárias. Porém, não estou conseguindo fazer com que retorne a validação correta mesmo. O meu método validaNIS está em loop, e não estou conseguindo arrumar. Abaixo as classes:
Nis.validator:

import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;


@FacesValidator(value = "validator.NisValidator")
public class NisValidator implements Validator {

    @Override
    public void validate(FacesContext arg0, UIComponent arg1, Object valorTela) throws ValidatorException {
        if (!validaNIS(String.valueOf(valorTela)) && !valorTela.equals("")) { // && !valorTela.equals("") passa a ser não obrigatório 
            FacesMessage message = new FacesMessage();
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            message.setSummary(ResourceBundle.getBundle(FacesContext.getCurrentInstance().getApplication().getMessageBundle()).getString("erro.validacao.nis"));
            throw new ValidatorException(message);
        }
    }

 
    private static boolean validaNIS(String nis) {
        if (nis == null || nis.length() != 11 || isNISPadrao(nis)) {
            return false;
        }

        try {
            Long.parseLong(nis);
        } catch (NumberFormatException e) { 
            return false;
        }

        return true; 
    }

    /**
     *
     * @param nis String valor a ser testado
     * @return boolean indicando se o usuário entrou com um NIS padrão
     */
    private static boolean isNISPadrao(String nis) {
        if (nis.equals("[telefone removido]") || nis.equals("[telefone removido]")
                || nis.equals("[telefone removido]")
                || nis.equals("[telefone removido]")
                || nis.equals("[telefone removido]")
                || nis.equals("[telefone removido]")
                || nis.equals("[telefone removido]")
                || nis.equals("[telefone removido]")
                || nis.equals("[telefone removido]")) {
            return true;
        }
        return false;
    }

    private boolean validaPIS(String strPIS) {
        char i, j, somatorio = 0;
        char chDigitoVerificador;
        char chPISAux;

        try {
            for (i = 0, j = 4; j >= 2; i++, j--) {
                somatorio += ((strPIS.charAt(i) - 0x30) * j);
            }
            for (j = 9; j >= 2; i++, j--) {
                somatorio += ((strPIS.charAt(i) - 0x30) * j);
            }
            if ((somatorio % 11) < 2) {
                chDigitoVerificador = 0;
            } else {
                chDigitoVerificador = (char) (11 - (somatorio % 11));
            }
            chPISAux = (char) (chDigitoVerificador + '0');
            if (strPIS.charAt(11) == chPISAux) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            return false;
        }
    }
        
}

Nis.converter:

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

/**
 *
 * @author prog8
 */
@FacesConverter(value = "converter.NisConverter")
public class NisConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
   
        String nis = value;
        if (value != null && !value.equals("")) {
            nis = value.replaceAll("\\.", "").replaceAll("\\-", "");
        }

        return nis;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
       
        String nis = (String) value;
        if (nis != null && nis.length() == 11) {
            nis = nis.substring(0, 3) + "." + nis.substring(3, 8) + "." + nis.substring(8, 10) + "." + nis.substring(10, 11);
        }
        return nis;
    }
}

E no meu xhtml:

<p:outputLabel value="Identificação social (NIS):" for="identificacaoSocial"/>
                                    <p:inputMask  mask="999.99999.99.9" id="identificacaoSocial" required="true"  value="#{alunoJsfBean.crudObj.numeroIdentificacaoSocial}" maxlength="14">
                                        <f:converter converterId="converter.NisConverter"/>
                                        <f:validator validatorId="validator.NisValidator"/>
                                    </p:inputMask>

Se aluguém puder ajudar, agradeço mto…Vlw

1 Resposta

R

Bom dia, alguém poderia dar uma ajuda aí?? Se alguém puder, agradeço mto…Vlw;;

Criado 15 de julho de 2013
Ultima resposta 16 de jul. de 2013
Respostas 1
Participantes 1