Регистрация представляет из себя страницу с формой для ввода данных нового пользователя с валидацией введенной им информацией. Если пользователь хочет войти в систему, откроется страница со входом, наследуемая из модуля Secure. Там пользователю нужно указать свой username и пароль. Если такой пользователь зарегистрирован в системе, то он перейдет к странице с таблицей с книгами и функциями для чтения.
Если пользователь зашел от имени администратора, ему будут доступны ссылки на таблицы БД для редактирования пользователей, книг или статусов чтения. Эти таблицы доступны с помощью наследуемого модуля CRUD.
Я использовал эти модули, потому что crud упрощает работу с администрированием, а Secure работу с авторизацией пользователя. Предварительно я создавал 2 пробных проекта, где испытал работу этих модулей. А также изначально делал работу без них. У версии play 1.2.5 много проблем с интеграцией с Maven. Об этом также писал Александр Рилсен, автор учебника по фреймворку. Хотя, можно найти модуль для фреймворка, который решает некоторые проблемы интеграции, но не все. Я пробовал использовать модуль с пустым проектом и проект не билдился из-за ошибок, которые я не смог решить. Тесты я писал с помощью JUnit. В папке с тестами есть 2 базовых теста для проверки работы БД и взаимодействия с ней и 1 функциональный тест для проверки ответной загрузки страниц. Запуск программы можно осуществить либо из ide, либо с помощью компиляции класса и запуска его через консоль. Обход файловой системы и чтение файлов осуществляется с помощью java nio. Поиск осуществляется на определенном логическом диске, заданным пользователем.Обход файловой системы осуществляется с помощью наследуемого класса SimpleFileVisitor, с некоторыми переопределенными методами. Директории проходят проверку на пустоту, если это так, то поиск не заходит в эти директории.
Когда поиск находит файл, он проходит ряд проверок. Если файл изображением или системным файлом, то поиск продолжается, иначе происходит попытка прочитать файл построчно, с условиями, что этот файл имеет стандартную кодировку (UTF-8, так как нам требуется найти текстовую информацию, а она есть в простых текстовых файлах с MIMEtype: text. Остальные файлы, например pdf документы имеют MIMEtype: application, или документы word, которые по сути являются архивными файлами), а также файл не должен является системным(так как к ним ограничен доступ).
Если файл содержит искомый текст, то обход файлового дерева прекращается и выводится название файла и абсолютный путь к файлу с текстом, иначе поиск продолжается.
Программа использует пул потоков, наследуемый из библиотек java.util.concurrent, а именно ExecutorService. Я использовал библиотеку nio, добавленную в java 7, потому что по сравнению с java io, она работает быстрее, также в ней добавлены дополнительные функции.