6 Ukázková aplikace Music
6.1. Představení aplikace
Music je ukázková aplikace, která demonstruje nasazení JkCrudu v reálném programu. Program pracuje nad jednoduchou databází hudby a umožňuje spravovat údaje o skupinách, albech a hudebnících. Aplikace Music se skládá z několika součástí: panelu pro spouštění jednotlivých instancí JkCrudu a JkCrossCrudu, konfiguračních souborů a vlastních instancí v podobě samostatných tříd.
6.2. Návrh databáze
Databáze pro aplikaci Music je vytvořena pro MySQL verze 5.0 nebo vyšší. Skládá se ze tří hlavních tabulek, dvojice M:N tabulek a čtyř číselníků. Hlavními tabulkami jsou band, album a musician; M:N tabulky musician_in_band a genre_in_band; číselníky genre, instrument, origin a status. Všechny názvy tabulek začínají prefixem a_*. Schéma aplikační databáze zobrazuje odpovídající EER diagram na obrázku 28. Obsah konkrétních databázových tabulek bude diskutován dále v textu u nastavení jednotlivých instancí.
6.3. Struktura aplikace
Aplikace Music není příliš rozsáhlá. Skládá se z třídy pro hlavní panel a tří doplňkových balíčků. První z balíčků, music.cruds, obsahuje třídy s nadefinovanými instancemi. Tyto instance se spouštějí z hlavního panelu pomocí standardních tlačítek. Balíček s názvem music.helpers obsahuje jedinou třídu I18N pro načítání překladů pro program. Překlady i nastavení připojení k databázi jsou umístěny v posledním balíčku, music.resources. Struktura konfiguračních souborů je stejná jako v samotném projektu JkCrud.
Každá z instancí aplikace Music je definována v samostatné třídě, která je odvozena od třídy Crud nebo CrossCrud. Nastavení parametrů se pro lepší přehlednost provádí pomocí několika metod, které se volají v konstruktoru třídy. Metoda setUp obsahuje základní nastavení instance; addFilters definuje použité filtry; metody addDisplayables a addUpdatables slouží pro přidání komponent pro zobrazení a editaci; addComposites umožňuje přidávat vnořené instance.
6.3.1. Datové tabulky
Instance pro datové tabulky se používají pro správu dat v databázi. Tyto instance rozšiřují základní třídu Crud a je v nich možné provádět všech pět základních operací (view, detail, edit, add a delete). Každá z instancí používá jednu hlavní tabulku a několik doplňujících tabulek pro práci se záznamy. Tyto záznamy lze prohlížet, editovat, filtrovat a řadit v závislosti na použitých rozšiřujících prvcích. Obrázky 29, 30, 31 a 32 zobrazují náhledy různých stavů zobrazení a přehledně demonstrují použité komponenty, filtry a další prvky z pohledu uživatelského rozhraní. Detailní přehled definovaných prvků není uváděn, lze si jej prohlédnout přímo ve zdrojovém kódu.
Třída BandCrud pracuje nad tabulkami band, origin a status. U každé skupiny se eviduje několik polí: název skupiny, datum vzniku, datum zániku, místo původu, aktuální stav, webové stránky a doplňující popis. BandCrud dále obsahuje tři vnořené instance pro zobrazení souvisejících alb, žánrů a hudebníků. Třída AlbumCrud používá tabulky album a band. Pro každé album jsou definována pole název alba, skupina rok vydání a popis. Tato třída funguje také jako vnořená instance, zobrazovaná u skupin. Poslední třída pro datové tabulky se jmenuje MusicianCrud a slouží pro správu hudebníků. U hudebníka se ukládá jeho jméno a příjmení, datum narození, datum úmrtí, popis a nástroj, na který hraje. Tato třída pracuje s tabulkami musician a instrument a využívá jedné vnořené instance pro zobrazení skupin, ve kterých daný hudebník působil. Uživatelské rozhraní pro datové tabulky znázorňují obrázky 29, 30, 31 a 32.
6.3.2. M:N tabulky
Instance pro práci s M:N tabulkami na rozdíl od zbylých tříd rozšiřují CrossCrud, který je určen přesně pro tento účel. Pro správu dat v M:N tabulkách existují dvě dvojice tříd: BandInGenreCrud + GenreInBandCrud a BandInMusicianCrud + MusicianInBandCrud. První dvě třídy navzájem spojují skupiny se žánry v tabulce genre_in_band. Používají se jako vnořené instance právě u správy skupin a žánrů. Dvě třídy pro jedinou M:N tabulku existují z důvodu, že každá představuje pohled na spravovaná data z opačné strany a tyto pohledy na sobě nejsou závislé. Druhá dvojice tříd pracuje na stejném principu nad tabulkou musician_in_band. Všechny jmenované třídy mají nastaveny obě dostupné možnosti, přehled i editaci záznamů. Ukázku uživatelského rozhraní pro M:N tabulku zobrazuje obrázek 33.
6.3.3. Číselníky
Číselníky slouží jako prosté seznamy položek pro další použití v hlavních datových tabulkách. Mají typicky pouze primární klíč a jediný datový sloupec s názvem položky. V aplikaci se používají pro správu žánrů, nástrojů, míst původu a stavů pro skupiny. Číselníky kromě stavů dávají možnost záznamy přidávat, prohlížet i upravovat. Odstranit jejich položky nelze z důvodu zachování integrity dat. Po technické stránce je číselník opět instancí běžného Crudu se základní konfigurací.
[Strany 61-66]