Skip to content

Лабораторная работа 2. Реализация CRUD с помощью SOAP-сервиса

Notifications You must be signed in to change notification settings

Yuntaichen/lab2_crud_ws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа 2

Реализация CRUD с помощью SOAP-сервиса

Задание

В ранее разработанный веб-сервис (standalone-реализацию, см. ЛР1 часть 1) необходимо добавить методы для создания, изменения и удаления записей из таблицы БД.

Метод создания должен принимать значения полей новой записи, методы изменения и удаления - идентификатор изменяемой/удаляемой записи, методы изменения и удаления возвращают статус операции.

Соответствующим образом необходимо обновить клиентское приложение.

Ход работы

Получим исходные классы из первой лабораторной работы, в которой было реализовано standalone-приложение. База данных PostgreSQL также взята из первой лабораторной работы. Настройки окружения разработки описаны также в 1 лабораторной работе.

Добавление методов сервиса

Необходимо добавить методы:

  1. Создания - CREATE: принимает значения полей новой записи в качестве аргументов;
  2. Получения / Чтения - READ: реализован в первой работе и позволяет находить записи по значениям их полей;
  3. Изменения - UPDATE: принимает идентификатор изменяемой записи, возвращает статус операции;
  4. Удаления - DELETE: принимает идентификатор удаляемой записи, возвращает статус операции.

Обновление клиентского приложения

Изначально сгенерируем новые классы по WSDL-описанию:

wsimport -keep -p com.labs.client.generated http://localhost:8080/CRUDService?wsdl

Далее необходимо внести изменения в класс WebServiceClient. Необходимо добавить возможность выбора метода и передачи соответствующих параметров через командную строку. В результате необходимо выводить сообщение о статусе операции для создания, изменения и удаления объектов.

Для разделения методов в классе WebServiceClient создадим под каждую операцию отдельны метод, т.е. созданный в первой лабораторной работе метод main теперь будет в зависимости от указанного в консоли запроса (CREATE - метод createStudentRow, READ - метод readStudentRowsByFields, UPDATE - метод updateStudentRowById, DELETE - метод deleteStudentRowById) вызывать соответствующий метод класса WebServiceClient, который и будет выполнять необходимый запрос. При выборе READ, будет вызван метод для поиска записей таблицы по указанным полям. Остальные методы будут соответствовать созданию, изменению и удалению записей из таблицы БД.

Изначально перенесем разработанный в первой лабораторной работе функционал в метод readStudentRowsByFields. Метод будет private static, чтобы оставить доступ только из метода main. В качестве аргумента будет подаваться объект CRUDService studentService, а в результате работы будем получать список students, который будет выведен в консоль без возврата return, т.е. данный метод будет void.

Выбор требуемой операции производится при помощи ввода в консоль: CREATE, READ, UPDATE, DELETE. Для этого используется метод main(), который определяет точку входа в клиентское приложение.

Если название метода указано неверно, то дается новая попытка выбора. Для выхода необходимо ввести exit.

После выбора метода осуществляется соответствующий вызов:

  • CREATE -> createStudentRow(CRUDService studentService): создание новой записи в таблице, для чего потребуется ввести значения полей. Если одно из значений введено не верно, то в консоль будет выведено сообщение "Your request is incorrect!". Проверка идет на возможность приведения полученных значений для полей age, student_id к целым числам, что обёрнуто в try-catch для исключения NumberFormatException, а также идет проверка всех полей на пустую строку и строку из пробелов (метод trim()). По результатам в консоль выводится сообщение о статусе операции, который может принимать значения "Bad" (что-то пошло не так) и "Good" (операция выполнена).
  • READ -> readStudentRowsByFields(CRUDService studentService): метод был описан подробно в первой лабораторной работе.
  • UPDATE -> updateStudentRowById(CRUDService studentService): изменение записи в таблице. В консоли будет запрос на ввод идентификатора записи, которую требуется изменить, а также необходимых полей для изменения, после чего будет также запрос на значения данных полей. Далее идёт проверка на наличие значений, а также возможность приведения полей age, student_id к целым числам, что обёрнуто в try-catch для исключения NumberFormatException. Если определенные поля не были введены, то у них остаются прежние значения. Если введенные поля содержат пустые строки и строки из пробелов, либо не выбрано никаких полей для изменения, то выводится соответствующее сообщение в консоль. Дополнительно сделан запрос на подтверждение внесения изменений ввиду того, что подобное действие необратимо. Если идентификатор записи в таблице отсутствует, то изменения не будут внесены. В результате выполнения операции также будет выведен её статус.
  • DELETE -> deleteStudentRowById(CRUDService studentService): удаление записи из таблицы. При выполнении будет запрос на ввод идентификатора записи rowID. Далее идет проверка на пустую строку и строку из пробелов, а также перехват исключения NumberFormatException, если не получилось привести введенное значение к целому числу. Если в таблице в БД нет записи с указанным идентификатором, то изменения не будут внесены, но операция вернет статус "Good", т.к. строка отсутствует в таблице,, что можно сравнить с её удалением.

About

Лабораторная работа 2. Реализация CRUD с помощью SOAP-сервиса

Topics

Resources

Stars

Watchers

Forks

Languages