Skip to content

Borkau/Maat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This application is under construction. It works, but not very well.

Test.
Web Maven MVC application with CRUD operations.
Data in Mysql is loaded from .xml files.
Technologies used:
- Java 14;
- Maven;
- Spring Boot;
- Spring Web;
- Spring Data JPA;
- MySQL;
- Lombok lib

Тестовое задание.
Относительно работающий билд.
На изучение технологий и разработку отводил себе ровно месяц (28.08 - 28.09.20).
Основные работы завершены 28.09, в срок.

//////////////////////////////////////////////////////
* Инструкция по запуску.
0. 
Предварительно создать в корне диска C:\ папку "maat-temp". Это папка, куда нужно складывать файлы XML. Программа сама их оттуда копирует в свою папку и
там уже спокойно парсит. Это просто для удобства. Можно сразу кидать в корень проекта.
0.1 
Создать MySQL бд "moex_db", в ней две таблицы. Скрипты, написаны ниже.
1.
Запуск.
Вариант 1 - под IDEA;
Вариант 2 - в папке \Maat\target лежит .jar

//////////////////////////////////////////////////////
* Описание архитектуры приложения.
Это Maven mvc(mvcs)-приложение, с простым одностраничным view. 
Компонент Model представлен entity-классами и pojo-классом DTO.
В слое сервиса происходит парсинг XML-файлов и конвертация в объекты, преобразования toDTO и обратно. А также там определены
методы CRUD имплементирующие JPA Repository.
Контроллеры(REST API) только связывают view с остальными слоями.
Компонент View представлен одностраничным html с функциями JS и AJAX-запросами.
Позволяет добавить новую ценную бумагу, найти по имени (только необходимо точное имя),  показать таблицу со всеми ценными бумагами (пункт 4 задания),
загрузить данные в БД из XML(кнопка "Load data from XML"), очистить все ячейки в БД (кнопка "Delete all data").
Валидация по полю name, при создании новой ценной бумаги, осуществляется непосредственно в html с помощью регулярного выражения.

//////////////////////////////////////////////////////
* Не сделано, какие есть проблемы, предполагаемые варианты решений.
0. В целом, довольно кривовато, страничка view только для визуализации (ввиду практически полного отсутствия знаний фронтенда), но это первый мой проект подобного масштаба. 
Ломбок использовался только для ознакомления :).
1. Не сделал сортировку и фильтрацию по полям. Мои знания JS просто не позволяют это сделать в разумные сроки.
2. Функцию редактирования. Тут мне тоже не хватает знаний JS, чтобы полноценно реализовать. Должно работать используя метод save.
3. *исправлено
4. Парсер написан под предоставленные файлы. Для использовании других xml с аналогичной структурой, но другими именами и в другом количестве, необходимы изменения в класс-парсер.
5. Еще немало того, что хотелось бы исправить и улучшить, буду постепенно улучшать.

//////////////////////////////////////////////////////
* create MySQL tables

CREATE TABLE `securities` (
  `id` int NOT NULL,
  `secid` varchar(45) NOT NULL,
  `shortname` varchar(45) NOT NULL,
  `regnumber` varchar(45) DEFAULT NULL,
  `secname` varchar(100) NOT NULL,
  `isin` varchar(45) DEFAULT NULL,
  `is_traded` int DEFAULT NULL,
  `emitent_id` int DEFAULT NULL,
  `emitent_title` varchar(200) DEFAULT NULL,
  `emitent_inn` bigint DEFAULT NULL,
  `emitent_okpo` int DEFAULT NULL,
  `gosreg` varchar(45) DEFAULT NULL,
  `sectype` varchar(45) DEFAULT NULL,
  `secgroup` varchar(45) DEFAULT NULL,
  `primary_boardid` varchar(45) DEFAULT NULL,
  `marketprice_boardid` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)


CREATE TABLE `histories` (
  `id` int NOT NULL,
  `BOARDID` varchar(45) NOT NULL,
  `TRADEDATE` varchar(45) NOT NULL,
  `SHORTNAME` varchar(45) NOT NULL,
  `SECID` varchar(45) NOT NULL,
  `NUMTRADES` double NOT NULL,
  `HISVALUE` double DEFAULT NULL,
  `HISOPEN` double DEFAULT NULL,
  `LOW` double DEFAULT NULL,
  `HIGH` double DEFAULT NULL,
  `LEGALCLOSEPRICE` double DEFAULT NULL,
  `WAPRICE` double DEFAULT NULL,
  `HISCLOSE` double DEFAULT NULL,
  `VOLUME` double DEFAULT NULL,
  `MARKETPRICE2` double DEFAULT NULL,
  `MARKETPRICE3` double DEFAULT NULL,
  `ADMITTEDQUOTE` double DEFAULT NULL,
  `MARKETPRICE3TRADESVALUE` double DEFAULT NULL,
  `ADMITTEDVALUE` double DEFAULT NULL,
  PRIMARY KEY (`id`)

//////////////////////////////////////////////////////

* основные источники, которыми пользовался при разработке:
https://java-master.com
https://ru.stackoverflow.com
https://javadevblog.com
https://spring.io/
https://docs.oracle.com/en/java/javase
https://java-course.ru/begin/xml
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference
https://tproger.ru


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors