Skip to content

Commit

Permalink
Merge pull request #25 from ufcg-lsd/updating-to-java-21
Browse files Browse the repository at this point in the history
Updating to java 21
  • Loading branch information
joaovitorsl authored Oct 1, 2024
2 parents 8d871c4 + a312954 commit e7830b2
Show file tree
Hide file tree
Showing 78 changed files with 2,291 additions and 1,928 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "automatic"
}
136 changes: 96 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,72 +1,128 @@
# Ambiente de Estudo ao Pensamento Computacional 1.0
# 📚 ComPensar

## Iniciando
**Ambiente de Estudo ao Pensamento Computacional 1.1**

Essas instruções vão ajudar você a utilizar o projeto e rodar em sua máquina local para desenvolvimento e testes.
**ComPensar** é uma plataforma voltada para auxiliar o ensino de **Pensamento Computacional (PC)** no contexto da educação básica, com foco na resolução de problemas matemáticos. O sistema oferece ferramentas que permitem a criação, avaliação e publicação de questões alinhadas com as competências do PC, promovendo o desenvolvimento do raciocínio lógico e da capacidade de abstração dos alunos.

### Pré-Requisitos
O Pensamento Computacional é uma habilidade fundamental na educação moderna, pois facilita a aplicação de técnicas e conceitos computacionais para resolver problemas de diversas áreas, incluindo a matemática. Através do ComPensar, educadores podem avaliar o progresso dos alunos em competências essenciais como a decomposição de problemas, reconhecimento de padrões, abstração e criação de algoritmos.

É necessário que você execute os comandos contidos no seguinte arquivo para utilizar um banco de dados MongoDB. Pode ser utilizado ainda uma interface MongoDB, como o Robo3T, para melhor interação com os dados.
## ⚙️ Tecnologias utilizadas

```
aepc/backend/src/main/resources/import.sql
```
| Tecnologia | Versão |
| --------------------------------- | ------- |
| [Node.js](https://nodejs.org/en/) | v22.2.0 |
| [Java](https://www.java.com/) | v21 |
| Spring Boot | v3.3.3 |
| MongoDB | v7.0.2 |

### Executar
Para executar o projeto execute como JavaApplication a seguinte classe:
## 🚀 Como levantar o projeto?

```
aepc/backend/src/main/java/springboot/AepcApplication.java
```
- **Clone o repositório:**

## Testando a Aplicação
```bash
git clone https://github.com/ufcg-lsd/compensar-legacy.git
```

### Segurança
### Frontend

A segurança nos endpoints está implemetada utilizando HTTP Basic e busca dos usuários no banco de dados utilizando o serviço que implementa UserDetailsService, do Spring Security. Cada usuário possui uma determinada permissão.
1. **Instale as dependências:**

Usuários para testes pré-defindos com um tipo de permissão se encontram também no seguinte arquivo:
```bash
cd frontend
npm install
```

```
aepc/backend/src/main/resources/import.sql
```
2. **Execute a aplicação:**

Obs.: Há endpoints específicos para criação de um usuário, e de adição de uma permissão a um usuário (Mais a frente)
```bash
npm start
```

### Backend

Para login e acesso aos endpoints, é utilizado o email e senha de três digitos. No mesmo arquivo se encontram a inserção de alguns usuários exemplo.
1. **Instale as dependências:**

```bash
cd backend
mvn clean install # Se os testes falharem e você queira rodar assim mesmo, adicione a flag -DskipTests
```

### API REST
Para obter uma visualização interativa da API com os endpoints acesse, localmente, o seguinte endereço:
2. **Execute a aplicação:**

```
http://localhost:8080/swagger-ui.html
```
```bash
mvn spring-boot:run
```

É possível realizar requisições para testar os endpoints utilizando a interação citada acima, se preferir, existem outras ferramentas (Ex.: Postman).
## 🛠️ Arquitetura

### Endpoint Base
Abaixo está o diagrama da arquitetura geral da aplicação:

```
http://localhost:8080/api/...
```
![Diagrama de Arquitetura](./docs/images/architecture-diagram.png)

### Testes de Unidade
### Diagrama de Caso de Uso

Para execução dos testes de unidade execute como JunitTest o seguinte pacote:
O diagrama de caso de uso ilustra as interações entre os usuários e o sistema:

![Diagrama de Caso de Uso](./docs/images/use-case-diagram.png)

### 📚 Documentação Adicional

Para mais detalhes sobre a aplicação, como a listagem completa dos requisitos funcionais e não funcionais, acesse a pasta [**/docs**](./docs). Você pode explorar os seguintes conteúdos:

- [Listagem de Requisitos](./docs/requirements.md)


<!-- ## 🧪 Como testar

1. **Testes unitários:**

```bash
npm test
```

2. **Cobertura de testes:**

```bash
npm run coverage
```

3. **Testes end-to-end:**
```bash
npm run e2e
``` -->

## 🏗️ Estrutura de pastas

```plaintext
├── frontend # Diretório contendo o projeto AngularJS (Está pra ser reescrito em Next.JS em outro repositório)
├── backend # Diretório contendo o projeto Spring
```
aepc/backend/src/test/java/springboot/aepcinitializr
```

## Construído Com
<!-- ## 📄 Licença

Este projeto está sob a licença [MIT](LICENSE).

### Dicas Adicionais:

* [SpringBoot](https://spring.io/projects/spring-boot) - O Framework Web usado
* [Maven](https://maven.apache.org/) - Gerenciamento de dependências
* [Swagger](https://swagger.io/) - Construção de API
1. **Badges**: Você pode adicionar badges no topo para status do build, cobertura de testes, últimas versões, etc.
2. **Screenshots**: Inclua capturas de tela para ilustrar o funcionamento da aplicação.
3. **Guia de Contribuição**: Se você espera contribuições externas, inclua uma seção explicando como as pessoas podem contribuir. -->

## Variáveis que possivelmente precisarão de modificação
- URI do mongodb:
`spring.data.mongodb.uri` em `backend/src/main/resources/application-<dev_or_prod>.properties`

> P: "Mas eu substituo pelo quê?"
>
> R: Se por algum motivo não conseguir acesso ao BD, colocar o uri do (novo) banco de dados que queira apontar.


- Google Sign-In Client ID:
- backend: `CLIENT_ID` na classe `GoogleIdVerifier`
- frontend: frontend > index.html em dois lugares
- `<meta name="google-signin-client_id" content="<aqui>" data-callback="onSignIn" />`
- `<div id="g_id_onload" data-client_id="<aqui>" />`

> P: "Mas eu substituo pelo quê?"
>
> R: Se por algum motivo a autenticação não funcionar, talvez as credenciais estejam vencidas ou inacessíveis por algum motivo. Nesse caso, criar novas usando o Google Cloud e substituir.
116 changes: 39 additions & 77 deletions backend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,17 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<version>3.3.3</version>
<relativePath />
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<java.version>21</java.version>
</properties>

<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
Expand All @@ -35,48 +34,14 @@
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<!-- Security oauth dependency -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.4.Final</version>
</dependency>
<!-- Springboot Starter security dependency -->

<!-- Hibernate OGM MongoDB dependency -->
<dependency>
<groupId>org.hibernate.ogm</groupId>
<artifactId>hibernate-ogm-mongodb</artifactId>
<version>5.3.1.Final</version>
</dependency>
<!-- Starter-Web dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Security dependency -->

<!-- MongoDB dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>3.3.0</version>
</dependency>
<!-- Spring Security confing dependency -->

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- Devtools dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
Expand All @@ -94,64 +59,63 @@
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.30.2</version>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<!-- Hibernate Validator -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<!-- Hibernate OGM MongoDB -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
<groupId>org.hibernate.ogm</groupId>
<artifactId>hibernate-ogm-mongodb</artifactId>
<version>5.4.1.Final</version>
<exclusions>
<exclusion>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.6.0</version>
</dependency>

<!-- Google API Client -->
<dependency>
<groupId>net.htmlparser.jericho</groupId>
<artifactId>jericho-html</artifactId>
<version>3.1</version>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.33.0</version>
</dependency>
<!-- Jericho HTML Parser -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
<groupId>net.htmlparser.jericho</groupId>
<artifactId>jericho-html</artifactId>
<version>3.4</version>
</dependency>

<!-- JJWT (JSON Web Token) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>2.9.2</version>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.2.0.RELEASE</version>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>


</dependencies>

<build>
Expand All @@ -162,6 +126,4 @@
</plugin>
</plugins>
</build>


</project>
Loading

0 comments on commit e7830b2

Please sign in to comment.