Relacje miedzy obiektami - lista wizyt

0

Witam, mam 3 pliki txt:
pacjent - jego dane
lekarz - jego dane
wizyty - id pacjenta i id lekarza

Tworze modele pacjenta i lekarza wg danych z plikow
model wizyta chcialbym aby mial obiekty lekarz, pacjent, ale w pliku mam tylko ich id
w repozytoriach pacjenta i lekarza pliki txt zamieniam na liste obiektow odpowiednio pacjentow i lekarzy
w serwisach wstrzykuje repozytorium i tworze metody do wyciagania z list interesujace mnie dane

i moje pytanie jak mam stworzyc liste wizyt ?

1

w repozytoriach pacjenta i lekarza pliki txt zamieniam na liste obiektow odpowiednio pacjentow i lekarzy

A nie lepiej jednak zrobić mapę Map<Id, Dane>? ;)

model wizyta chcialbym aby mial obiekty lekarz, pacjent, ale w pliku mam tylko ich id

Ale w repozytoriach możesz to Id zamienić na dane, więc gdzie problem? Robisz sobie klasę która bierze te 3 rzeczy (listę wizyt, repozytorium pacjentów i lekarzy) i składa w jakąś mapę znowu.

0

problem w tym, ze chce wstrzyknac repozytorium lekarze i pacjenci do repozytorium wizyty i wywala mi blad, nullpointera

0

No to moze pokaż jak to robisz o_O

0
public class VisitRepository {

    @Autowired
    private DoctorRepository doctorRepository;
    @Autowired
    private PatientRepository patientRepository;

    List<Visit> visits = new ArrayList<>();


    public VisitRepository() throws IOException {


        List<String> lines = Files.readAllLines(Paths.get("src/main/resources/wizyty.txt"));
        lines.remove(0);

        for (String line : lines) {
            String[] split = line.split("\t");
            Integer doctorId = Integer.valueOf(split[0]);
            Integer patientId = Integer.valueOf(split[1]);
            String dateOfVisit = split[2];

            Patient patient = patientRepository.getPatients().stream().filter(x->patientId.equals(x.getId())).findFirst().orElse(null);
            Doctor doctor = doctorRepository.getDoctors().stream().filter(x->doctorId.equals(x.getId())).findFirst().orElse(null);

            Visit visit = new Visit(doctor, patient, dateOfVisit);
            visits.add(visit);
        }

        System.out.println(visits);

    }

}
0

No dobra ale może weź to zrób jak człowiek? o_o Wczytaj to do MAPY żeby nie szukać liniowo za każdym razem pacjanta czy lektarza. A po drugie nadal pokazałeś za mało. Skoro leci NPE to znaczy ze coś robisz źle np. twoja klasa VisitRepository nie jest w ogóle zarządzana przez Springa. Moja rada: wywal te Autowired i zrób konstruktor z tymi 2 argumentami i zaraz się okaze że ten obiekt o
No i jak dla mnie to .orElse(null) jest zupełnie bez sensu.
I aż boli jak w jednym miejscu masz streamy a zaraz obok robisz jakieś pętle.

Dodatkowo java pokazuje DOKŁADNIE GDZIE leci NPE. Mamy zgadywać?

0

Już sobie poradziłem, właśnie chodziło o autowired, wrzucilem do konstruktora i działa. co do petli i streama to pewnie masz racje. Moglbys mi pokazac jak mialby wygladac ewentualna mapa majac model pacejnta?

5
Shalom napisał(a):

No dobra ale może weź to zrób jak człowiek?

...

Dodatkowo java pokazuje DOKŁADNIE GDZIE leci NPE. Mamy zgadywać?

@Sa1rus Kolejny adept Springa (przecież 15k czeka), który jeszcze Javy nie ugruntował

0

@AnyKtokolwiek:

Bo Java jest nudna - jak ten cytat w stopce (i nie chodzi o *) :)

1

Moglbys mi pokazac jak mialby wygladac ewentualna mapa majac model pacejnta?

Map<Integer, Patient> patients = patientsList.stream().collect(Collectors.toMap(x->x.getId(),x->x));

I cyk, nagle mozna znaleźć pacjenta po prostu robiąc patients.get(id) bez jakichś cyrków. Teraz w repozytorium robisz metodę:

Optional<Patient> getPatientById(Integer id){
    return Optional.ofNullable(patients.get(id));
}

i kod powoli zaczyna mieć ręce i nogi

Swoją drogą to jest dramat że masz tu Springa a nie umiesz zrobić Mapy, czyli zupełnie nie znasz podstaw struktur danych... Nie tędy droga.

1 użytkowników online, w tym zalogowanych: 0, gości: 1