O objetivo do projeto é criar um simulador, para poder controlar sondas em outros planetas por meio de comandos.
Tamanho da área do planeta : 5x5
Posição de pouso da sonda 1: x=1, y=2 apontando para Norte
Sequencia de comandos: LMLMLMLMM
Posição final da sonda: x=1 y=3 apontando para Norte
Posição de pouso da sonda 2: x=3, y=3 apontando para Leste
Sequencia de comandos: MMRMMRMRRML
Posição final da sonda: x=5 y=1 apontando para Norte
A sequência de comandos é um conjunto de instruções enviadas da terra para a sonda, onde :
M
-> Andar para a frente na direção que está 1 posição.L
-> Virar a sonda para a esquerda (90 graus)R
-> Virar a sonda para a direita (90 graus)
A área do planeta é um plano cartesiano com o tamanho informado pelo operador.
A orientação da sonda dentro do plano cartesiano usa uma rosa dos ventos como referência
- Spring Boot
- MySQL
- Docker
- Swagger
- Flyway: Para criação das "migrations" do banco de dados
- Spring Security
- Postman
- JUnit
Esse projeto foi desenvolvido utilizando testes de integração e de unidade. Na camada controller e repository foi implementado teste de integração com o banco de dados.
- api: Todas as funcionalidades referente a API da aplicação.
- core : Núcleo da aplicação, utilizado para reúso de código.
- domain: Camada utilizada para implementação das regras de negocio, o seu principal objetivo é ser independente de framework.
- db.migration: Onde fica armazenado os arquivos de migrations que são executados pelo Flyway para criar o banco de dados.
- test: Local onde fica armazenado os testes da aplicação.
- test.api.controller: Teste de integração utilizando o banco de testes.
- docker-compose.yaml: Utilizado para criar o banco de dados de desenvolvimento e testes.
Os bancos de desenvolvimento e testes podem ser utilizados através de contêiner docker .
Para subir o banco é só executar o comando: docker-compose up --build
Obs: Em toda execução dos testes de integração o banco de teste é apagado.
Credenciais do banco de desenvolvimento:
Porta: 3306
MYSQL_DATABASE: 'probe_manager'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
Credenciais do banco de testes:
Porta: 3307
MYSQL_DATABASE: 'probe_manager_test'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
Toda a API foi documentada utilizando o Swagger. Para acessar a documentação, é só acessar a URL http://localhost:8080/swagger-ui/index.html#/
email: admin@gmail.com, password: 123456
Após a autenticação é só passar o token, nos cabeçalhos das requisições.
Utilização no Swagger