Borkau/Maat
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
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