package io.codearte.jfairy.producer.company.locale.es;
import io.codearte.jfairy.producer.VATIdentificationNumberProvider;
import java.util.regex.Pattern;
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric;
import static org.apache.commons.lang3.RandomStringUtils.randomNumeric;
/**
* Spanish VAT Identification Number (known as Número de Identificación Fiscal (for freelancers) or Código de Identificación Fiscal (for companies) in Spain)
* <p>
* https://en.wikipedia.org/wiki/VAT_identification_number
*/
public class EsVATIdentificationNumberProvider implements VATIdentificationNumberProvider {
private static final String REGEX_CIF = "^[A-Z][0-9]{2}[0-9]{5}([KPQSABEH]|[0-9]|[A-Z])$";
private Pattern regexCif;
public EsVATIdentificationNumberProvider() {
this.regexCif = Pattern.compile(REGEX_CIF);
}
@Override
public String get() {
return String.format("%s%s%s",
randomAlphabetic(1).toUpperCase(), randomNumeric(7), randomAlphanumeric(1).toUpperCase());
}
public boolean isValid(String cif) {
return this.regexCif.matcher(cif).matches();
}
}