diff --git a/build.gradle.kts b/build.gradle.kts index d7ae44e..7ec3efd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,6 +25,10 @@ tasks.compileJava { options.encoding = "UTF-8" } +tasks.javadoc { + options.encoding = "UTF-8" +} + tasks.jar { manifest { attributes( @@ -33,7 +37,3 @@ tasks.jar { ) } } - -tasks.javadoc { - options.encoding = "UTF-8" -} diff --git a/src/main/java/ru/erius/lab5/Lab5.java b/src/main/java/ru/erius/lab5/Lab5.java index e96fa5f..89c191b 100644 --- a/src/main/java/ru/erius/lab5/Lab5.java +++ b/src/main/java/ru/erius/lab5/Lab5.java @@ -2,13 +2,13 @@ package ru.erius.lab5; import ru.erius.lab5.collection.Database; import ru.erius.lab5.collection.PeopleDatabase; -import ru.erius.lab5.commandline.CommandLine; +import ru.erius.lab5.commandline.CommandLineHandler; import ru.erius.lab5.commandline.PeopleDatabaseCommands; public class Lab5 { public static void main(String[] args) { - CommandLine cmd = CommandLine.getInstance(); + CommandLineHandler cmd = CommandLineHandler.getInstance(); PeopleDatabaseCommands.registerDatabaseCommands(); PeopleDatabase peopleDatabase = new PeopleDatabase(); diff --git a/src/main/java/ru/erius/lab5/collection/Database.java b/src/main/java/ru/erius/lab5/collection/Database.java index 7c72ae1..06bbbe1 100644 --- a/src/main/java/ru/erius/lab5/collection/Database.java +++ b/src/main/java/ru/erius/lab5/collection/Database.java @@ -1,5 +1,8 @@ package ru.erius.lab5.collection; +/** + * Интерфейс баз данных с методами {@link #load()} и {@link #save()} + */ public interface Database { void load() throws DatabaseLoadFailedException; diff --git a/src/main/java/ru/erius/lab5/collection/PeopleDatabase.java b/src/main/java/ru/erius/lab5/collection/PeopleDatabase.java index e06cf2f..fdec3a1 100644 --- a/src/main/java/ru/erius/lab5/collection/PeopleDatabase.java +++ b/src/main/java/ru/erius/lab5/collection/PeopleDatabase.java @@ -17,6 +17,10 @@ import java.io.IOException; import java.time.LocalDate; import java.util.TreeSet; +/** + * Класс базы данных людей, реализующий интерфейс Database + * @see ru.erius.lab5.collection.Database + */ @XmlRootElement public class PeopleDatabase implements Database { @@ -49,6 +53,13 @@ public class PeopleDatabase implements Database { TYPE, this.initDate, this.collection.size()); } + /** + * Метод, инициализирующий базу данных из файла, находящемся по пути, указанном в + * переменной окружения {@link #ENV_VAR} + * + * @throws Database.DatabaseLoadFailedException если переменная окружения {@link #ENV_VAR} не задана, + * файла не существует, либо отсутствуют права на запись или чтение + */ @Override public void load() throws Database.DatabaseLoadFailedException { System.out.println("Инициализация коллекции из файла..."); @@ -80,6 +91,14 @@ public class PeopleDatabase implements Database { System.out.println("Инициализация успешно выполнена"); } + /** + * Метод, сохраняющий базу данных в файл, находящемся по пути, указанном в + * переменной окружения {@link #ENV_VAR} + * + * @throws Database.DatabaseSaveFailedException если переменная окружения {@link #ENV_VAR} не задана, + * файла не существует, либо отсутствуют права на запись или чтение, или если структура xml файла + * была каким-либо образом нарушена + */ @Override public void save() throws Database.DatabaseSaveFailedException { if (file == null || context == null) diff --git a/src/main/java/ru/erius/lab5/commandline/Command.java b/src/main/java/ru/erius/lab5/commandline/Command.java index acb5656..4690e9e 100644 --- a/src/main/java/ru/erius/lab5/commandline/Command.java +++ b/src/main/java/ru/erius/lab5/commandline/Command.java @@ -1,5 +1,9 @@ package ru.erius.lab5.commandline; +/** + * Функциональный интерфейс с одним методом {@link #execute(String[])}, + * используется для реализации шаблон проектирования Command + */ @FunctionalInterface public interface Command { void execute(String[] args); diff --git a/src/main/java/ru/erius/lab5/commandline/CommandLine.java b/src/main/java/ru/erius/lab5/commandline/CommandLineHandler.java similarity index 88% rename from src/main/java/ru/erius/lab5/commandline/CommandLine.java rename to src/main/java/ru/erius/lab5/commandline/CommandLineHandler.java index 00c0321..cd0aff1 100644 --- a/src/main/java/ru/erius/lab5/commandline/CommandLine.java +++ b/src/main/java/ru/erius/lab5/commandline/CommandLineHandler.java @@ -7,23 +7,30 @@ import java.util.*; import java.util.function.Function; import java.util.function.Predicate; -public class CommandLine { +/** + * Класс обработчика командной строки, реализует шаблон проектирования Singleton, + * читает ввод с командной строки, обрабатывает его и вызывает соответствующую команду + * на выполнение из регистра команд, используйте метод {@link #start()} для его запуска + * + * @see CommandRegistry + */ +public final class CommandLineHandler { - private final static CommandLine instance = new CommandLine(); + private final static CommandLineHandler instance = new CommandLineHandler(); private final Deque inputs = new LinkedList<>(); - private final ArrayList history = new ArrayList<>(); + private final List history = new LinkedList<>(); private BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); private boolean isActive = false; static { clearScreen(); - CommandLine.registerBasicCommands(); + CommandLineHandler.registerBasicCommands(); } - private CommandLine() {} + private CommandLineHandler() {} - public static CommandLine getInstance() { + public static CommandLineHandler getInstance() { return instance; } @@ -36,6 +43,9 @@ public class CommandLine { "execute_script {file_name} : считать и исполнить скрипт из указанного файла. В скрипте содержатся команды в таком же виде, в котором их вводит пользователь в интерактивном режиме."); } + /** + * Метод, запускающий обработчик командной строки, для остановки требуется ввести команду "exit" + */ public void start() { System.out.println(LongStrings.GREETINGS.getValue()); this.isActive = true; @@ -73,6 +83,9 @@ public class CommandLine { updateHistory(alias); } + /** + * Метод, останавливающий работу обработчика командной строки + */ public void exit() { this.isActive = false; System.out.println("Выход из программы..."); diff --git a/src/main/java/ru/erius/lab5/commandline/CommandRegistry.java b/src/main/java/ru/erius/lab5/commandline/CommandRegistry.java index 04e8f24..3d866b2 100644 --- a/src/main/java/ru/erius/lab5/commandline/CommandRegistry.java +++ b/src/main/java/ru/erius/lab5/commandline/CommandRegistry.java @@ -6,7 +6,10 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -public class CommandRegistry { +/** + * Класс регистра команд, используемый для добавления, переопределения или удаления команд + */ +public final class CommandRegistry { private static final Map COMMANDS = new HashMap<>(); diff --git a/src/main/java/ru/erius/lab5/commandline/DescriptiveCommand.java b/src/main/java/ru/erius/lab5/commandline/DescriptiveCommand.java index bb972bc..39d2fa3 100644 --- a/src/main/java/ru/erius/lab5/commandline/DescriptiveCommand.java +++ b/src/main/java/ru/erius/lab5/commandline/DescriptiveCommand.java @@ -4,6 +4,9 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NonNull; +/** + * Класс команд с описанием, оболочка для обычных команд, используются для корректной работы команды help + */ @Data @AllArgsConstructor public class DescriptiveCommand { @NonNull diff --git a/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java b/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java index 039afd0..373d94b 100644 --- a/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java +++ b/src/main/java/ru/erius/lab5/commandline/PeopleDatabaseCommands.java @@ -12,15 +12,24 @@ import java.util.Optional; import static ru.erius.lab5.commandline.CommandRegistry.*; +/** + * Класс объявления всех команд, связанных с манипуляциями над объектом класса PeopleDatabase + * + * @see PeopleDatabase + */ public final class PeopleDatabaseCommands { private static PeopleDatabase peopleDatabase; private static final String COLORS = Arrays.toString(Color.values()), COUNTRIES = Arrays.toString(Country.values()); - private static final CommandLine CMD = CommandLine.getInstance(); + private static final CommandLineHandler CMD = CommandLineHandler.getInstance(); private PeopleDatabaseCommands() {} + /** + * Метод добавления всех команд в регистр команд, обязательно вызывайте его в своей программе, + * если вам требуются данные команды + */ public static void registerDatabaseCommands() { registerCommand("info", args -> info(peopleDatabase), "info : вывести в стандартный поток вывода информацию о коллекции (тип, дата инициализации, количество элементов и т.д.)"); diff --git a/src/main/java/ru/erius/lab5/data/Person.java b/src/main/java/ru/erius/lab5/data/Person.java index caae89c..552f87c 100644 --- a/src/main/java/ru/erius/lab5/data/Person.java +++ b/src/main/java/ru/erius/lab5/data/Person.java @@ -66,6 +66,9 @@ public class Person implements Comparable { */ private Location location; + /** + * Конструктор для корректного преобразования человека из xml в объект + */ private Person() { this.id = ++existingPeople; } @@ -101,6 +104,12 @@ public class Person implements Comparable { this.setPassportID(passportID); } + /** + * Метод, меняющий все значения полей человека (кроме {@link #id} и {@link #creationDate}) в соответствии + * со значениями полей другого + * + * @param newPerson человек, чьи поля будут присвоены текущему + */ public void update(Person newPerson) { this.location = newPerson.location; this.coordinates = newPerson.coordinates; @@ -154,7 +163,7 @@ public class Person implements Comparable { /** * Переопределенный метод сравнения двух людей, - * сравнение производится по имени, номеру пасспорта, + * сравнение производится по имени, номеру паспорта, * росту, национальности, местоположению и цвету глаз * * @param other Объект для сравнения diff --git a/src/main/java/ru/erius/lab5/parser/LocalDateAdapter.java b/src/main/java/ru/erius/lab5/parser/LocalDateAdapter.java index 782d4d2..5d637b9 100644 --- a/src/main/java/ru/erius/lab5/parser/LocalDateAdapter.java +++ b/src/main/java/ru/erius/lab5/parser/LocalDateAdapter.java @@ -4,6 +4,9 @@ import javax.xml.bind.annotation.adapters.XmlAdapter; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +/** + * Класс парсера для корректного преобразования объекта LocalDate в xml формат и наоборот + */ public class LocalDateAdapter extends XmlAdapter { @Override public LocalDate unmarshal(String v) throws Exception { diff --git a/src/main/java/ru/erius/lab5/util/UtilFunctions.java b/src/main/java/ru/erius/lab5/util/UtilFunctions.java index 67706a0..0fd7c47 100644 --- a/src/main/java/ru/erius/lab5/util/UtilFunctions.java +++ b/src/main/java/ru/erius/lab5/util/UtilFunctions.java @@ -1,6 +1,9 @@ package ru.erius.lab5.util; -public class UtilFunctions { +/** + * Класс функций-утилит для избавления от повторяющихся участков кода и выноса их в методы для общего пользования + */ +public final class UtilFunctions { private UtilFunctions() {}