Валидатор данных – это бибилиотека, для проверки корректности введённых данных. Поддерживается валидация таких объектов:
Клонируйте репозиторий к себе локально:
git clone git@github.com:DEGTEVUWU/java-project-78.git
cd java-project-78
make install
Создайте JAR-файл командой ./gradlew jar
. Обычно, он находится по пути ("./build/libs")
.
Скопируйте этот файл в свой проект. Обычно, для этого создается директория libs
в корне проекта.
Укажите эту зависимость в своем конфигурационном файле.
- Для
Gradle-Kotlin
build system, добавьте в файлbuild.gradle.kts
:
dependencies {
implementation(files("libs/имя_файла.jar"))
}
- Для
Gradle-Groovy
build system, добавьте в файлbuild.gradle
:
dependencies {
implementation files('libs/имя_файла.jar')
}
- Для
Maven
build system, добавьте в файлpom.xml
(код верен, если итоговый JAR-файл у вас называетсяapp-1.0-SNAPSHOT.jar
и находится в папкеlibs
в корне проекта):
<dependencies>
<dependency>
<groupId>hexlet.code</groupId>
<artifactId>app</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/app-1.0-SNAPSHOT.jar</systemPath> <!-- Нужно указать абсолютный путь к подключенному JAR-файлу -->
</dependency>
</dependencies>
- Создайте объект
Validator v = new Validator();
- Используйте один из трех методов, чтобы создать объект для валидации определённой схемы
var stringValidationObject = v.string()
- создает объект классаStringSchema
, который работает со строками
var numberValidationObject = v.number()
- создает объект классаNumberSchema
, который работает с числами
var mapValidationObject = v.map()
- создает объект классаMapSchema
, который работает с объектами типа Map - Для объектов разных классов, используйте разные методы в качестве "флагов" для валидации значений (подробнее ниже)
isValid(ваш_объект_валидации)
- метод, одинаковый для объектов всех классов, проверяет валидность переданных данных
-
stringValidationObject.required()
- делает данные обязательными для заполнения, то есть пустая строка или null не могут быть переданы -
stringValidationObject.minLength(Integer ваше_число)
- вводит минимальную длину переданной строки, строка должна быть равна или больше -
stringValidationObject.contains(String ваша_подстрока)
- переданная подстрока должна содержаться в итоговом объекте валидации -
numberValidationObject.required()
- делает данные обязательными для заполнения, то есть null не может быть передан -
numberValidationObject.positive()
- вводит ограничение на знак числа - число должно быть только положительным -
numberValidationObject.range(Integer нижняя_граница, Integer верхняя_граница)
- вводит ограничения на диапазон числа - число может находится только в пределах диапазона, в том числа на его границах -
mapValidationObject.required()
- делает данные обязательными для заполнения, то есть null не может быть передан -
mapValidationObject.sizeof(Integer ваш_размер)
- вводит ограничение на размер объекта типа Map - количество пар "ключ-значение" должно совпадать с переданным значением -
mapValidationObject.shape(Map<String, BaseSchema<String>> ваша_мапа_с_настроенными_схемами_проверки)
- используется для определения свойств объекта типа Map и создания схемы для валидации их значений. В аргумент этой функции передается объект типа Map, где значениями являются объекты классаBaseSchema<String>
(можно сказатьStringSchema
) - с настроенными дополнительными проверками.Далее, при передачи в методisValid()
проверяемых объектов типа Map, будут сравниваться значения по ключам на соотвествие, заданным ранее схемам. Ниже пример работы данного метода
var v = new Validator();
var schema = v.map();
Map<String, BaseSchema<String>> schemas = new HashMap<>(); // создаем объект для наполнения схемами проверок
schemas.put("firstName", v.string().required()); // добавляем проверки
schemas.put("lastName", v.string().required().minLength(2));
Map<String, String> human1 = new HashMap<>();
human1.put("firstName", "John");
human1.put("lastName", "Smith");
// валидируем
schema.isValid(human1); // true
Map<String, String> human2 = new HashMap<>();
human3.put("firstName", "Anna");
human3.put("lastName", "B");
// валидируем
schema.isValid(human2); // false