O sistema possui cinco entidades (Cliente, Destinatário, Entrega, Ocorrencia e StatusEntrega)
obs.: StatusEntrega é uma enum
O programa funciona como um sistema de entregas onde o cliente insere seu nome, e-mail e telefone. Assim, é possível solicitar uma entrega que possui um Status (Pendente, finalizada ou cancelada), uma data de pedido e outra de finalização, a taxa, destinatário, ocorrencia e o cliente que fez o pedido.
A Ocorrencia é útil para colocar uma descrição de um eventual problema ou observação durante a entrega e/ou cancelamento de uma entrega. Assim, a ocorrencia está vinculada a uma entrega, possuindo uma descrição e a data do registro.
Um ponto interessante dessa API é a criação de classes para validação de exceções personalizadas e classes de validação.
Por exemplo: A classe Problema é responsável por indicar o Status HTTP de um erro de validação, retornar a data e hora, um título, uma lista com os campos que não passaram da validação. Campos é uma subclasse que retorna o nome do campo e a menssagem vinculada a seu erro de validação ("não pode ser nulo", "não pode estar em branco"...)
- Cliente: Criar, Listar todos, Obter por id, Atualizar e deletar
- Entrega: Criar, Listar, Obter por id, Atualizar (seu status)
- Ocorrencia: Criar (registrar), listar ocorrencias
Camada | Função |
---|---|
Assembler | Conversão de objetos |
ExceptionHandler | Tratar erros e exceções |
Model | Inserção/recepção de atributos |
Config | Configurar o bean |
Controller | Configurar verbos e status HTTP |
Domain/Exception | Atribuições para a camada de exceptionHandler |
Domain/Model | Inserir entidades com suas anotações, validações e tipos |
Domain/Repository | Gerenciamento das entidades |
Domain/Service | Regras de negócio do sistema e ações CRUD |
O sistema possui um pacote de migrations, assim ele mesmo cria seu Banco de Dados, Schemas e Tabelas
A interface ValidationGroups valida os atributos marcados com @NotNull