/*
* Copyright 2014 - LAit SpA
*				 Realizzato da Icona Management srl su commessa LAit SpA
* Copyright 2015- LAit SpA
*                                                  Aggiornato da LAit SpA
*
* Concesso in licenza a norma dell'EUPL, versione 1.1 o
* successive dell'EUPL (la "Licenza")– non appena saranno
* approvate dalla Commissione europea;
* Non è possibile utilizzare l'opera salvo nel rispetto della Licenza.
* È possibile ottenere una copia della Licenza al seguente indirizzo:
*
* http://ec.europa.eu/idabc/eupl
*
* Salvo diversamente indicato dalla legge applicabile o
* concordato per iscritto, il software distribuito secondo
* i termini della Licenza è distribuito "TAL QUALE",
* SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO,
* esplicite o implicite.
* Si veda la Licenza per la lingua specifica che disciplina
* le autorizzazioni e le limitazioni secondo i termini della
* Licenza.
*/
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package it.laitspa.cpf.faces.utils.validator;

import it.laitspa.cpf.util.misc.FormUtils;

/**
 *
 * @author Andrea
 */
public class CodiceFiscaleValidator extends CustomValidator{


    /**
   * 
   */
  private static final long serialVersionUID = 1L;


    public static final String CODICEFISCALE_VALIDATOR = "CFVal";


    private String mustBeUnique;

    private Integer codice;

    public Integer getCodice() {
        return codice;
    }

    public void setCodice(Integer codice) {
        this.codice = codice;
    }
    
    public String getMustBeUnique() {
        return mustBeUnique;
    }

    public void setMustBeUnique(String mustBeUnique) {
        this.mustBeUnique = mustBeUnique;
    }


    protected boolean isValidValue(String s) {
        boolean isValid = !FormUtils.isEmpty(s) &&
                (FormUtils.isCodicePartitaIVA(s) || FormUtils.isCodiceFiscale(s));
        return isValid;
    }

    @Override
    protected String getTypeOfError() 
    {
        //Check if CF is Unique
        //
        /*
        if (mustBeUnique != null)
        {
            try
            {
                IUtente ut = (IUtente) FacesUtils.findBean("UtenteFacade");
                if (ut.isUsernamePresent((String) objectValue, codice))
                    return mustBeUnique;
            }
            catch (Exception e)
            {
                logger.error("Unable to verify CF Unique constraint: " + e);
                return "Unable to verify CF Unique constraint";
            }
        }
        */
        return null;
    }


    /*
    public void validate(FacesContext context, UIComponent component, Object inputValue) throws ValidatorException {
       Logger logger = Logger.getLogger(CodiceFiscaleValidator.class);
       logger.info("Enter Validating");
        String value = null;
        try {
            value = (String) inputValue;
        } catch (ClassCastException e) {
            throw new ValidatorException(
                    new FacesMessage(
                    "Validation Error: Value "
                    + "cannot be converted to String.",
                    null));
        }
        if (!isValidValue(value)) {
            String messageText = errorMessage;
            if (messageText == null) {
                messageText = "Validation Error: "
                        + "This field is not formatted "
                        + "properly.";
            }
            throw new ValidatorException(
                    new FacesMessage(messageText,
                    null));
        }
    }
     *
     */
}
