1
resposta

Classe para gerar medicos e pacientes

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

Olá, Francisco.

Tudo bem?

Você trouxe um exemplo bem interessante de como usar a classe Gerador para simular dados médicos e de pacientes. Esse tipo de abordagem é muito útil para testar endpoints sem precisar de dados reais. A utilização do javafaker para gerar informações aleatórias é uma ótima prática para simular ambientes de produção.

Continue assim, com essa dedicação. Parabéns! Se tiver mais dúvidas, o fórum está à disposição para ajudar.

Abraços!