Dependencias
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
</dependency>
package med.vol.api.gerador;
import com.github.javafaker.Faker;
import org.json.JSONObject;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class Gerador {
private static final Faker FAKER = new Faker(new java.util.Locale("pt", "BR"));
private static final Random RANDOM = new Random();
private static final List<String> ESPECIALIDADES = Arrays.asList("ORTOPEDIA", "CARDIOLOGIA", "DERMATOLOGIA", "GINECOLOGIA");
// metodo gerado como static para que eu possa chamalo direto sem precisar instanciar a sua classe
public static void gerarDados(String enderecoApiPost, Integer quantidadeDePessoasGerar, String tipo) {
for (int i = 0; i < quantidadeDePessoasGerar; i++) {
JSONObject obj = new JSONObject();
obj.put("nome", FAKER.name().fullName());
obj.put("email", FAKER.internet().emailAddress());
obj.put("telefone", FAKER.phoneNumber().cellPhone());
switch (tipo) {
case "medico":
obj.put("crm", FAKER.number().digits(6));
obj.put("especialidade", ESPECIALIDADES.get(RANDOM.nextInt(ESPECIALIDADES.size())));
break;
case "paciente":
obj.put("cpf", FAKER.number().digits(11));
break;
default:
throw new IllegalArgumentException("Tipo inválido: " + tipo);
}
obj.put("endereco", criarEndereco());
System.out.println(obj.toString());
enviarParaApi(enderecoApiPost, obj, tipo, i);
}
}
private static JSONObject criarEndereco() {
JSONObject endereco = new JSONObject();
endereco.put("logradouro", FAKER.address().streetName());
endereco.put("bairro", FAKER.address().secondaryAddress());
endereco.put("cep", FAKER.number().digits(8));
endereco.put("cidade", FAKER.address().city());
endereco.put("uf", FAKER.address().stateAbbr());
endereco.put("numero", FAKER.address().buildingNumber());
endereco.put("complemento", FAKER.address().secondaryAddress());
return endereco;
}
private static void enviarParaApi(String enderecoApiPost, JSONObject obj, String tipo, int index) {
try {
URL url = new URL(enderecoApiPost);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Accept", "application/json");
connection.setDoOutput(true);
try (OutputStream os = connection.getOutputStream()) {
byte[] input = obj.toString().getBytes("utf-8");
os.write(input, 0, input.length);
}
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_CREATED) {
System.out.println("Dados de " + tipo + " " + (index + 1) + " enviados com sucesso!");
} else {
System.out.println("Erro ao enviar " + tipo + " " + (index + 1) + ". Código de resposta: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Como chamar:
Dentro da sua classe principal do do Sring
Gerador.gerarDados("http://localhost:8080/medicos",3,"medico");
Gerador.gerarDados("http://localhost:8080/pacientes",3,"paciente");