Jestem w trakcie tworzenia aplikacji „prosty bash.org w jeden dzień” i naciąłem się na ciekawego buga w PF 1.0 b833. Żeby zrozumieć skąd on się wziął należy trochę przybliżyć czym jest moduł CRUD w Play Framework.

CRUD Framework

Pod tą nazwą kryje się grupa frameworków, które udostępniają programistom zestaw narzędzi pozwalających na automatyczne tworzenie klas CrudDAO. Idea zakłada, że programista na przykład tworzy klasę modelu, która rozszerza klasę abstrakcyjną. Klasa abstrakcyjna dostarcza metod CRUD. Innym podejściem jest dynamiczne tworzenie metod i zapytań tak jak jest to realizowane w Grails. W każdym bądź razie w Play mamy do czynienia z pierwszą metodą. Opis tworzenia klas modelu znajdziecie tu.

CRUD w Play Framework

Jeżeli chcemy uruchomić moduł CRUD w Play Framework to w pliku application.conf należy od-komentować linijkę

Listing 1. uruchomienie modułu CRUD

module.crud=${play.path}/modules/crud

Następnie w pliku routes należy włączyć mapowanie do modułu CRUD:

Listing 2. konfiguracja mapowań

*      /admin              module:crud

No i gotowe. Należy jeszcze raz podpiąć projekt do naszego IDE. Od tego momentu pod adresem /admin/ mamy do dyspozycji całkiem zgrabny panel do zarządzania naszymi obiektami.

Jest jeden bug

Niestety w buildzie 833 jest bug. Otóż nie można posortować listy obiektów. Każda próba sortowania powoduje, że zawsze dostaniemy obiekty posortowane malejąco po id. Trochę do dupy… Na całe szczęście jest obejście. Moduł CRUD jak łatwo zauważyć dodał nam klasę CRUD i cały pakiet crud. Wystarczy zatem tak jak opisałem w zgłoszeniu zmienić trzy linijki.

I tyle. Generalnie CRUD z PF jest bardzo wdzięcznym podejściem do problemu i pozwala na szybkie i stosunkowo łatwe tworzenie modelu bez potrzeby kombinowania z kodem. Dostajemy na talerzu elegancki interfejs zarówno od strony programisty jak i użytkownika.