Проверка значений полей класса.
Данными аннотациями необходимо помечать поля классов.
Значение поля класса аннотированное данной аннотацией не должно быть null.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
Поддерживаются любые типы полей.
import dev.kalenchukov.lemna.validation.constraints.NoNull;
public class Experimental
{
@NoNull
private Long id = 1L;
}
Значение поля класса аннотированное данной аннотацией не должно быть пустым.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
allowSpace | Разрешить пробельные символы | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.NoEmpty;
public class Experimental
{
@NoEmpty
private String message = "сообщение";
}
Значение поля класса аннотированное данной аннотацией ограничивается количеством символов.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
min | Минимальное количество символов | Нет |
max | Максимальное количество символов | Да |
- String
import dev.kalenchukov.lemna.validation.constraints.Length;
public class Experimental
{
@Length(min = 3, max = 13)
private String comment = "значение";
}
Значение поля класса аннотированное данной аннотацией ограничивается по локализации.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.Localization;
public class Experimental
{
@Localization
private String localization = "ru-RU";
}
Значение поля класса аннотированное данной аннотацией ограничивается по Md5-хешу.
Параметр | Описание | Обязательный |
---|---|---|
ignoreCase | Игнорирование регистра | Нет |
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.Md5;
public class Experimental
{
@Md5
private String md5 = "D41D8CD98F00B204E9800998ECF8427E";
}
Значение поля класса аннотированное данной аннотацией ограничивается по коду страны.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.CountryCodeAlpha2;
public class Experimental
{
@CountryCodeAlpha2
private String countryCode = "RU";
}
Значение поля класса аннотированное данной аннотацией ограничивается по коду страны.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.CountryCodeAlpha3;
public class Experimental
{
@CountryCodeAlpha3
private String countryCode = "RUS";
}
Значение поля класса аннотированное данной аннотацией ограничивается по коду страны.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.CountryCodeNumeric3;
public class Experimental
{
@CountryCodeNumeric3
private String countryCode = "052";
}
Значение поля класса аннотированное данной аннотацией ограничивается по требованиям к паролю.
Параметр | Описание | Обязательный |
---|---|---|
minLetters | Минимальное количество букв | Нет |
mixedCase | Необходимость прописных и строчных букв | Нет |
minDigits | Минимальное количество цифр | Нет |
minSpecial | Минимальное количество специальных символов | Нет |
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.Password;
public class Experimental
{
@Password(minLetters = 11, mixedCase = true, minDigits = 1, minSpecial = 1)
private String password = "helloMyWORLD!5";
}
Значение поля класса аннотированное данной аннотацией ограничивается по IP адресу.
Параметр | Описание | Обязательный |
---|---|---|
v4 | Разрешить IP адреса четвёртой версии | Нет |
v6 | Разрешить IP адреса шестой версии | Нет |
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.InetAddress;
public class Experimental
{
@InetAddress(v6 = false)
private String inetAddress = "192.168.1.1";
}
Значение поля класса аннотированное данной аннотацией ограничивается по MAC адресу.
Параметр | Описание | Обязательный |
---|---|---|
ignoreCase | Игнорирование регистра | Нет |
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.MacAddress;
public class Experimental
{
@MacAddress
private String macAddress = "00-eF-cd-Ef-11-22";
}
Значение поля класса аннотированное данной аннотацией ограничивается по адресу электронной почты.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.EmailAddress;
public class Experimental
{
@EmailAddress
private String emailAddress = "[email protected]";
}
Значение поля класса аннотированное данной аннотацией ограничивается по RGB модели в числовом представлении.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.RgbNumeric;
public class Experimental
{
@RgbNumeric
private String rgbNumeric = "100,150, 200";
}
Значение поля класса аннотированное данной аннотацией ограничивается по RGB модели в шестнадцатеричной системе счисления.
Параметр | Описание | Обязательный |
---|---|---|
ignoreCase | Игнорирование регистра | Нет |
message | Задаёт сообщение нарушения | Нет |
- String
import dev.kalenchukov.lemna.validation.constraints.RgbHex;
public class Experimental
{
@RgbHex
private String rgbHex = "#FFffFF";
}
Значение поля класса аннотированное данной аннотацией ограничивается по буквам алфавита.
Параметр | Описание | Обязательный |
---|---|---|
alphabet | Задаёт алфавит | Да |
message | Задаёт сообщение нарушения | Нет |
- Character
- String
import dev.kalenchukov.alphabet.resources.Alphabet;
import dev.kalenchukov.lemna.validation.constraints.LetterAlphabet;
public class Experimental
{
@LetterAlphabet(alphabet = Alphabet.RUSSIAN)
private String word = "Печаль";
}
Значение поля класса аннотированное данной аннотацией ограничивается по буквам.
Параметр | Описание | Обязательный |
---|---|---|
upperCase | Прописной регистр букв | Нет |
lowerCase | Строчный регистр букв | Нет |
message | Задаёт сообщение нарушения | Нет |
- Character
- String
import dev.kalenchukov.lemna.validation.constraints.Letter;
public class Experimental
{
@Letter(upperCase = false)
private String word = "печаль";
}
Значение поля класса аннотированное данной аннотацией ограничивается количеством цифр.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
min | Минимальное количество символов | Нет |
max | Максимальное количество символов | Да |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Digit;
public class Experimental
{
@Digit(min = 3, max = 13)
private Integer digit = 123;
}
Значение поля класса аннотированное данной аннотацией ограничивается по цифрам системы счисления.
Параметр | Описание | Обязательный |
---|---|---|
numeralSystem | Задаёт систему счисления | Да |
message | Задаёт сообщение нарушения | Нет |
- Character
- String
import dev.kalenchukov.numeralsystem.resources.NumeralSystem;
import dev.kalenchukov.lemna.validation.constraints.DigitSystem;
public class Experimental
{
@DigitSystem(numeralSystem = NumeralSystem.DECIMAL)
private String word = "0123456789";
}
Значение поля класса аннотированное данной аннотацией ограничивается количеством элементов.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
min | Минимальное количество элементов | Нет |
max | Максимальное количество элементов | Да |
- Array
- Collection
- Map
import dev.kalenchukov.lemna.validation.constraints.Size;
public class Experimental
{
@Size(min = 2, max = 4)
private Integer[] days = {1, 2, 3};
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом больше 0.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Id;
public class Experimental
{
@Id
private Long id = 13;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 0 до 6 или от 1 до 7.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
format | Задаёт формат дней недели | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.DayOfWeek;
public class Experimental
{
@DayOfWeek
private Byte day = 5;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 1 до 31.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.DayOfMonth;
public class Experimental
{
@DayOfMonth
private Byte day = 24;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 1 до 365.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.DayOfYear;
public class Experimental
{
@DayOfYear
private Short day = 256;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 1 до 4.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.WeekOfMonth;
public class Experimental
{
@WeekOfMonth
private Byte week = 3;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 1 до 53.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.WeekOfYear;
public class Experimental
{
@WeekOfYear
private Integer week = 13;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 1 до 12.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.MonthOfYear;
public class Experimental
{
@MonthOfYear
private Byte month = 11;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 0 до 999.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Millisecond;
public class Experimental
{
@Millisecond
private Short millisecond = 256;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 0 до 59.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Second;
public class Experimental
{
@Second
private Byte second = 46;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 0 до 59.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Minute;
public class Experimental
{
@Minute
private Byte minute = 32;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом от 1 до 12 или от 0 до 23.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
format | Задаёт формат времени | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Hour;
public class Experimental
{
@Hour
private Byte hour = 23;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом года.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
min | Задаёт минимальный год | Да |
max | Задаёт максимальный год | Да |
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Year;
public class Experimental
{
@Year(min = 1950, max = 2022)
private Integer year = 1961;
}
Значение поля класса аннотированное данной аннотацией ограничивается целым числом.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
min | Минимальное значение | Нет |
max | Максимальное значение | Нет |
- Byte
- Short
- Integer
- Long
import dev.kalenchukov.lemna.validation.constraints.Number;
public class Experimental
{
@Number(min = 0, max = 1000)
private Integer sum = 785;
}
Значение поля класса аннотированное данной аннотацией ограничивается дробным числом.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
min | Минимальное значение | Нет |
max | Максимальное значение | Нет |
- Float
- Double
import dev.kalenchukov.lemna.validation.constraints.NumberFloat;
public class Experimental
{
@NumberFloat(min = 0.0, max = 1000.1000)
private Double sum = 785.785;
}
Значение поля класса аннотированное данной аннотацией ограничивается шаблоном регулярного выражения.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
regexp | Регулярное выражение | Да |
- String
- Character
import dev.kalenchukov.lemna.validation.constraints.Pattern;
public class Experimental
{
@Pattern(regexp = "[0-9A-F]+")
private String hexadecimal = "08A6D9";
}
Значение поля класса аннотированное данной аннотацией ограничивается собственной реализацией проверки существования. Данную аннотацию можно применять несколько раз для одного поля класса.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
existence | Класс проверки существования | Да |
Создать собственный класс проверки существования можно создав класс реализующий интерфейс "Existable".
import dev.kalenchukov.lemna.validation.interfaces.Existable;
public class GenderExistence implements Existable<String>
{
@Override
public boolean exist(@NotNull String value)
{
return "MALE".equals(value) || "FEMALE".equals(value);
}
}
import dev.kalenchukov.lemna.validation.constraints.Exist;
public class Experimental
{
@Exist(existence = GenderExistence.class)
private String gender = "MALE";
}
Значение поля класса аннотированное данной аннотацией ограничивается собственной реализацией проверки корректности. Данную аннотацию можно применять несколько раз для одного поля класса.
Параметр | Описание | Обязательный |
---|---|---|
message | Задаёт сообщение нарушения | Нет |
validator | Класс проверки корректности | Да |
Создать собственный класс проверки корректности можно создав класс реализующий интерфейс "Validable".
import dev.kalenchukov.lemna.validation.interfaces.Validable;
public class BrowserValidator implements Validable<String>
{
@Override
public boolean valid(@NotNull final String value)
{
return "FIREFOX".equals(value) || "CHROME".equals(value);
}
}
import dev.kalenchukov.lemna.validation.constraints.Valid;
public class Experimental
{
@Valid(validator = BrowserValidator.class)
private String browser = "FIREFOX";
}
Создадим класс поля которого необходимо проверить:
import dev.kalenchukov.lemna.validation.constraints.NoNull;
import dev.kalenchukov.lemna.validation.constraints.NoEmpty;
import dev.kalenchukov.lemna.validation.constraints.Length;
import dev.kalenchukov.lemna.validation.constraints.Size;
public class Experimental
{
@NoNull
private Long id = null;
@NoEmpty
private String message = "";
@Length(min = 10, max = 13)
private String comment = "значение";
@Size(min = 5, max = 10)
private Integer[] days = {1, 2, 3};
}
Проверка всех полей класса и возврат нарушений:
import dev.kalenchukov.lemna.validation.Validating;
import dev.kalenchukov.lemna.validation.Violating;
import dev.kalenchukov.lemna.validation.Validation;
Validating validation = new Validation(new Experimental());
List<Violating> violations = validation.validate();
Результат выполнения:
[
Violation {
field='id',
message='Значение поля '%FIELD%' не должно быть null',
params={FIELD=id}
},
Violation {
field='message',
message='Значение поля '%FIELD%' не должно быть пустым',
params={FIELD=message}
},
Violation {
field='comment',
message='Количество символов значения поля '%FIELD%' должно быть больше %MIN%',
params={MIN=10, MAX=13, FIELD=comment}
},
Violation {
field='days',
message='Количество элементов поля '%FIELD%' должны быть больше %MIN%',
params={MIN=5, MAX=10, FIELD=days}
}
]
Проверка всех полей класса и возврат первого найденного нарушения:
import dev.kalenchukov.lemna.validation.Validating;
import dev.kalenchukov.lemna.validation.Violating;
import dev.kalenchukov.lemna.validation.Validation;
Validating validation = new Validation(new Experimental());
validation.setPushy(false);
List<Violating> violations = validation.validate();
Результат выполнения:
[
Violation {
field='id',
message='Значение поля '%FIELD%' не должно быть null',
params={FIELD=id}
}
]