Relationship problem Manytomany - Java

Asked

Viewed 82 times

0

Good evening guys, I was making a table that lists the doctors and how many patients they have, but at print time only comes the doctors, does not come with the list of patients.

Classs Paciente:

package entity;

import java.util.ArrayList;
import java.util.List;

public class Paciente implements Comparable<Paciente>{

private Integer idPaciente;
private String nomePaciente;
private List<Medico> medicos;

public Paciente() {
    // TODO Auto-generated constructor stub
}

public Paciente(Integer idPaciente, String nomePaciente, List<Medico> medicos) {
    super();
    this.idPaciente = idPaciente;
    this.nomePaciente = nomePaciente;
    this.medicos = medicos;
}

public Paciente(Integer idPaciente, String nomePaciente) {
    super();
    this.idPaciente = idPaciente;
    this.nomePaciente = nomePaciente;
}

@Override
public String toString() {
    return "Paciente [idPaciente=" + idPaciente + ", nomePaciente=" + nomePaciente + ", medicos=" + medicos + "]";
}

public Integer getIdPaciente() {
    return idPaciente;
}

public void setIdPaciente(Integer idPaciente) {
    this.idPaciente = idPaciente;
}

public String getNomePaciente() {
    return nomePaciente;
}

public void setNomePaciente(String nomePaciente) {
    this.nomePaciente = nomePaciente;
}

public List<Medico> getMedicos() {
    return medicos;
}

public void setMedicos(List<Medico> medicos) {
    this.medicos = medicos;
}

public void adicionar(Medico m){
    if (medicos==null){
        medicos = new ArrayList<Medico>();
    }
    medicos.add(m);
}

public void remover(Medico m){
    if (medicos!=null){
        if(medicos.contains(m)){
            medicos.remove(medicos.get(medicos.indexOf(m)));
        }else{
            System.out.println("Não encontrado");
        }
    }else{
        System.out.println("Medico vazio");
    }
}

@Override
public boolean equals(Object obj) {
    Paciente p = (Paciente) obj;
    return this.idPaciente.equals(p.getIdPaciente());
}


@Override
public int compareTo(Paciente p) {
    return this.idPaciente.compareTo(p.getIdPaciente());
}


}

Class Medico:

package entity;

import java.util.ArrayList;
import java.util.List;

public class Medico implements Comparable<Medico> {

    private Integer idMedico;
    private String nomeMedico;
    private String especializacao;
    private List<Paciente> pacientes;



    public Medico() {
    }

    public Medico(Integer idMedico, String nomeMedico, String especializacao, List<Paciente> pacientes) {
        super();
        this.idMedico = idMedico;
        this.nomeMedico = nomeMedico;
        this.especializacao = especializacao;
        this.pacientes = pacientes;
    }

    public Medico(Integer idMedico, String nomeMedico, String especializacao) {
        super();
        this.idMedico = idMedico;
        this.nomeMedico = nomeMedico;
        this.especializacao = especializacao;
    }

    public Medico(List<Paciente> pacientes) {
        super();
        this.pacientes = pacientes;
    }

    @Override
    public String toString() {
        return "Médico [idMedico=" + idMedico + ", nomeMedico=" + nomeMedico + ", especializacao=" + especializacao
                + "]";
    }

    public Integer getIdMedico() {
        return idMedico;
    }

    public void setIdMedico(Integer idMedico) {
        this.idMedico = idMedico;
    }

    public String getNomeMedico() {
        return nomeMedico;
    }

    public void setNomeMedico(String nomeMedico) {
        this.nomeMedico = nomeMedico;
    }

    public String getEspecializacao() {
        return especializacao;
    }

    public void setEspecializacao(String especializacao) {
        this.especializacao = especializacao;
    }

    public List<Paciente> getPacientes() {
        return pacientes;
    }

    public void setPacientes(List<Paciente> pacientes) {
        this.pacientes = pacientes;
    }

    public void adicionar(Paciente p){
        if (pacientes==null){
            pacientes = new ArrayList<Paciente>();
        }
        pacientes.add(p);
    }

    public void remover(Paciente p){
        if (pacientes!=null){
            if (pacientes.contains(p)){
                pacientes.remove(pacientes.get(pacientes.indexOf(p)));
            }else{
                System.out.println("Nao encontrado o paciente");
            }
        }else{
            System.out.println("Lista está vazia.");
        }
    }

    @Override
    public boolean equals(Object o) {
        Medico m = (Medico) o;
        return this.idMedico.equals(m.getIdMedico());
    }

    @Override
    public int compareTo(Medico m) {
        return this.idMedico.compareTo(m.getIdMedico());
    }
}

And the Main:

package entity;

public class Main {

    public static void main(String[] args) {
        Paciente p1 = new Paciente(10,"Stuart");
        Paciente p2 = new Paciente(11, "Lu");
        Paciente p3 = new Paciente(12,"Andre");

        Medico m1 = new Medico(100, "qlqnome1", "otorrinolaringologista");
        Medico m2 = new Medico(101,"qlqnome2", "psiquiatra");

        m1.adicionar(p1);
        m1.adicionar(p2);
        m1.adicionar(p3);
        m2.adicionar(p1);

        System.out.println(m1);
        System.out.println(m2);
    }
}

Upshot:

Médico [idMedico=100, nomeMedico=qlqnome1, especializacao=otorrinolaringologista]
Médico [idMedico=101, nomeMedico=qlqnome2, especializacao=psiquiatra]
  • The result shown does not match the code. In particular, you say that the doctor qlqnome1 is otorrinolaringologista and the qlqnome2 is psquiatra, but your exit shows that roger is viado and that globinho is psiquiatra.

2 answers

0


His method toString() doctor is not printing the list of pacientes.

You can concatenate using join, as follows:

@Override
public String toString() {
    return "Médico [idMedico=" + idMedico + 
                 ", nomeMedico=" + nomeMedico + 
                 ", especializacao=" + especializacao + 
                 ", pacientes=" + String.join(", ", pacientes) + "]";
}
  • Thank you very much, in my course booklet I was telling not to put the Patient in toString de Medicos, must be wrong in the pdf, thank you!

  • Was the answer helpful? Is it possible to accept it?

0

You add patients to doctors but not doctors to patients. The simplest solution would be to do this:

m1.adicionar(p1);
p1.adicionar(m1);
m1.adicionar(p2);
p2.adicionar(m1);
m1.adicionar(p3);
p3.adicionar(m1);
m2.adicionar(p1);
p1.adicionar(m2);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.