Josef Kunhart

Bakalářská práce, Bc.

1 Úvod

Dnešní informační technologie dovolují uchovávat obrovské množství informací na jednom místě. Tyto údaje je nutné efektivně organizovat, skladovat a umožnit v nich vyhledávání. Pro ukládání a správu dat proto byly v průběhu vyvinuty speciální programy, které nazýváme databáze. Databáze zajišťují ukládání dat a poskytují aplikační rozhraní pro přístup k těmto datům dalším programům a systémům.

Aplikační rozhraní databáze je vhodné pro spolupráci s dalšími aplikacemi, poskytuje programátorovi možnost komunikovat s databází. Typický uživatel bez znalostí informatiky ale vyžaduje jiný přístup. Potřebuje svoje data jednoduše spravovat bez znalosti relační algebry nebo některého programovacího jazyka. Ideální je proto program s grafickým uživatelským rozhraním, který pracuje nad databází a poskytuje běžnému uživateli potřebný komfort při práci.

Zmíněný program pro práci nad databází je typicky desktopová nebo webová aplikace, která pracuje s databázovými záznamy. Základem programu jsou čtyři elementární operace s daty: zobrazení záznamu, odstranění záznamu, úprava záznamu a jeho přidání. Pro úpravu a přidávání záznamů se používají formuláře různého charakteru. Uvedený způsob práce nad databází je velmi rozšířený a často bývá doplněn o další funkcionalitu. S rostoucí velikostí spravované databáze se zvětšuje i množství formulářů, které často vede k zbytečnému opakování kódu a obtížné údržbě aplikace.

1.1. Cíl projektu

Cílem projektu JkCrud je vytvoření knihovny pro generování uživatelského rozhraní při práci s databází. Aplikace je napsána v jazyce Java a využívá grafického prostředí Swing. Největší výhodou JkCrudu je urychlení vývoje, omezení psaní opakovaného kódu a snadná rozšiřitelnost. Bakalářská práce se zabývá kompletní analýzou, návrhem a realizací tohoto projektu.

1.2. Název projektu

Název projektu JkCrud je odvozen od:

  • zkratky CRUD, která označuje čtyři základní operace pro práci s databází. Tyto operace jsou vytvoření, načtení, úprava a odstranění záznamu.
  • předpony J*, která je typická pro názvy komponent Swingu [1].
  • iniciálů autora JK.

1.3. Detailní popis

Projekt JkCrud se soustředí na vytvoření knihovny pro generování uživatelského rozhraní pro práci s databází. Toto rozhraní zajišťuje čtyři standardní CRUD operace, v případě potřeby doplněné o vlastní operace. JkCrud volně navazuje na autorův dříve realizovaný webový projekt s podobnou funkcionalitou. Stejně jako u původního projektu je jeho hlavním cílem urychlení vývoje a omezení opakovaného psaní stejného kódu. Typicky jde o vytváření formulářů a práci s databází. JkCrud nabízí vysokou rozšiřitelnost a snadnou konfigurovatelnost. Je možné doplňovat nové komponenty, elementy, filtry, vlastní akce a další prvky.

Všechny součásti JkCrudu jsou napsány v programovacím jazyce Java [2] a využívají javové knihovny prvků uživatelských rozhraní Swing. Vývoj a testování aplikace probíhalo nad databází MySQL [3]. Podporu dalších databází lze snadno doplnit výměnou databázové vrstvy. JkCrud není samostatně funkční jednotkou, předpokládá se jeho integrace do větších celků a aplikací. Nedílnou součástí projektu je proto ukázkový program Music, který demonstruje většinu možností a různá nastavení JkCrudu.

1.4. Aplikace JkCrud

Standardní instance JkCrudu umožňuje zobrazit, editovat, přidávat a odstraňovat záznamy v jedné databázové tabulce. Oprávnění k těmto operacím lze nastavit v definici parametrů, případně je navázat na uživatelská oprávnění nadřazeného programu. JkCrud v závislosti na nastavení pracuje i s dalšími tabulkami a využívá jejich data pro zobrazení nebo editaci záznamů. S využitím komponent tedy pracuje nad databázovými vazbami 1:N. Pro vazby typu M:N je vhodné použít doplňující aplikaci JkCrossCrud. JkCrud s M:N vazbami sice umí pracovat také, toto řešení je ale neefektivní. Po kompletaci JkCrossCrudu proto bylo z projektu vyřazeno.

Součástí JkCrudu je výchozí sada komponent, filtrů a validátorů, které lze dále doplňovat o vlastní objekty. Komponenty slouží pro zobrazení nebo úpravu položek v tabulce, příkladem může být textové pole nebo rozbalovací nabídka pro výběr možností z číselníku. Filtry třídí množinu záznamů v přehledu, validátory kontrolují vkládané údaje u komponent. Speciálním rozšířením jsou vlastní akce, které umožňují doplnit individuální funkcionalitu nad rámec JkCrudu, například zasílání e-mailu nebo speciální výpočet.

1.4.1. Příklad použití JkCrudu

Příkladem JkCrudu je správa uživatelů, která je vytvořena nad tabulkou s uživateli. Instance pracuje s následujícími položkami: login, jméno, příjmení, e-mail a uživatelská role. Tyto údaje se zobrazují v přehledu i detailu a je možné je dále editovat. Seznam uživatelských rolí se načítá z odpovídajícího číselníku. Při editaci údajů o uživateli je za využití validátorů kontrolován správný formát loginu a e-mailu. Filtry umožňují vyhledávat v loginu, jméně, příjmení nebo vybírat podle uživatelské role. Standardní součástí je stránkování a řazení podle jednotlivých sloupečků. Instance je doplněna o vlastní akci pro vygenerování a zaslání nového hesla uživateli.

1.5. Aplikace JkCrossCrud

JkCrossCrud je doplňková aplikace, která slouží pro vzájemné přiřazování položek, tj. pracuje vždy nad jedinou databázovou vazbou typu M:N. Oproti původnímu řešení přímo v JkCrudu je efektivnější, rychlejší a uživatelsky přívětivější. JkCrossCrud je jednodušší, obsahuje pouze elementy pro stránkování a dva vestavěné filtry. Další filtry ani komponenty nastavit nelze. Obě aplikace lze navzájem kombinovat, instance JkCrudu může v detailu nebo v editaci obsahovat další vnořené instance JkCrudu nebo JkCrossCrudu.

1.5.1. Příklad použití JkCrossCrudu

Příkladem JkCrossCrudu je přiřazování produktů do kategorií, kde u každého produktu lze vybrat, ve kterých kategoriích se nachází.

1.6. Rozdělení obsahu práce

Obsah bakalářské práce je přehledně rozdělen do několika kapitol. Každá z nich se zabývá jednou částí problematiky. 1. kapitolou je úvod; 2. analýza, která diskutuje požadavky na projekt, návaznost na webové řešení nebo rizika projektu. 3. kapitola se zabývá návrhem aplikace, tj. použitými technologiemi, infrastrukturou a architekturou aplikace. Popisuje použité návrhové vzory, vývoj návrhu v průběhu času a také návrh uživatelského rozhraní. Následuje 4. kapitola implementace, ve které je popsáno rozdělení systému do balíčků, databázová vrstva a použití konkrétních tříd a objektů. Důležitou součástí implementace je popis funkce komponent, filtrů a dalších prvků. 5. kapitola testování dokumentuje použité způsoby otestování aplikace. Ukázková aplikace Music je popsána v 6. kapitole a prezentuje možnosti JkCrudu na konkrétním programu. V 7. kapitole jsou diskutovány nápady a nové koncepty, z nichž některé se uplatní při pokračování projektu. Závěrečná 8. kapitola diskutuje výsledky a celkový přínos projektu.

[Strany 1-4]