Skip to content

Labstory/CalcPro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Labstory

Обучающий проект: Продвинутый кальулятор

Требуемые знания: Java Core - Basic Syntax (0.5 - 3 месяца), HTML (0.5 - 1 месяц), CSS (0.5 - 1 месяц)

Цель проекта:

Получить базовый опыт работы с Java Core + Spring. Взаимодействие client - server архитектуры под средством взаимодействия HTTP REST API. Дополнительно: Работа с БД, в частности JPA с использованием простых нативных запросов и запросов “из коробки jpa”. JPA - hibernate. GIT - основные команды. IDEA - основы работы. SWAGGER - генерируемый клиент для тестирования api. Скачаем простой шаблон html + css с интернета и сделаем для него контроллер с методами запросов к бекенду.

План работ:

1. BACKEND
  • 1.1 Создадим класс, в котором напишем основные методы для работы с калькулятором: класс сервиса, например CalcService. Вызываем в классе App.
  • 1.2 Напишем простой тест, который сможем запускать и проверять результаты работы методов.
  • 1.3 Доработаем тесты, опишем кейсы и проверим работу методов сервиса при разных входных.
  • 1.4 Подключим spring web, с помощью которого реализуем REST контроллер: Укажем верхенуровневый роут calc и вызовы методов соблюдая правила rest.
  • 1.5 Проверим работу контроллера с помощью postman.
  • 1.6 Напишем unit тесты для проверки контроллера: Тесты в аналогичных пакетах директории test, методы называем названиями реальных методов с припиской Test в имени.
  • 1.7 Добавим простое логирование методов сервиса, контроллера
  • 1.8 Подключим swagger и посмотрим его работу: Конфиг его поместим в отдельный пакет config. Назвем SwaggerConfig.
  • 1.9 Добавим объекты DTO для клиента: Их поместим в пакет dto. ResultDTO в подпакет client и ArgumentDTO в подпакет server.
  • 1.11 Рефакторинг, убираем отдельные методы операций калькулятора сделав один для работы с операциями: На вход которому приходит тип операции (enum класс).
  • 1.9 Простая валидация аргументов для калькулятора
  • 1.10 Кастомные ошибки при валидации: Например, NotFoundException(String value, Class className)!.
2. FRONTEND
  • 2.1 Скачиваем шаблон html + css и сделаем простой проект js, без глубокого погружения в понимание работы js
  • 2.2 Создадим в vue js основные методы калькулятора, такие же, которые мы делали на 1.1. и добавим оперцию сброса - очистки дисплея
  • 2.3 Создадим контроллер в vue js для общения с сервером.
3. BACKEND
  • 3.1 Создадим простую сущность, History для хранении в БД истории операций: Таблица History(uuid: String (auto not null), creationDate: Date (not null), operation: String (not null), arg1: Long, arg2: Long, result: Long (not null))
  • 3.2 Подключим spring jpa
  • 3.3 Скачаем драйвер postgres и установим локально postgres.
  • 3.4 Генерим таблицу с помощью hibernate.
  • 3.4 Создаем репозиторий для сущности истории.
  • 3.5 Добавляем метод сохранения в истории записи при вызове метода калькулятора.
  • 3.6 Добавим новый рест api для истории с методом получении всей истории операций.
  • 3.7 Добавим CRUD методы для истории.
  • 3.8 Добавим остальные методы в API истории.
  • 3.9 Напишем более сложный тест для операций калькулятора, который будет мокать spring репозиторий.
  • 3.10 В таблицу History добавим id сессии - idSession из браузера, который будем возвращать при запуске клиента значение результата, которое мы получили последним.
  • 3.11 Операцию clear реализуем на сервере и также будем сохранять в истории.

Что подключим:

С какими параметрами создаем проект: maven, java 8, mockito. Начиная с 1.4 подключаем spring boot, starter web. C 1.8 springfox в котором swagger. С 2.1 js (vue js). С 3.2 spring jpa starter и дозаполним properties. P.S. Может я что то упустил, тогда в процессе поправлю.

About

Обучающий проект: Продвинутый кальулятор

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages