1
resposta

Solução questão 6

package com.example.demo;

import com.example.demo.model.Assinatura;
import com.example.demo.model.Produto;
import com.example.demo.model.Servico;
import com.example.demo.service.Avaliacao;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

@SpringBootApplication
public class AvaliadordeItens implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(AvaliadordeItens.class, args);
    }

    @Override
    public void run(String... args) throws Exception {

        Produto produto = new Produto("Smartphone Samsung galaxy S24+",4500);
        Avaliacao <Produto> avaliacaoProduto = new Avaliacao<>(produto, 9, "Ótimo custo benefício");

        Servico servico = new Servico("Instalação de fibra ótica",500);
        Avaliacao <Servico> avaliacaoServico = new Avaliacao<>(servico, 6, "Serviço com média qualidade");

        Assinatura assinatura = new Assinatura("Netflix",49);
        Avaliacao <Assinatura> avaliacaoAssinatura = new Avaliacao<>(assinatura, 7, "Assinatura boa, mas poucas opções de ");

        List<Avaliacao<?>> avaliacoesList = new ArrayList<>();
        avaliacoesList.add(avaliacaoProduto);
        avaliacoesList.add(avaliacaoServico);
        avaliacoesList.add(avaliacaoAssinatura);

        ObjectMapper objectMapper = new ObjectMapper();
        try (FileWriter avaliacoes = new FileWriter("Avaliacoes.json")) {
            objectMapper.writerWithDefaultPrettyPrinter().writeValue(avaliacoes, avaliacoesList);
        }
    }
}
package com.example.demo.service;

public class Avaliacao<T> {
    private T item;
    private int nota;
    private String comentario;

    public Avaliacao(T item, int nota, String comentario) {
        this.item = item;
        this.nota = nota;
        this.comentario = comentario;
    }
    public T getItem() {
        return item;
    }
    public int getNota() {
        return nota;
    }
    public String getComentario() {
        return comentario;
    }
    @Override
    public String toString() {
        return "Avaliacao{" +
                "item=" + item +
                ", nota=" + nota +
                ", comentario='" + comentario + '\'' +
                '}';
    }
}
package com.example.demo.model;

import com.example.demo.service.Avaliacao;

public record Assinatura(String nome, float valor) {
}
package com.example.demo.model;

import com.example.demo.service.Avaliacao;

public record Produto(String Nome, float valor) {
}
package com.example.demo.model;

import com.example.demo.service.Avaliacao;

public record Servico (String nome, float valor){
}
1 resposta

Boa tarde, Glauber! Tudo bem?

Dei uma olhada no seu código e ele está bem organizado e condizente com o que foi passado pelo instrutor, e isso mostra o seu comprometimento com o curso.

Caso surjam quaisquer dúvidas eu estarei à sua disposição.

Abraços e bons estudos!