Skip to content

DmitryTsybulkin/Library

Repository files navigation

Library

Добро пожаловать в репозиторий

В репозитории есть проект Library, а также 2 модуля к нему: crud и secure. Помимо этого здесь можо найти директорию "MultiProgram" - это программа - 2 задание(в директории Library/MultiProgram/src/com/multi/ есть два java файла, которые и представляют программу)

1) Как работает библиотека

Библиотеку можно запустить из папки с проектом или открыть в ide с помощью команды, прописанной через консоль «play run». После этого нужно перейти в браузере по адресу: «localhost:9000» или «127.0.0.1:9000». Лучше запускать проект из ide, чтобы была интеграция с модулями. Для этого нужно открыть проект в IntelliJIdea и добавить модули: crud и secure (директории в репозитории). На первом экране присутствует таблица с книгами в библиотеке. Также ссылки для входа в систему или для регистрации нового пользователя.

Регистрация представляет из себя страницу с формой для ввода данных нового пользователя с валидацией введенной им информацией. Если пользователь хочет войти в систему, откроется страница со входом, наследуемая из модуля Secure. Там пользователю нужно указать свой username и пароль. Если такой пользователь зарегистрирован в системе, то он перейдет к странице с таблицей с книгами и функциями для чтения.

Если пользователь зашел от имени администратора, ему будут доступны ссылки на таблицы БД для редактирования пользователей, книг или статусов чтения. Эти таблицы доступны с помощью наследуемого модуля CRUD.

2) Почему CRUD и Secure модули

Я использовал эти модули, потому что crud упрощает работу с администрированием, а Secure работу с авторизацией пользователя. Предварительно я создавал 2 пробных проекта, где испытал работу этих модулей. А также изначально делал работу без них.

3) Почему без Maven

У версии play 1.2.5 много проблем с интеграцией с Maven. Об этом также писал Александр Рилсен, автор учебника по фреймворку. Хотя, можно найти модуль для фреймворка, который решает некоторые проблемы интеграции, но не все. Я пробовал использовать модуль с пустым проектом и проект не билдился из-за ошибок, которые я не смог решить.

4) Про тесты к вебу

Тесты я писал с помощью JUnit. В папке с тестами есть 2 базовых теста для проверки работы БД и взаимодействия с ней и 1 функциональный тест для проверки ответной загрузки страниц.

6) Как работает поиск текста в файловой системе

Запуск программы можно осуществить либо из ide, либо с помощью компиляции класса и запуска его через консоль. Обход файловой системы и чтение файлов осуществляется с помощью java nio. Поиск осуществляется на определенном логическом диске, заданным пользователем.

Обход файловой системы осуществляется с помощью наследуемого класса SimpleFileVisitor, с некоторыми переопределенными методами. Директории проходят проверку на пустоту, если это так, то поиск не заходит в эти директории.

Когда поиск находит файл, он проходит ряд проверок. Если файл изображением или системным файлом, то поиск продолжается, иначе происходит попытка прочитать файл построчно, с условиями, что этот файл имеет стандартную кодировку (UTF-8, так как нам требуется найти текстовую информацию, а она есть в простых текстовых файлах с MIMEtype: text. Остальные файлы, например pdf документы имеют MIMEtype: application, или документы word, которые по сути являются архивными файлами), а также файл не должен является системным(так как к ним ограничен доступ).

Если файл содержит искомый текст, то обход файлового дерева прекращается и выводится название файла и абсолютный путь к файлу с текстом, иначе поиск продолжается.

5) Многопоточность в программе

Программа использует пул потоков, наследуемый из библиотек java.util.concurrent, а именно ExecutorService.

7) Почему nio

Я использовал библиотеку nio, добавленную в java 7, потому что по сравнению с java io, она работает быстрее, также в ней добавлены дополнительные функции.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages