All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.vladislavgoltjajev.personalcode.locale.india.IndianPersonalCodeValidator Maven / Gradle / Ivy

package com.github.vladislavgoltjajev.personalcode.locale.india;

import com.github.vladislavgoltjajev.personalcode.utility.ChecksumUtils;

public class IndianPersonalCodeValidator {

    /**
     * Checks if the Indian personal code is valid.
     *
     * @param personalCode Indian personal code.
     * @return Whether or not the Indian personal code is valid.
     */
    public boolean isValid(String personalCode) {
        if (!isValidFormat(personalCode)) {
            return false;
        }

        int checksum = Character.getNumericValue(personalCode.charAt(personalCode.length() - 1));
        return checksum == ChecksumUtils.getVerhoeffChecksum(personalCode.replaceAll("-", "").substring(0, 11));
    }

    /**
     * Checks if the Indian personal code conforms to the correct format.
     * Does not check the integrity of the personal code.
     *
     * @param personalCode Indian personal code.
     * @return Whether or not the Indian personal code conforms to the correct format.
     */
    public boolean isValidFormat(String personalCode) {
        return personalCode != null
                && !personalCode.isBlank()
                && personalCode.matches(IndianPersonalCodeConstants.PERSONAL_CODE_REGEX);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy