Skip to content

Commit

Permalink
Ajustes criticos no projeto com a adição de classe abstrata
Browse files Browse the repository at this point in the history
  • Loading branch information
durvalprintes committed Jul 25, 2022
1 parent b6368a2 commit 7d755cd
Show file tree
Hide file tree
Showing 13 changed files with 138 additions and 240 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,16 @@ Exemplos da saída atual:

## 🔧 Desenvolvimento <a name = "desenvolvimento"></a>

Conteúdo a partir da Aula 03:
Conteúdo a partir da Aula 03 e refatorações:
- [x] Reestruturação do projeto para consumir a Api da MARVEL.
- [x] Sobrescrita do método de saída no terminal com informacões da nova Api;
- [x] Sobrescrita do método de geração de Stickers para imagens da nova Api;
- [x] Uso de uma classe de exceção personalizado;
- [x] Automatizar a criação da instância da interface <strong>StickerApi</strong> de acordo com o _endpoint_ a ser consumido;
- [ ] Upgrade da JDK do projeto, para implementar casos de uso com classes <strong>Record</strong>;
- [x] Upgrade da JDK do projeto, versao 17, para implementar casos de uso com classes <strong>Record</strong>;
- [x] Uso de uma classe abstrata, para separar os metodos relacionados aos dados do consumo das Apis;
- [ ] Adição de campo imagem em um modelo utilizado em uma terceira Api, desenvolvida em uma Challange de Back-end, para ser utilizada como um microserviço;
- [ ] Criacao da classe de implementacao para consumo desta última;


## ⛏️ Ferramentas <a name = "ferramentas"></a>
Expand Down
12 changes: 8 additions & 4 deletions data/rating.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
[
{
"id": "tt0468569",
"myRating": 10
"title": "The Boys",
"rating": 9
},
{
"id": "tt0068646",
"myRating": 5
"title": "Better Call Saul",
"rating": 10
},
{
"title": "Stranger Things",
"rating": 9
}
]
11 changes: 8 additions & 3 deletions src/main/java/com/alura/App.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.alura;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import com.alura.exception.StickerApiException;
import com.alura.model.Endpoint;
import com.alura.service.StickerApi;
Expand All @@ -23,11 +27,12 @@ private static StickerApi getInstance(Endpoint endpoint) {

public static void main(String[] args) {
try {
StickerApi api = getInstance(Endpoint.CHARACTERS);
api.limitData(1);
StickerApi api = getInstance(Endpoint.TOP_250_TV);
api.limitData(10);
api.updateDataWithInput(new FileInputStream(new File("data/rating.json")));
api.printData();
api.generateStickers();
} catch (StickerApiException e) {
} catch (StickerApiException | FileNotFoundException e) {
e.printStackTrace();
}
}
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/com/alura/model/ContentSticker.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.alura.model;

public record ContentSticker(String title, String urlImage, Double rating, Double myRating) {
import lombok.Builder;

@Builder
public record ContentSticker(String title, String urlImage, String rating, String myRating) {

}
24 changes: 0 additions & 24 deletions src/main/java/com/alura/model/imdb/Movie.java

This file was deleted.

20 changes: 0 additions & 20 deletions src/main/java/com/alura/model/imdb/Poster.java

This file was deleted.

11 changes: 0 additions & 11 deletions src/main/java/com/alura/model/imdb/Rating.java

This file was deleted.

15 changes: 0 additions & 15 deletions src/main/java/com/alura/model/marvel/Character.java

This file was deleted.

16 changes: 0 additions & 16 deletions src/main/java/com/alura/model/marvel/PaginateCharacters.java

This file was deleted.

72 changes: 72 additions & 0 deletions src/main/java/com/alura/service/AbstractDataApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.alura.service;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import com.alura.exception.StickerApiException;
import com.alura.model.ContentSticker;
import com.alura.model.RatingContent;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@SuppressWarnings("squid:S106")
public abstract class AbstractDataApi implements StickerApi {

private List<ContentSticker> data;

@Override
public void limitData(int max) {
this.data = this.data.subList(0, max);
}

public void printDataField(String format, String field) {
System.out.println(format + field + "\033[0m");
}

@Override
public void printData() {
for (ContentSticker content : this.data) {
printDataField("\033[1;37m", "\nTitulo: " + content.title());
printDataField("\033[1;37m", "Image: " + content.urlImage());
if (Optional.ofNullable(content.rating()).isPresent() && !content.rating().isBlank()) {
printDataField("\033[0;105m", "Classificacao: " + content.rating());
printDataField("\033[1;33m", "\u2605 ".repeat((int) Math.round(Double.valueOf(content.rating()))));
} else {
printDataField("\033[0;105m", "Sem classificacao");
}
Optional.ofNullable(content.myRating()).ifPresent(
rating -> printDataField("\033[1;31m", "Minha nota: " + rating));
}
}

@Override
public void updateDataWithInput(InputStream inputRating) throws StickerApiException {
try {
List<RatingContent> jsonRating = new ObjectMapper().readValue(inputRating,
new TypeReference<List<RatingContent>>() {
});
if (!jsonRating.isEmpty()) {
setData(getData().stream()
.map(content -> {
Optional<RatingContent> personalRating = jsonRating.stream()
.filter(rating -> rating.title().equals(content.title()))
.findFirst();
return personalRating.isPresent() ? new ContentSticker(content.title(), content.urlImage(),
content.rating(), personalRating.get().rating().toString()) : content;
})
.collect(Collectors.toList()));
}
} catch (IOException e) {
throw new StickerApiException("Erro ao inserir as notas personalizadas.", e);
}
}

}
5 changes: 0 additions & 5 deletions src/main/java/com/alura/service/StickerApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import com.alura.exception.StickerApiException;
import com.alura.model.ParamSticker;

@SuppressWarnings("squid:S106")
public interface StickerApi {

default String jsonFromGet(String url) throws StickerApiException {
Expand All @@ -38,10 +37,6 @@ default String jsonFromGet(String url) throws StickerApiException {
return null;
}

default void printField(String format, String field) {
System.out.println(format + field + "\033[0m");
}

void limitData(int max);

void printData();
Expand Down
Loading

0 comments on commit 7d755cd

Please sign in to comment.