findAllByOrderDoneFalseAndOrderReadyTrueAndOrderPackedTrueAndDeliveryDocumentsCreatedFalseAndDeliveries
:D Ja rozumiem że chciałeś dobrze to opisać, ale taka nazwa tylko utrudnia zrozumienie, bo ciężko to nawet przeczytać. Może lepiej to jakoś "biznesowo" nazwać? Rozumiem że Spring-Data ci tu generuje metodę, ale to wtedy możesz ewentualnie zrobić wrapper jakiś ludzki na to.
Jeśli chodzi o jakoś to jedna sprawą jest to że masz logikę wepchniętą (serio, REST calle w kontrolerze, pagowanie odpowiedzi z bazy itd) np. tutaj:
https://github.com/mhtusz/orders/blob/master/src/main/java/pl/mhtusz/controller/OrderController.java
i tutaj:
https://github.com/mhtusz/NBPTables/blob/master/src/main/java/pl/mhtusz/controller/HomeController.java
ale sam kod tej logiki też jest taki sobie, skomplikowany, długi, zagnieżdżone warunki. Zelecam ćwiczenie: napisz do tego kodu testy z 100% pokryciem. Jeśli pisanie testów będzie "bolesne" to znaczy ze z kodem jest coś nie tak.
Dzięki :)
Tak, te nazwy metod to są ani śmieszne ani wygodne - chciałem sprawdzić do jakiego stopnia to potrafi działać w Springu ale przy dodaniu DISTINCT do takiego pociągu już przestaje :)
Kod logiki wyrzucę do innej klasy mam świadomość, że jej nie powinno być w kontrolerze.
Wraz z nauką tego Springowego MVC logika rosła od zera (przekazania findAll) do stronicowania, filtrowania bazy i przekazywania innych elementów modelu do widoku.
Zdecydowanie czas na refaktoryzację.
Aplikacja NBP to był super szybki projekt na kilka godzin w celu potestowania REST Calla, Dodawanie tabel NBP do bazy dorobione rzutem na taśmę. Masz rację, że powinienem zadbać o publikowanie tylko skończonego kodu, który nadaje się do pracy grupowej.
Testy jednostkowe to coś czego się uczę aktualnie i o ile przy prostych klasach są one łatwe o tyle w Springu ze Spring Data wymagają więcej czasu na zapoznanie się z tematem.
Nie chcę stosować metody copy-paste z innych projektów bo nauka z tego jest niewielka.