package desafio.arquivo;
public class Veiculo {
private String placa;
private String modelo;
private String cor;
private int ano;
public Veiculo(String placa, String modelo, String cor, int ano) {
this.placa = placa;
this.modelo = modelo;
this.cor = cor;
this.ano = ano;
}
public String getPlaca() {
return placa;
}
public String getModelo() {
return modelo;
}
public String getCor() {
return cor;
}
public int getAno() {
return ano;
}
}
package br.com.alura.screenmatch.modelos;
import br.com.alura.screenmatch.excecao.ErroDeConversaoDeAnoException;
import com.google.gson.annotations.SerializedName;
public class Titulo implements Comparable<Titulo> {
private String nome;
private int anoDeLancamento;
private boolean incluidoNoPlano;
private double somaDasAvaliacoes;
private int totalDeAvaliacoes;
private int duracaoEmMinutos;
public Titulo(String nome, int anoDeLancamento) {
this.nome = nome;
this.anoDeLancamento = anoDeLancamento;
}
public Titulo(TituloOmdb tituloOmdb) {
this.nome = tituloOmdb.title();
if(tituloOmdb.year().length() > 4){
throw new ErroDeConversaoDeAnoException("Não conseguir converter o ano porque tem mais de 4 caracteres.");
}
this.anoDeLancamento = Integer.valueOf(tituloOmdb.year());
this.duracaoEmMinutos = Integer.valueOf(tituloOmdb.runtime().replace(" min", ""));
}
public int getTotalDeAvaliacoes(){
return totalDeAvaliacoes;
}
public String getNome() {
return nome;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public void exibeFichaTecnica(){
System.out.println("""
******************************************************
* Nome do filme: %s
* Ano de lancamento: %d
******************************************************
""".formatted(nome, anoDeLancamento));
}
public void avalia(double nota){
somaDasAvaliacoes += nota;
totalDeAvaliacoes++;
}
public double pegaMedia(){
return somaDasAvaliacoes / totalDeAvaliacoes;
}
@Override
public int compareTo(Titulo outroTitulo) {
return this.getNome().compareTo(outroTitulo.getNome());
}
@Override
public String toString() {
return "{" +
"nome='" + nome + '\'' +
", anoDeLancamento=" + anoDeLancamento +
", duracaoEmMinutos=" + duracaoEmMinutos +
'}';
}
}
package desafio.arquivo;
import br.com.alura.screenmatch.modelos.Titulo;
import com.google.gson.*;
import java.io.*;
public class Principal {
public static void main(String[] args) throws IOException {
/*Crie um programa em Java que escreva a seguinte mensagem em um arquivo chamado "arquivo.txt": "Conteúdo a ser gravado no arquivo." Utilize as classes do pacote java.io.*/
FileWriter fw = new FileWriter("arquivo.txt");
fw.write("Conteúdo a ser gravado no arquivo.");
fw.close();
/*Defina uma classe chamada Titulo com os atributos necessários. Em seguida, crie um programa que instancia um objeto Titulo, serializa esse objeto para JSON usando a biblioteca Gson e imprime o resultado.*/
Titulo titulo = new Titulo("Matrix", 2001);
/*Modifique o programa anterior para que o JSON gerado seja formatado de maneira mais elegante. Utilize o método setPrettyPrinting para alcançar esse resultado.*/
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println(gson.toJson(titulo));
/*Defina uma classe chamada Veiculo com os atributos necessários. Em seguida, crie um programa que instancia um objeto Veiculo, serializa esse objeto para JSON usando a biblioteca Gson e imprime o resultado.*/
Veiculo veiculo = new Veiculo("AAA-1A80", "FX-100", "Prata", 2026);
System.out.println(gson.toJson(veiculo));
}
}
Resultado Esperado: