wydzielenie metody

wydzielenie metody
  • Rejestracja: dni
  • Ostatnio: dni
0

siema
robie api w springu i mam metodę która powiedzmy ze sie powtarza w kilku kontrolerach i chciałbym jakoś to wydzielić, macie pomysł jak?
metoda robi update w jednej z kolumn i problem jest w tym że w ciele korzysta za każdym razem z innego DAO (pobiera dane i robi save)
coś w ten deseń

Kopiuj
zaKazdymRazemInneDAO.save(....
ZaKazdymRazemInnaEncja zaKazdymRazemInnaEncja = zaKazdymRazemInneDAO.findBy....
zaKazdymRazemInnaEncja.set....

return zaKazdymRazemInnaEncja;
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

No i gdzie dokładnie widzisz problem? Zrób sobie jakiś obiekt z metodą w stylu:

Kopiuj
<T> T someName(BaseDaoInterface<T> dao, T object){
    dao.save(object);
    T zaKazdymRazemInnaEncja = dao.findBy(...)
    zaKazdymRazemInnaEncja.set...
    return zaKazdymRazemInnaEncja;
}

To oczywiście wymaga żeby te operacje faktycznie miały spójny interfejs!

  • Rejestracja: dni
  • Ostatnio: dni
0

hmmm chyba jednak nie poradze sobie sam z tym... (nie kumam po prostu) - rozumiem do momentu ze mam zrobić sobie jakąś nową klase i tam wrzucić tą metodę

  • Rejestracja: dni
  • Ostatnio: dni
0
gerard9 napisał(a):

hmmm chyba jednak nie poradze sobie sam z tym... (nie kumam po prostu) - rozumiem do momentu ze mam zrobić sobie jakąś nową klase i tam wrzucić tą metodę

Kopiuj
ZaKazdymRazemInnaEncja metoda (ZaKazdymRazemInneDAO zaKazdymRazemInneDAO, ZaKazdymRazemInnaEncja zaKazdymRazemInnaEncja) {
zaKazdymRazemInneDAO.save(....
zaKazdymRazemInnaEncja = zaKazdymRazemInneDAO.findBy....
zaKazdymRazemInnaEncja.set....

return zaKazdymRazemInnaEncja;
}
  • Rejestracja: dni
  • Ostatnio: dni
0

Oj nie mogę edytować, Adminie mógłbyś połączyć?

Kopiuj
public ZaKazdymRazemInnaEncja metoda (ZaKazdymRazemInneDAO zaKazdymRazemInneDAO) {
zaKazdymRazemInneDAO.save(....
ZaKazdymRazemInnaEncja zaKazdymRazemInnaEncja = zaKazdymRazemInneDAO.findBy....
zaKazdymRazemInnaEncja.set....
 
return zaKazdymRazemInnaEncja;
}
XL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
1

Żeby to zrobić generycznie, to encje które chcesz modyfikować powinny dziedziczyć po jednej wspólnej klasie bazowej, która będzie posiadała definicje metody, którą chesz wywołać generycznie.

I wtedy definicję takiej generycznej metody możesz zapisać w jakimś helperze tak:

Kopiuj
public static <T extends SomeBase> T genericMethod(Repository<T> repository, T object) {
    T entity = repository.save(object);
    entity.set(...); // i tu jest potrzebna base class, bo inaczej nie dostaniesz się do metod T, które chcesz setować
    return T;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.