Code Monkey home page Code Monkey logo

balance's Introduction

JAVA задание от Qiwi Kazakhstan

  1. Разработать схему хранения авторизационных данных клиентов и их балансов.
  2. Номер телефона – мобильный, 10 цифр. Пароль должен храниться в защищенном виде. Балансы – с точность до копеек.
  3. Создать сервлет, принимающий xml-запросы методом POST, который может обрабатывать 2 запроса (см. ниже). Обеспечить целостность данных в БД. Так же учитывать, что к сервлету могут обращаться несколько пользователей одновременно, с одинаковыми запросами и данными в запросах. Регистрация нового агента: Запрос:
<?xml version="1.0" encoding="utf-8"?>
<request>
 <request-type>new-agt</request-type>
 <login>1234567890</login> 
 <password>password</password> 
</request>

Ответ:

<?xml version="1.0" encoding="utf-8"?>
<response>
 <result-code>0</result-code>
</response>

Где код ошибки: 0 – все хорошо 1 – такой агент уже зарегистрирован 2 – неверный формат телефона 3 – плохой пароль 5 – другая ошибка повторите позже

Получение баланса: Запрос:

<?xml version="1.0" encoding="utf-8"?>
<request>
 <request-type>agt-bal</request-type>
 <login>1234567890</login> 
 <password>password</password> 
</request>

Ответ:

<?xml version="1.0" encoding="utf-8"?>
<response>
  <result-code>0</result-code>
  <bal>100.00</bal>
</response>

Коды ошибок дописать на свое усмотрение.

Реализация и технологии

Сервлет реализован на языке Java ядра 1.8 в IDE Eclipse J2EE Oxygen. Также использовались фреймворки Spring, MyBatis, Log4J, JacksonXML. Для хранения данных используется СУБД MySQL, БД инициализиаруется автоматически посредством JDBC. Приложение автономно, с встроенным Tomcat сервером приложений. Из шаблонов проектирования использовался синглтон для соответствующих классов. Также использовались аннотации и наследование. Согласно канонам статика (константы) вынесены в файл конфигурации SpringBoot приложения. Для валидации значений использовались регулярные выражения. Объекты из БД получались в виде коллекий объектов. Кратко документировано в формате Javadoc.

Логика

На прослушивающий запросы контроллер XmlResponseController поступает XML post запрос Request заданного формата. Далее согласно запросу определяется его обработка. Обработчик запроса валидирует данные запроса (PasswordValidator, PhoneValidator) и выполняет саму обработку. Далее отвечает на запрос ответом Response. Для взаимодействия с СУБД используется менеджер баз данных DatabaseManager, который в свою очередь использует маппер ClientMapper. Client бизнес модель объекта данных. Согласно требованиям тестирование производилось JMeter (проектный файл MobileService test.jmx прилагается), для исключения очереди были исключены приватные объекты в полях сервлета, технология Spring сама по себе гарантирует однопроцессорную многопоточность. В коде имеются комментарии. Также в папке депозитария doc есть JavaDoc документация.

Инструкция к запуску

Программные требования:

  • доступ к интернет
  • Oracle JavaSE 1.8
  • Git
  • Maven
  • MySQL

Действия для запуска:

  • Создать папку для проекта (далее ПП)
  • Запустить консоль ОС
  • Перейти в ПП
  • Клонировать проект с публичного GitHub сервера выполнив команду git clone https://github.com/Zhassulan/balance.git
  • для инициализаии БД надо прописать пользователя с правами на создание базы данных на сервере СУБД в файле ..ПП\MobileService\src\main\resources\application.properties параметр spring.datasource.username и spring.datasource.password. Будет создана база mobile или если она существует то добавятся таблицы. Схему можно посмотреть в файле ..ПП\MobileService\src\main\resources\schema-mysql.sql.
  • если сервер СУБД MySQL не локальный то указать сервер в параметрах spring.datasource.url и mysql.url, заменив слово localhost на ваш сервер
  • в консоли войти в ..\ПП\balance\MobileService (на уровень pom.xml файла)
  • скомпилировать приложение выполнив команду mvn compile
  • скачать\собрать зависимости для приложения выполнив команду mvn package
  • запустить приложение командой mvn spring-boot:run
  • отправить xml post запрос в формате http://localhost:8080/xml/agt-bal например, можно через SoapUI, проектый файл MobileService-soapui-project.xml прилагается

balance's People

Contributors

zhassulan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.