Este projeto implementa um sistema completo de gerenciamento de filmes, usuários, avaliações e listas. O núcleo do sistema é um banco de dados de baixo nível construído em Java, utilizando arquivos de acesso aleatório para persistência.
A performance para buscas é otimizada através de uma estrutura de dados de Hash Extensível, que serve como motor para indexação primária (por ID) e uma Árvore Binária B+ para a indexação secundária (para as relações entre as entidades).
Toda a lógica do banco de dados é exposta através de uma API RESTful, construída com o framework Spring Boot. Para facilitar os testes e a demonstração, o projeto oferece duas interfaces de teste:
- Swagger UI: Uma documentação interativa completa para desenvolvedores.
- Página HTML Simples: Uma interface de usuário básica para demonstrar o consumo da API por um frontend.
O sistema oferece um gerenciamento completo (CRUD - Criar, Ler, Atualizar, Deletar) para as seguintes entidades:
-
Usuários:
- Criação, busca por ID, alteração e exclusão de usuários.
-
Filmes:
- Criação de filmes com atributos detalhados (título, data, diretores, atores, etc.).
- Busca de filmes por ID e por parte do título.
- Alteração e exclusão de filmes.
-
Avaliações (Reviews):
- Criação de uma avaliação de um usuário para um filme.
- Busca de todas as avaliações de um usuário ou de um filme.
- Exclusão de uma avaliação.
-
Listas:
- Criação de listas padrão ("Favoritos", etc.) e personalizadas para um usuário.
- Adição e remoção de filmes a uma lista.
- Busca de todas as listas de um usuário, com os respectivos filmes.
- Exclusão de uma lista.
- Backend: Java 21, Spring Boot
- Banco de Dados: Implementação customizada com Hash Extensível e Arquivos de Acesso Aleatório.
- Build & Dependências: Apache Maven
- Documentação da API: Springdoc OpenAPI 3 (Swagger UI)
- Ana Paula Natsumi Yuki
- Gabriel Henrique Pereira Carvalhaes
- Lucas Teixeira Reis
- Theo Diniz Viana
Siga os passos abaixo para compilar o código-fonte e iniciar o servidor da API.
- JDK (Java Development Kit) - Versão 21 ou superior.
- Apache Maven - Versão 3.8 ou superior.
Nota: O projeto inclui o Maven Wrapper (
mvnw), que garante a consistência do ambiente de build e é a forma recomendada de execução.
-
Clone o Repositório
Se ainda não o fez, clone o projeto para a sua máquina local:
git clone <URL_DO_SEU_REPOSITORIO>
-
Navegue para a Pasta Raiz do Projeto
Este é o passo mais importante. Todos os comandos a seguir devem ser executados a partir da pasta raiz, que contém o arquivo
pom.xml.cd <NOME_DA_PASTA_DO_PROJETO>
-
Execute a Aplicação com o Maven Wrapper
O
mvnw(Maven Wrapper) garante que a versão correta do Maven seja usada. Execute o comando apropriado para o seu sistema operacional:-
No Linux ou macOS:
./mvnw spring-boot:run
Se receber um erro de "Permissão negada", execute
chmod +x mvnwprimeiro para tornar o script executável. -
No Windows (Prompt de Comando ou PowerShell):
.\mvnw.cmd spring-boot:run
Após a execução, o Maven irá compilar o projeto e iniciar o servidor. A aplicação estará pronta quando vir a mensagem
Tomcat started on port(s): 8080 (http)no final do log. -
Existem duas formas de testar a API depois que a aplicação estiver rodando.
Abra o navegador e acesse o seguinte endereço para interagir com a interface gráfica simples: http://localhost:8080/index.html
Abra o navegador e acesse o seguinte endereço para visualizar a documentação completa e testar todos os endpoints da API: http://localhost:8080/swagger-ui/index.html
Para validar o ciclo de vida dos dados, siga os passos abaixo (seja pelo Swagger ou pelo index.html):
- Crie um usuário (
POST /api/users). Guarde o ID retornado. - Crie um filme (
POST /api/filmes). Guarde o ID retornado. - Crie as listas padrão para o seu usuário (
POST /api/listas/user/{userId}/init-padrao). - Adicione o filme a uma das listas (
POST /api/listas/{listaId}/filmes/{filmeId}). - Verifique se o filme foi adicionado corretamente (
GET /api/listas/user/{userId}). - Explore as outras rotas
GET,DELETEe de alteração para validar todo o sistema.