Konečně nastal ten slavný den, kdy byl projekt obhájen s přiměřeným bodovým ziskem. Děkuju lidem, kteří mi ochotně odpovídali, když jsem se jich ptal na různé věci :). A doufám, že ten program už nebudu muset dlouhou dobu vidět.
Jenže jak se na FITu říká, studenti nesmí mít život, takže jedním nepříjemným projektem to nekončí. Pokud to zvládnu a neklepne mě pepka … tak napíšu něco dalšího :)
Obvykle nemám sklony ke psaní, ale něco mě k tomu dostat muselo :).
Máme ve škole projekt do databází, který se už přehoupnul do 4. fáze (konceptuální návrh, vytvoření databáze, tvorba SELECT dotazů, tvorba aplikace). Tvoří se to v prostředí Oracle. K tomu nemám víceméně žádné výhrady. Co mě ale v posledních třech dnech neskutečně vytáčí, je Oracle Forms Builder. Když jsem poprvé viděl slovo Forms, tak se mi vybavila historie a moje první krůčky v programování.
Kdysi dávno jsem si hrál s Delphi. Když odmyslím to, že je to takový profíky přehlížený nástroj (profíci přece kódí v ASM, žejo), tak jde o výborný nástroj ke tvorbě programů s GUI. Pascal, objekty, události. Všechno poměrně přehledně uspořádané, logicky poskládané a poměrně slušně zapamatovatelné. Položím na formulář tlačítko, v seznamu si vyberu událost (třeba OnClick), napíšu obsluhu a všechno funguje. A pokud ne, je připravena naprosto perfektní nápověda, ve které jsem vždy všechno potřebné našel do minuty (tehdy jsem ještě neměl internet). A ve verzi Enterprise to umí i různé databázové fíčury a podobné věci.
A tak jsem spustil Oracle Forms Builder. Myslím, že tímto okamžikem se ze mě stal takový skrytý Breivik, který čeká na to, až budu někdy v blízkosti nějakého významnějšího sídla Oracle :). Vybafne na vás jakýsi strom s různými tajemnými věcmi. Pro neznalého - WTF? Já jsem to po několika marných pokusech vzdal a jal jsem se sledovat instruktážní videa, která pro nás připravil jeden cvičící. Je potřeba vytvořit nějaký DATABLOCK, který reprezentuje data z jedné tabulky a který v sobě má nějaké položky, které se budou kreslit do okna. Ok, to by šlo, jedu dál. Co takhle k jednotlivým fakturám přidat políčko navíc a z další tabulky si vytáhnout podle IČO firmy názvy firem? Neřešitelný problém, hoši. Půl hodiny jsem prolézal nápovědu, vzdal jsem to. Strýček google mi též moc neporadil a když jsem se ptal spolužáka, tak mi odpověděl jednoduše:
“Tiež som to riešil a nevyriešil. Jeb na to, sprav to radšej podľa videa.”
Ve videu to bylo řešeno tak, že jsme si do okna přidali další DATABLOCK (firma), který se propojil s původním blockem. Teď si pomocí jednoho šoupátka vybíráme firmu a podle ní se zobrazují faktury v tabulce. Ok, pěkné, ale co když chce mít sekretářka přehled o všech fakturách? Není Rain Man, aby si pamatovala všechna IČO …
V zadání je taktéž napsáno, že by chtěli i MENU. Ok, no problemo. Během 10 minut jsem splácal nějaké základní menu a jal jsem se zjišťovat, kde to jako mám propojit s formulářem. Na democvičení, na kterém to prý dělali, jsem (bohužel) nebyl, tak jsem nad tím nějaký čas laboroval. Přesněji řečeno - byla to určitě víc jak hodina. V návodu od Oracle je napsáno, že do modulu formuláře stačí do položky Menu module napsat jméno souboru s menu. Simple. Ale tadá …. nefunguje. Po spuštění si servlet stěžuje na neexistující soubor s menu. Tak jsem to teda zkontroloval a zrak mne nešálí, opravdu jsou ty dva soubory vedle sebe. Tak si teda opisuju číslo chyby (a že si jich užijete, některé budete znát nazpaměť :D ) a ptám se strejdy googla. A hodný strýček odpovídá, že soubor s menu musí být v nějakém FORMSPATH. Naštěstí jsem k tomu také našel prográmek, který se usídlí v tray a umí tyto PATHy k Oraclu ukazovat a měnit. Správný path byl hodně daleko od složky s projektem, tak jsem si to zkopíroval a světe div se, ono to funguje. Zajímalo by mne, jak to chtějí opravovat …
Mezitím nastal čas oběda, kde mi bylo sděleno, že takové menu tam není třeba, že stačí okno s tlačítky. Tak jsem pracně vytvořené menu zahodil, vytvořil jsem nové okno, nový datablock (ale bez dat). Trochu se nám ten strom vlevo znepřehlednil, milý Watsone. Ale to nevadí, používáme přeci Oracle :) Vkládám tlačítkam podle videa klikám pravým, nastavuji trigger na kliknutí tlačítka. Že by to bylo tak jednoduché, jak v Delphi? Ale kdeže :D. Na tohle potřebujete buď vysokou školu, mastné školení, nebo tlustou knížku za mastné peníze. Programuje se tam v PL/SQL. Jazyk samotný to asi špatný není, nicméně má na dnešní dobu poměrně nešikovnou knihovnu funkcí. Teď nemyslím co do funkčnosti, ale do logičnosti použití. Alespoň u základních funkcí se vůbec nedá mluvit o nějaké objektovosti (nevím, jak jsou na tom vyšší úrovně jazyka). Když už jim runtime běží v Javě, která je dostatečně multiplatformní, tak mohli přidat možnost aspoň té Javy. Když jsem chtěl zavřít okno, které se z bůhvíjakého náhodného důvodu nedalo skrýt pomocí hide (křížek mi předtím nefungoval, přibastlil jsem proto tlačítko navíc), tak na mě z Googlu vybafnul asi desetiřádkový kus kódu, který se přidá do hlavního triggeru modulu a v něm se pomocí podmínek rozhodne, ve kterém okně jsme klikli na křížek a má se zavřít. Samotné okno žádné triggery nemá, takže je to potom velmi přehledné. Samozřejmě to ani potom nefungovalo, tak jsem na nějaké experimentování rezignoval a udělám tam prostě pouze to, co po nás chtějí v zadání a ani o milimetr víc.
Přijde mi, že na to, že na tom mají prachy, je to dost nedotažené. Chtěl bych někdy vidět nějakou profi aplikaci vytvořenou právě ve Forms Builderu. Viděl jsem totiž pár programů ve FoxPro, což je “malovátko” podobného (ale ne tak velkého) ražení od Microsoftu. Například Bakaláři, program, který vypadá strašně a ještě hůř se ovládá.
Těším se na prázdniny.
Nejsem sice maďar, ale pobavilo mě to :D
Budu nahazovat některé projekty, které jsem na FITu řešil :)
test :)