Skip to content

A planetary mission to the space, where you can land a probe on a planet surface and move those probes around. Every time the probe is moved it takes a photo of Mars surface and send it back to "Earth". Photos are real Mars photos taken by the Nasa Rovers in Mars surface (by consuming a Nasa API)

Notifications You must be signed in to change notification settings

costalopes71/PlanetaryMission

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlanetaryMission


Tabela de conteúdo

  1. Introdução
  2. Regras de negócio
  3. Highlights do projeto
  4. Pré-requisitos
  5. Como executar?
  6. Endpoints
  7. Como testar
  8. Tech/Framework utilizado

Introdução

Projeto tem por finalidade reproduzir a idéia de uma sonda espacial pousando em um planeta e podendo mover-se na superfície. Um típico exemplo seria um Rover da Nasa movendo-se na superfície de Marte a partir de comandos enviados da Terra. É exatamente este exemplo que o projeto tenta reproduzir.

O projeto é um web service, basicamente, ele representa o Universo com seus planetas e as sondas espaciais. O webservice não depende de banco de dados, exatamente para que não haja nenhuma dependência que não seja executar o projeto.

Permite: listar os planetas existentes no universo, listar as sondas cadastradas, cadastrar uma sonda, pesquisar uma sonda, pousar uma sonda em um planeta, mover a sonda pela superfície do planeta.

Regras de negócio

  • uma mesma sonda não pode pousar duas vezes
  • uma sonda não pode pousar em um planeta inexistente
  • uma sonda não pode pousar além da superfície do planeta
  • uma sonda não pode pousar em uma posição da superfície já ocupada
  • um sonda não pode colidar com outra sonda durante seu trajeto.
  • uma mesma sonda não pode ser registrada duas vezes

Highlights do projeto

  • As URLs que a sonda manda de volta para a "Terra" são fotos de Rovers da Nasa que estão realmente na superfície de Marte e elas são MUITO legais!!! XD . Para tanto é consumida uma API da Nasa que pode ser encontrada aqui.
  • A possibilidade de simular comandos enviados da "Terra" para uma sonda no espaço e a resposta dessa sonda.
  • Um exemplo adolescente de divisão entre camadas (DAO, BO e Model) e exemplo de webservices REST usando as APIs Jersey e Jackson.

Pré-requisitos

Não existe nenhuma configuração especial ou pré-requisito para o projeto rodar!!! Basta executar de uma das maneiras explicadas na seção abaixo.

Como executar?

  • Usando DOCKER Abra o prompt de comando, power shell ou bash e execute o comando:

docker pull costalopes/planetarymissionws -> para obter a imagem

docker run -d -p 8080:8080 costalopes/planetarymissionws -> obter a imagem e executar

Obs: a imagem nada mais é do que uma imagem de um Tomcat 9 com o arquivo war deployado nele, a porta do container exposta para o host é a 8080. =)

  • Usando ECLIPSE Basta clonar o projeto ou baixar o arquivo WAR que esta na seção release e importá-lo no eclipse.

  • Diretamente no TOMCAT Basta copiar o arquivo planetarymission.war para a pasta webapps do seu Tomcat e iniciar o Tomcat! =D (autodeploy flag deve estar com o valor true)

Endpoints

AÇÃO URL VERBO HTTP
listar planetas http://localhost:8080/PlanetaryMission/rest/planet GET
listar sondas http://localhost:8080/PlanetaryMission/rest/probe GET
cadastrar sonda http://localhost:8080/PlanetaryMission/rest/probe POST
procurar sonda http://localhost:8080/PlanetaryMission/rest/probe/{id da sonda a procurar} GET
pousar sonda http://localhost:8080/PlanetaryMission/rest/probe/land POST
mover sonda http://localhost:8080/PlanetaryMission/rest/probe/move POST
AÇÃO REQUEST RESPONSE
listar planetas { "planetId" = 1001, "name" = "Mars" }
cadastrar sonda { "name" : "Brazils Probe 234R" } mensagem texto de sucesso ou erro
pousar sonda { "equipmentId" : 1928912, "planetId" : 1001, "positionX" : 5, "positionY" : 5 } objeto sonda em json
mover sonda { "equipmentId" : 2378237, "movement" : "R|R|M|M" } mensagem texto de sucesso ou erro

Obs: o atributo movement é uma string onde os movimentos devem ser separados por pipe |. Movimentos possíveis: R (direita), L (esquerda), M (a frente).

Como testar?

Basta executar a suíte de testes br.com.elo7.planetarymission.model.test.PlanetaryMissionTestSuite

Tech/Framework utilizado

  • Java 8
  • Webservices RESTFULL
  • Jersey e Jackson
  • Maven
  • JUnit 4
  • Service Jersey consumindo API

About

A planetary mission to the space, where you can land a probe on a planet surface and move those probes around. Every time the probe is moved it takes a photo of Mars surface and send it back to "Earth". Photos are real Mars photos taken by the Nasa Rovers in Mars surface (by consuming a Nasa API)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages