1
resposta

Compartilhando minha resolução

public class Pet {
public Pet(String tipo, Float peso, String nome, String raca, Integer idade, String cor) {
    this.tipo = tipo;
    this.peso = peso;
    this.nome = nome;
    this.raca = raca;
    this.idade = idade;
    this.cor = cor;
}

private String tipo;
private String nome;
private String raca;
private Integer idade;
private String cor;
private Float peso;

}

public class PetService {

private ClientHttpConfiguration client;

public PetService(ClientHttpConfiguration client) {
    this.client = client;
}

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.dispararRequeisicaoGet(uri);
    int statusCode = response.statusCode();
    if (statusCode == 404 || statusCode == 500) {
        System.out.println("ID ou nome não cadastrado!");
    }
    String responseBody = response.body();
    JsonArray jsonArray = JsonParser.parseString(responseBody).getAsJsonArray();
    System.out.println("Pets cadastrados:");
    for (JsonElement element : jsonArray) {
        JsonObject jsonObject = element.getAsJsonObject();
        long id = jsonObject.get("id").getAsLong();
        String tipo = jsonObject.get("tipo").getAsString();
        String nome = jsonObject.get("nome").getAsString();
        String raca = jsonObject.get("raca").getAsString();
        int idade = jsonObject.get("idade").getAsInt();
        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, peso, nome, raca, idade, cor);

        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();
}
}
1 resposta

Oi, Bruno! Como vai?

Obrigada por compartilhar seu código com a comunidade Alura. E parabéns por praticar! ✨

Gostei da sua abordagem ao implementar a lógica de importação e listagem de pets. O código tá bem estruturado e aborda de maneira eficiente a integração com a API do abrigo.

Ícone de sugestão Para saber mais:

Para entender melhor o tratamento de exceções como IOException e InterruptedException, bem como a manipulação de dados no código apresentado, você pode consultar as seguintes documentações:

  • Classe IOException: Para saber mais sobre o tratamento de erros de entrada e saída em Java, consulte a documentação da classe IOException.
  • Classe InterruptedException: Para entender como lidar com interrupções de threads em Java, confira a documentação da classe InterruptedException.
  • Manipulação de Strings: A conversão de dados de entrada, como strings para tipos numéricos, pode ser realizada utilizando métodos da classe String.
    Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!