package br.com.desafiobuscarporcep.principal;
import br.com.desafiobuscarporcep.consulta.ConsultaCep;
import br.com.desafiobuscarporcep.geradorarquivo.GeradorDeArquivo;
import br.com.desafiobuscarporcep.record.Endereco;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
ConsultaCep consultaCep = new ConsultaCep();
String cep = "";
while(!cep.equalsIgnoreCase("s")) {
System.out.println("Digite CEP para consulta, ou alguma letra para sair.");
cep = teclado.nextLine();
try {
if(!cep.matches("[0-9]*")){
break;
}
Endereco novoEndereco = consultaCep.buscaCep(cep);
if(novoEndereco.cep() == null)
System.out.println("Cep não cadastrado!!!");
System.out.println(novoEndereco);
GeradorDeArquivo gerador = new GeradorDeArquivo();
gerador.salvaJson(novoEndereco);
} catch (RuntimeException | IOException e) {
System.out.println(e.getMessage());
} finally {
System.out.println("Finalizando a aplicação!!!\n");
}
}
}
}
import br.com.desafiobuscarporcep.record.Endereco;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeradorDeArquivo {
public void salvaJson(Endereco endereco) throws IOException {
try {
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
FileWriter escrita = new FileWriter(endereco.cep() + ".json");
escrita.write(gson.toJson(endereco));
escrita.close();
} catch (IOException e){
System.out.println("Erro ao gerar arquivo!! " + e.getMessage());
}
}
}
import br.com.desafiobuscarporcep.record.Endereco;
import com.google.gson.Gson;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsultaCep {
public Endereco buscaCep(String cep){
URI endereco = URI.create("https://viacep.com.br/ws/" + cep + "/json");
HttpRequest request = HttpRequest.newBuilder()
.uri(endereco)
.build();
try {
HttpResponse<String> response = HttpClient
.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
return new Gson().fromJson(response.body(), Endereco.class);
} catch (Exception e) {
throw new RuntimeException("Cep sem endereço!!!!");
}
}
}
package br.com.desafiobuscarporcep.record;
public record Endereco(String cep,
String logradouro,
String localidade,
String uf) {
@Override
public String toString() {
return "Endereco ( " +
"cep = " + cep +
", logradouro = " + logradouro +
", localidade = " + localidade +
", uf = " + uf + " )";
}
}
Boa noite! Gostaria de melhorar o código porém , preciso de uma ajuda. Na classe Principal consegui veificar se o novoEndereco é null, mas infelizmente consegui fazer somente o programa parar. Muito "Feio" gerar um arquivo null. Claro se tiver mais algum conselho, ajuda, será bem vinda. Obrigado.