Olá!
Ao tentar importar o abrigo, em deparo com o erro: "Id ou nome do abrigo não encontado!". Comparei minha classe com o da aula e as duas estão idênticas. Deixo logo abaixo o codigo da minha classe Pet.Service:
package br.com.alura.service;
import br.com.alura.client.ClientHttpConfiguration;
import br.com.alura.domain.Pet;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.http.HttpResponse;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class PetService {
private ClientHttpConfiguration client;
public PetService(ClientHttpConfiguration cliente){
this.client = cliente;
}
public void listarPetsDoAbrigo() throws IOException, InterruptedException {
System.out.println("Digite o id ou nome do abrigo:");
String idOuNome = new Scanner(System.in).nextLine();
String uri = "http://localhost:8080/abrigos/" + idOuNome + "/pets";
HttpResponse<String> response = client.dispararRequisicaoGet(uri);
int statusCode = response.statusCode();
if (statusCode == 404 || statusCode == 500) {
System.out.println("ID ou nome não cadastrado!");
}
String responseBody = response.body();
Pet[] pets = new ObjectMapper().readValue(responseBody, Pet[].class);
List<Pet> petList = Arrays.stream(pets).toList();
System.out.println("Pets cadastrados:");
for (Pet pet : petList) {
long id = pet.getId();
String tipo = pet.getTipo();
String nome = pet.getNome();
String raca = pet.getRaca();
int idade = pet.getIdade();
System.out.println(id + " - " + tipo + " - " + nome + " - " + raca + " - " + idade + " ano(s)");
}
}
public void importarPetsDoAbrigo() throws IOException, InterruptedException {
System.out.println("Digite o id ou nome do abrigo:");
String idOuNome = new Scanner(System.in).nextLine();
System.out.println("Digite o nome do arquivo CSV:");
String nomeArquivo = new Scanner(System.in).nextLine();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(nomeArquivo));
} catch (IOException e) {
System.out.println("Erro ao carregar o arquivo: " + nomeArquivo);
}
String line;
while ((line = reader.readLine()) != null) {
String[] campos = line.split(",");
String tipo = campos[0];
String nome = campos[1];
String raca = campos[2];
int idade = Integer.parseInt(campos[3]);
String cor = campos[4];
Float peso = Float.parseFloat(campos[5]);
Pet pet = new Pet(tipo, nome, raca, idade, cor, peso);
String uri = "http://localhost:8080/abrigos/" + idOuNome + "/pets:";
HttpResponse<String> response = client.dispararRequisicaoPost(uri, pet);
int statusCode = response.statusCode();
String responseBody = response.body();
if (statusCode == 200) {
System.out.println("Pet cadastrado com sucesso: " + nome);
} else if (statusCode == 404) {
System.out.println("Id ou nome do abrigo não encontado!");
break;
} else if (statusCode == 400 || statusCode == 500) {
System.out.println("Erro ao cadastrar o pet: " + nome);
System.out.println(responseBody);
break;
}
}
reader.close();
}
}
O domain Pet está assim:
package br.com.alura.domain;
public class Pet {
public Pet() {
}
public Pet(String tipo, String nome, String raca, Integer idade, String cor, Float peso){
this.tipo = tipo;
this.nome = nome;
this.raca = raca;
this.idade = idade;
this.cor = cor;
this.peso = peso;
}
private Long id;
private String tipo;
private String nome;
private String raca;
private Integer idade;
private String cor;
private Float peso;
public Long getId() {
return id;
}
public String getTipo() {
return tipo;
}
public String getNome() {
return nome;
}
public String getRaca() {
return raca;
}
public Integer getIdade() {
return idade;
}
public Float getPeso() {
return peso;
}
public String getCor() {
return cor;
}
}