Segue meu código até o momento atual, e aproveito pra tirar uma dúvida sobre a minha criação de classes. Vejo pelas próprias videoaulas do curso e solução de outras pessoas aqui no fórum que criaram classes diferentes do que a do meu código. A maneira que fiz criando métodos dentro de uma única classe (CEP) é considerada errada? Existem maneiras para melhorar meu código?
Classe CEP:
package models;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Cep {
private String numeroCep;
private String logradouroCep;
private String complementoCep;
private String bairroCep;
private String localidadeCep;
private String estadoCep;
private String ibgeCep;
public Cep(CepRecord CepRecord) {
this.numeroCep = CepRecord.cep();
this.logradouroCep = CepRecord.logradouro();
this.complementoCep = CepRecord.complemento();
this.bairroCep = CepRecord.bairro();
this.localidadeCep = CepRecord.localidade();
this.estadoCep = CepRecord.uf();
this.ibgeCep = CepRecord.ibge();
}
public Cep() {
}
public String getCep(){
Scanner scanner = new Scanner(System.in);
System.out.println("Digite um CEP para fazer a busca: ");
String cep = scanner.nextLine();
scanner.close();
return cep;
}
public int validateCep(String cep){
if(cep.length() != 8){
return 0;
} else{
return 1;
}
}
public String getCepJson(String cep) throws IOException, InterruptedException{
String address = "https://viacep.com.br/ws/"+ cep + "/json/";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(address))
.build();
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
return json;
}
public void createCepJson(String json) throws IOException{
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
CepRecord cepJson = gson.fromJson(json, CepRecord.class);
Cep finalCep = new Cep(cepJson);
FileWriter writer = new FileWriter("CEP.json");
writer.write(gson.toJson(finalCep));
writer.close();
}
@Override
public String toString() {
return "Cep [numeroCep=" + numeroCep + ", logradouroCep=" + logradouroCep + ", complementoCep=" + complementoCep
+ ", bairroCep=" + bairroCep + ", localidadeCep=" + localidadeCep + ", estadoCep=" + estadoCep
+ ", ibgeCep=" + ibgeCep + "]";
}
}
Record:
package models;
public record CepRecord(String cep, String logradouro, String complemento, String bairro, String localidade, String uf, String ibge) {
}
Principal:
package main;
import models.Cep;
public class App {
public static void main(String[] args) throws Exception {
Cep cep = new Cep();
String cepNumber = cep.getCep();
int choice = cep.validateCep(cepNumber);
if(choice == 1){
System.out.println("Processando...");
String json = cep.getCepJson(cepNumber);
cep.createCepJson(json);
System.out.println("Foi criado um arquivo JSON com o resultado :)");
} else {
System.out.println("CEP não pode ser validado.");
}
}
}