From dccded9944435ead72dc8c518b7b031359afb292 Mon Sep 17 00:00:00 2001 From: egor Date: Mon, 21 Feb 2022 18:10:03 +0300 Subject: [PATCH 1/2] empty input will now be considered as null for some fields (Person.passportId, Person.height and Location.name) --- .../ru/erius/lab5/commandline/PeopleDatabaseCommands.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java b/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java index 373d94b..a518faf 100644 --- a/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java +++ b/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java @@ -193,10 +193,10 @@ public final class PeopleDatabaseCommands { int height = CMD.awaitInput("Введите рост:", "Введите целое число, большее нуля", input -> { Integer result = UtilFunctions.intOrNull(input); - return result != null && result > 0; - }, Integer::parseInt); + return result != null && result > 0 || input.isEmpty(); + }, input -> input.isEmpty() ? null : Integer.parseInt(input)); String passportID = CMD.awaitInput("Введите номер паспорта:", "Введите минимум 8 символов", - input -> input.length() >= 8); + input -> input.length() >= 8 || input.isEmpty(), input -> input.isEmpty() ? null : input); Color eyeColor = CMD.awaitInput("Введите цвет глаз " + COLORS + ":", "Введите один из предложенных цветов", input -> UtilFunctions.enumOrNull(input.toUpperCase(Locale.ROOT), Color.class) != null, input -> Color.valueOf(input.toUpperCase(Locale.ROOT))); @@ -217,7 +217,7 @@ public final class PeopleDatabaseCommands { long z = CMD.awaitInput("Введите z:", "Введите целое число", input -> UtilFunctions.longOrNull(input) != null, Long::parseLong); String name = CMD.awaitInput("Введите название:", "Строка не может быть пустой", - input -> !input.isEmpty()); + input -> true, input -> input.isEmpty() ? null : input); return new Location(x, y, z, name); } From 0ba5fca0c1ad7894052daef0911236f3e87217e1 Mon Sep 17 00:00:00 2001 From: egor Date: Mon, 21 Feb 2022 18:23:04 +0300 Subject: [PATCH 2/2] empty input will now be considered as null for some fields (Person.passportId, Person.height and Location.name), fixed data classes setters for some fields --- .../erius/lab5/commandline/PeopleDatabaseCommands.java | 2 +- src/main/java/ru/erius/lab5/data/Coordinates.java | 2 +- src/main/java/ru/erius/lab5/data/Location.java | 4 ++-- src/main/java/ru/erius/lab5/data/Person.java | 10 +++++----- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java b/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java index a518faf..4bf9781 100644 --- a/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java +++ b/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java @@ -190,7 +190,7 @@ public final class PeopleDatabaseCommands { System.out.println("Создание нового объекта класса Person"); String name = CMD.awaitInput("Введите имя:", "Введите непустую строку", input -> !input.isEmpty()); - int height = CMD.awaitInput("Введите рост:", "Введите целое число, большее нуля", + Integer height = CMD.awaitInput("Введите рост:", "Введите целое число, большее нуля", input -> { Integer result = UtilFunctions.intOrNull(input); return result != null && result > 0 || input.isEmpty(); diff --git a/src/main/java/ru/erius/lab5/data/Coordinates.java b/src/main/java/ru/erius/lab5/data/Coordinates.java index 0f0f0dc..aa7c38e 100644 --- a/src/main/java/ru/erius/lab5/data/Coordinates.java +++ b/src/main/java/ru/erius/lab5/data/Coordinates.java @@ -41,8 +41,8 @@ public class Coordinates { * @throws IllegalArgumentException Если Y меньше или равен -816 */ public void setY(float y) { - this.y = y; if (y <= -816) throw new IllegalArgumentException("Поле y класса Coordinates должно быть больше -816"); + this.y = y; } } diff --git a/src/main/java/ru/erius/lab5/data/Location.java b/src/main/java/ru/erius/lab5/data/Location.java index 33271d6..d7fbf20 100644 --- a/src/main/java/ru/erius/lab5/data/Location.java +++ b/src/main/java/ru/erius/lab5/data/Location.java @@ -54,9 +54,9 @@ public class Location implements Comparable { * @throws IllegalArgumentException Если name является пустой строкой */ public void setName(String name) { - this.name = name; - if (name.isEmpty()) + if (name != null && name.isEmpty()) throw new IllegalArgumentException("Поле name класса Location не может быть пустым"); + this.name = name; } /** diff --git a/src/main/java/ru/erius/lab5/data/Person.java b/src/main/java/ru/erius/lab5/data/Person.java index 552f87c..1dfdaa5 100644 --- a/src/main/java/ru/erius/lab5/data/Person.java +++ b/src/main/java/ru/erius/lab5/data/Person.java @@ -130,9 +130,9 @@ public class Person implements Comparable { * Если имя является пустой строкой */ public void setName(String name) { - this.name = name; if (name.isEmpty()) throw new IllegalArgumentException("Поле name класса Person не может быть null или пустым"); + this.name = name; } /** @@ -143,9 +143,9 @@ public class Person implements Comparable { * @throws IllegalArgumentException Если рост меньше 0 */ public void setHeight(Integer height) { - this.height = height; - if (height <= 0) + if (height != null && height <= 0) throw new IllegalArgumentException("Поле height класса Person должно быть больше 0"); + this.height = height; } /** @@ -156,9 +156,9 @@ public class Person implements Comparable { * @throws IllegalArgumentException Если номер паспорта меньше 8 символов в длину */ public void setPassportID(String passportID) { - this.passportID = passportID; - if (passportID.length() < 8) + if (passportID != null && passportID.length() < 8) throw new IllegalArgumentException("Поле passportID класса Person не может быть меньше 8 символов в длину"); + this.passportID = passportID; } /**