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

net.fortuna.ical4j.vcard.PropertyValidatorSupport Maven / Gradle / Ivy

package net.fortuna.ical4j.vcard;

import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.validate.PropertyValidator;
import net.fortuna.ical4j.validate.ValidationRule;
import net.fortuna.ical4j.validate.Validator;
import net.fortuna.ical4j.vcard.parameter.Value;
import net.fortuna.ical4j.vcard.property.*;
import net.fortuna.ical4j.vcard.property.immutable.ImmutableKind;
import net.fortuna.ical4j.vcard.property.immutable.ImmutableVersion;

import java.util.Arrays;
import java.util.Optional;
import java.util.stream.Collectors;

import static net.fortuna.ical4j.model.Parameter.VALUE;
import static net.fortuna.ical4j.validate.ValidationRule.ValidationType.*;

public interface PropertyValidatorSupport {

    ValidationRule TEXT_VALUE = new ValidationRule<>(None, prop -> {
        Optional v = prop.getParameter(VALUE);
        return !(!v.isPresent() || Value.TEXT.equals(v.get()));
    }, "MUST be specified as TEXT:", VALUE);

    ValidationRule URI_VALUE = new ValidationRule<>(None, prop -> {
        Optional v = prop.getParameter(VALUE);
        return !(!v.isPresent() || Value.URI.equals(v.get()));
    }, "MUST be specified as a URI:", VALUE);

    ValidationRule DATE_AND_OR_TIME_VALUE = new ValidationRule<>(None, prop -> {
        Optional v = prop.getParameter(VALUE);
        return !(!v.isPresent() || Value.DATE_AND_OR_TIME.equals(v.get()));
    }, "MUST be specified as a DATE and/or TIME:", VALUE);

    ValidationRule LANGUAGE_TAG_VALUE = new ValidationRule<>(None, prop -> {
        Optional v = prop.getParameter(VALUE);
        return !(!v.isPresent() || Value.LANGUAGE_TAG.equals(v.get()));
    }, "MUST be specified as a LANGUAGE TAG:", VALUE);

    ValidationRule UTC_OFFSET_VALUE = new ValidationRule<>(None, prop -> {
        Optional v = prop.getParameter(VALUE);
        return !(!v.isPresent() || Value.UTC_OFFSET.equals(v.get()));
    }, "MUST be specified as a UTC OFFSET:", VALUE);

    ValidationRule TIMESTAMP_VALUE = new ValidationRule<>(None, prop -> {
        Optional v = prop.getParameter(VALUE);
        return !(!v.isPresent() || Value.TIMESTAMP.equals(v.get()));
    }, "MUST be specified as a TIMESTAMP:", VALUE);

    Validator
ADDRESS = new PropertyValidator<>(PropertyName.ADR.toString(), new ValidationRule<>(OneOrLess, ParameterName.VALUE.toString(), ParameterName.LABEL.toString(), ParameterName.LANGUAGE.toString(), ParameterName.GEO.toString(), ParameterName.TZ.toString(), ParameterName.ALTID.toString(), ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString()), TEXT_VALUE); Validator AGENT = new PropertyValidator<>(PropertyName.AGENT.toString()); Validator> ANNIVERSARY_DATE = new PropertyValidator<>(PropertyName.ANNIVERSARY.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString(), ParameterName.CALSCALE.toString()), DATE_AND_OR_TIME_VALUE); Validator> ANNIVERSARY_TEXT = new PropertyValidator<>(PropertyName.ANNIVERSARY.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString()), TEXT_VALUE); Validator> BDAY_DATE = new PropertyValidator<>(PropertyName.BDAY.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString(), ParameterName.CALSCALE.toString()), DATE_AND_OR_TIME_VALUE); Validator> BDAY_TEXT = new PropertyValidator<>(PropertyName.BDAY.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString()), TEXT_VALUE); Validator BIRTH = new PropertyValidator<>(PropertyName.BIRTH.toString()); Validator CALADRURI = new PropertyValidator<>(PropertyName.CALADRURI.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString(), ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.MEDIATYPE.toString()), URI_VALUE); Validator CALURI = new PropertyValidator<>(PropertyName.CALURI.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString(), ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.MEDIATYPE.toString()), URI_VALUE); Validator CONTACT_URI = new PropertyValidator<>(PropertyName.CONTACT_URI.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString(), ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.MEDIATYPE.toString()), URI_VALUE); Validator CATEGORIES = new PropertyValidator<>(PropertyName.CATEGORIES.toString(), new ValidationRule<>(OneOrLess, ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.ALTID.toString()), TEXT_VALUE); Validator CLASS = new PropertyValidator<>(PropertyName.CLASS.toString(), new ValidationRule<>(None, Arrays.stream(ParameterName.values()).map(ParameterName::toString) .collect(Collectors.toList()).toArray(new String[0]))); Validator CLIENTPIDMAP = new PropertyValidator<>(PropertyName.CLIENTPIDMAP.toString(), new ValidationRule<>(None, ParameterName.PID.toString())); Validator CONTACT_BY_VALIDATOR = new PropertyValidator<>(PropertyName.CONTACT_BY.toString(), new ValidationRule<>(OneOrLess, ParameterName.TYPE.toString(), ParameterName.PREF.toString()), new ValidationRule<>(ValueMatch, "(?i)" + String.join("|", ContactBy.ADR, ContactBy.EMAIL, ContactBy.IMPP, ContactBy.TEL, "X-[A-Z0-9-]+"))); Validator CREATED_VALIDATOR = new PropertyValidator<>(PropertyName.CREATED.toString(), TIMESTAMP_VALUE); Validator DDAY = new PropertyValidator<>(PropertyName.DDAY.toString(), new ValidationRule<>(OneOrLess, ParameterName.VALUE.toString())); Validator DEATH = new PropertyValidator<>(PropertyName.DEATH.toString()); Validator DEF_LANGUAGE_VALIDATOR = new PropertyValidator<>(PropertyName.DEFLANGUAGE.toString()); Validator EMAIL = new PropertyValidator<>(PropertyName.EMAIL.toString(), new ValidationRule<>(OneOrLess, ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.ALTID.toString()), TEXT_VALUE); Validator FBURL = new PropertyValidator<>(PropertyName.FBURL.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString(), ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.MEDIATYPE.toString()), URI_VALUE); Validator FN = new PropertyValidator<>(PropertyName.FN.toString(), new ValidationRule<>(OneOrLess, ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.LANGUAGE.toString(), ParameterName.ALTID.toString()), TEXT_VALUE); Validator GENDER = new PropertyValidator<>(PropertyName.GENDER.toString(), TEXT_VALUE, new ValidationRule<>(ValueMatch, "(?i)" + String.join("|", Gender.NONE, Gender.FEMALE, Gender.MALE, Gender.OTHER, Gender.UNKNOWN))); Validator GEO = new PropertyValidator<>(PropertyName.GEO.toString(), new ValidationRule<>(OneOrLess, ParameterName.ALTID.toString(), ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.MEDIATYPE.toString()), URI_VALUE); Validator GRAM_GENDER_VALIDATOR = new PropertyValidator<>(PropertyName.GRAMGENDER.toString(), new ValidationRule<>(ValueMatch, "(?i)" + String.join("|", GramGender.ANIMATE, GramGender.COMMON, GramGender.FEMININE, GramGender.INANIMATE, GramGender.MASCULINE, GramGender.NEUTER, "X-[A-Z0-9-]+"))); Validator IMPP = new PropertyValidator<>(PropertyName.IMPP.toString(), new ValidationRule<>(OneOrLess, ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.MEDIATYPE.toString(), ParameterName.ALTID.toString()), URI_VALUE); Validator KEY_URI = new PropertyValidator<>(PropertyName.KEY.toString(), new ValidationRule<>(OneOrLess, ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.MEDIATYPE.toString(), ParameterName.ALTID.toString()), URI_VALUE); Validator KEY_TEXT = new PropertyValidator<>(PropertyName.KEY.toString(), new ValidationRule<>(OneOrLess, ParameterName.PID.toString(), ParameterName.PREF.toString(), ParameterName.TYPE.toString(), ParameterName.ALTID.toString()), TEXT_VALUE); Validator KIND = new PropertyValidator<>(PropertyName.KIND.toString(), TEXT_VALUE, new ValidationRule<>(ValueMatch, "(?i)" + String.join("|", ImmutableKind.INDIVIDUAL.getValue(), ImmutableKind.GROUP.getValue(), ImmutableKind.ORG.getValue(), ImmutableKind.LOCATION.getValue(), ImmutableKind.APPLICATION.getValue(), ImmutableKind.DEVICE.getValue()))); Validator