Главная » Просмотр файлов » Пояснительная записка к диплому

Пояснительная записка к диплому (1228397), страница 9

Файл №1228397 Пояснительная записка к диплому (Разработка АРМ складского рабочего для ДВЖД - филиала) 9 страницаПояснительная записка к диплому (1228397) страница 92020-10-06СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 9)

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

Схема полученного вспомогательного класса приведена на рисунке 5.

Рисунок 5 – Схема вспомогательного

класса

Код вспомогательного класса представлен в приложении А.4.

3.3.5 Создание контроллеров представлений

Контроллеры представлений содержат основной функционал приложения. На примере контроллера представления адресов будет выполнено описание построения типового контроллера представления, также после описания построения контроллера представления адресов будет осуществлено описание функций в него не вошедших, но присутствующих в АРМ.

Прежде всего для контроллера представления необходимо задать объявление @ManagedBean, которое укажет на то что данный контроллер предназначен для работы с представлением. После этого также необходимо определить область действия для контроллера, для большинства контроллеров представлений подойдёт установка действия в рамках сессии – @SessionScoped, однако для контроллера авторизации следует реализовать область действия в рамках приложения, для возможности хранения данных вне зависимости от сессии которая может быть сброшена для обновления моделей и представлений [21].

Далее следует объявить поля, требуемые для работы контроллера. Так для его работы потребуется поле для хранения информации об одной записи из таблицы адресов и поле для хранения информации о множестве адресов. Информация об одном адресе будет использована для возможности его редактирования, а информация о группе адресов будет использоваться для отображения результатов поиска. Информация о группе объектов будет храниться в не в классе модели, в отличие от конкретной записи, а в классе DataModel. Этот класс по сравнению со списком реализует механизм простого доступа к информации о конкретной записи модели. Далее необходимо создать поле для хранения экземпляра класса контроллера фасада модели. Для этого перед полем нужно объявить следующую запись: @EJB, которая установит зависимость между объявленным полем и контроллером фасада модели [21]. Затем объявляется класс, созданный ранее для реализации постраничной навигации. Далее объявляются поля, отвечающие за реализацию поиска по таблице, в данном случае три строки для хранения данных о фильтре по улицам, городам и домам. В других контроллерах представления могут также создаваться специальные поля, отвечающие за хранение важных, в рамках представления данных.

Адрес может выбираться в других таблицах как внешний ключ. Выбор внешнего ключа реализуется посредством перехода на поисковую форму связанной таблицы, поиском нужной записи или её добавлением и после утверждением в качестве внешнего ключа. Для реализации такой логики необходима логическая переменная отвечающая за отображение соответствующей информации на представлениях. Сущность адресов используется как внешний ключ в сущности сотрудников и сущности информации о складах, поэтому понадобится две логические переменные.

Стоит отметить что для реализации этого механизма потребуются также соответствующие методы в контроллерах обеих связанных сущностей. Метод сущности являющейся внешним ключом должен принимать информацию о сущности уже указанной как связанная, для возможности правки информации о связанной сущности, а также логическое значение, отвечающее за определение с какого окна (создания или редактирования) был произведён переход, для дальнейшей отсылки в связанный метод и определения соответствующего для показа представления.

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

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

Далее производится запись стандартных методы установки и получения значений инкапсулированных полей. Для поля, хранящего информацию о единичной записи метод получения будет изменён таким образом, что в случае если поле пустое, то ему присвоится значение нового элемента типа адрес. Метод получения контроллера фасада следует объявить, как закрытый, чтобы предотвратить ошибки при работе с моделью. Метод получения модели данных определённой в контроллере будет, в случае отсутствия данных в текущей модели, выполнять занесение из метода класса постраничной навигации, возвращающего модель данных, а в случае если модель уже содержит не нулевое значение, то будет осуществлять возвращение этого значения. Также следует объявить пустой конструктор по умолчанию.

После этого выполняется определение метода получения класса постраничной навигации. Для этого нужно перегрузить методы подсчёта количества записей и создания модели данных с использованием созданных в абстрактном фасаде методов для подсчёта записей по результатам поиска и самого поиска. Таким образом в качестве параметров в данных методах будет выступать название класса сущности, список параметров поиска, список значений ранее определённых поисковых фильтров, а также в качестве начала выборки первый элемент на странице и в качестве конца сумма первого элемента и количества записей на странице. Список параметров поиска представлен в представлении классов, то есть сослаться на название города связанный с адресом можно следующим образом Adress.cityR.city, для формирования запроса достаточно лишь двух последних полей.

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

Далее выполняется определение методов подготовки перехода на страницу создания, редактирования/просмотра записи, а также на страницу со списком адресов, найденных по результатам поиска.

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

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

Метод подготовки просмотра/редактирования записи заносит в текущий экземпляр класса модели значение, полученное из строки модели данных из которой осуществился вызов метода, после чего возвращает адрес соответствующего представления.

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

Далее выполняется определение методов создания записи и её обновления. Метод создания записи вызывает контроллер фасада модели и при помощи метода создания пытается создать запись. В случае успеха выводится сообщение об успешном завершении операции и в качестве возвращаемого значения вызывается метод подготовки создания, для очистки формы и готовности к созданию нового адреса. В случае неудачи выводится сообщение с ошибкой и её описанием и возвращается пустой объект. Метод обновления записи устроен аналогичным образом, только в случае успеха он возвращает адрес текущего представления.

Затем реализуются методы постраничной навигации для перехода на первую, последнюю, следующую и предыдущую страницы. Эти методы аналогичны друг другу, единственное их отличие заключается в том, что они в самом начале вызывают соответствующий их деятельности метод класса постраничной навигации. После чего вызывается метод воссоздания модели данных и возвращается адрес представления, отвечающего за показ результатов поиска.

На этом реализация контроллера представления адресов закончена, полный код созданного контроллера приведён в приложении А.5. Однако этот контроллер содержит далеко не все методы которые вошли в некоторые другие контроллеры и эти методы следует отдельно описать. В приложении реализован выбор некоторых внешних ключей через выпадающий список. Такая реализация отличается удобством, однако требует наличия дополнительных методов поддерживающих такой механизм.

Схема данного класса приведена на общей диаграмме блока адресов в приложении В.

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

public SelectItem[] getItemsAvailableSelectOne()

{

return JsfUtil.getSelectItems(ejbFacade.Search("TableName",

new String[]{""},

new String[]{""}, "",

new int[]{-1, -1}),true);

}

Также реализуется набор методов, отвечающих за конвертацию экземпляра класса в строку и объект, а также для получения ключа и ключа в строковом представлении. Следует описать создание такого класса на примере контроллера модели городов. Для этого объявляется класс конвертации, для которого делается объявление @FacesConverter(forClass = Cities.class) [22]. Этот класс является реализацией интерфейса конвертера и перегружает его метод получения экземпляра класса как объект и как строку. Метод получения экземпляра класса как объект проверяет значение полученное как параметр и, если оно пустое, возвращает пустое значение. Если же значение не пустое, то создаёт экземпляр класса контроллера, в который помещает значение, возвращаемое текущим контекстом приложения после чего осуществляет возвращение найденного в модели экземпляра класса в качестве объекта. В качестве параметров принимается контекст представления, из которого был вызван метод, компонент интерфейса для которого вызывается метод (в данном случае выпадающий список), а также строковое значение представляющее объект (его ключ в строковом виде). Код реализующий данный метод приведён ниже:

@Override

public Object getAsObject(FacesContext facesContext, UIComponent component, String value)

{

if (value == null || value.length() == 0) {

return null;

}

CitiesController controller = (CitiesController) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "citiesController");

return controller.ejbFacade.find(getKey(value));

}

В этом коде используется один ранее не определённый метод – getKey, этот метод используется для получения ключа экземпляра класса, поиск которого выполняется. Этот метод возвращает ключ конвертированный в объект типа Long и возвращает его в предыдущий метод для поиска этого объекта. Код метода получения ключа имеет следующий вид:

java.lang.Long getKey(String value)

{

java.lang.Long key;

key = Long.valueOf(value);

return key;

}

Метод получения экземпляра класса как строки во основном схож с методом получения его как объекта. Он проверяет объект на пустоту, после чего, если объект не пустой он проверяет его на принадлежность к классу модели. В случае прохождения этих проверок будет возвращено значение экземпляра класса модели как строки. Код этого метода выглядит следующим образом:

@Override

public String getAsString(FacesContext facesContext, UIComponent component, Object object)

{

Характеристики

Тип файла
Документ
Размер
744,54 Kb
Высшее учебное заведение

Список файлов ВКР

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6809
Авторов
на СтудИзбе
277
Средний доход
с одного платного файла
Обучение Подробнее