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){
}