Táblázatos komponens testreszabása

táblázat logo

táblázat logoA Java programozási nyelv egyik ismert GUI csomagja a swing. Ennek népszerű grafikus komponense az adatok táblázatos megjelenítését biztosító JTable komponens. A táblázatos megjelenítéshez több beállítás is szükséges. A JTable egy MVC komponens, így külön kezelendők a modell, nézet és a vezérlő funkcióihoz kötődő beállítások. A modell tárolja az adatokat például DefaultTableModel típusú objektumban, amiben szétválaszthatók a fejlécben és a többi cellákban található adatok. A nézethez tartozik a betűméret, a cellák színezése, az adatok igazítása, megjelenítése, a gördítősáv. A viselkedést, a felhasználói reakciót a vezérlő határozza meg, például rendezés, görgetés, fókusz, kijelölés, oszlopok sorrendjének cseréje.

Feladat

Készítsünk olyan Java swing-es kliensprogramot, amely tetszőleges adatforrásból (XML vagy JSON a hálózatról, JDBC adatbázis kapcsolatból, ORM leképzésből származó objektumokból) képes az átvett adatok grafikus felületen való táblázatos megjelenítésére JTable komponenssel! Építsünk arra, hogy az adatokon kívül metaadatok is rendelkezésünkre állnak! A megoldás legyen univerzális!

Képernyőképek

OracleHR képernyőkép

Modell

A táblázatos GUI komponenst kezdetben inicializálni kell, illetve a benne tárolt adatok is törölhetők, ha újrahasznosításra kerül a sor:

Ki kell nyerni a tároláshoz és a megjelenítéshez kötődő adatokat (1. lépés). A metaadatokból a for() ciklus előállítja az oszlopTomb-öt, és az oszlopTipusTomb-be kerülnek az Oracle adattípusból Java objektumtípusként megfeleltetett adatok. Előbbi a fejléc feliratainak szövegeit tartalmazza, és az utóbbi befolyásolja az egyes cellákban az igazítást, illetve hatással van adott oszlop rendezésére is:

Ki kell nyerni a tároláshoz és a megjelenítéshez kötődő adatokat (2. lépés). A while() ciklus végigjárja az eredménytábla sorait és Object típusú tömböt állít elő az összetartozó rekord mezőiből. Ezek először generikus listába kerülnek, majd onnan kétdimenziós Object típusú tömbbe:

Mi indokolja a tömbökből álló generikus lista ( adatLista) alkalmazását?

A while() ciklus végrehajtása előtt nem tudjuk lekérdezni, hogy mennyi rekordot kaptunk vissza, így nem tudjuk rögtön az adatTomb-be tenni az adatokat. A Java nyelvben a tömbök mérete fix, és a deklaráció során meg kell adni. Az eredménytábla metaadatai között megtalálható a mezők száma, ami felhasználható a kétdimenziós tömb oszlopszámaként. A generikus lista dinamikus, annyi elemből fog állni, ahány lépésben végrehajtódik a while() ciklus. Ezután a listától lekérdezhető az elemszáma ( adatLista.size()), és ezzel megvan a kétdimenziós tömb sorainak száma, ami eddig hiányzott. Persze használhatnánk Vector-t is a tömbökből álló generikus lista helyett (mert a DefaultTableModel-nek van olyan túlterhelt konstruktora, ami átvenné paraméterként), de ezt inkább nem tesszük, hiszen a Vector már régóta obsolete kollekció.

Előállítjuk a vizuális komponens mögötti adatmodellt. Öröklődéssel kiegészítjük két hasznos függvénnyel, így cellák rajzolása/renderelése és rendezése megkaphatja a szükséges adattípust ( getColumnClass()), valamint letiltható a cellák szerkeszthetősége ( isCellEditable()). Utóbbiak inkább a vezérléshez kötődnek, de modellen keresztül itt és így kell beállítani:

Végül a vizuális komponens mögötti adatmodellt kell átadni:

Nézet

Adott betűtípus, betűstílus és betűméret használható a táblázat fejlécében, celláiban, illetve a betűmérettől függhet a sorok magassága:

Hasznos ha JScrollPane típusú gördítősáv tartozik a táblázathoz, így dinamikusan megjeleníthető/elrejthető a függőleges/vízszintes gördítősáv:

Vezérlés

Az adatokhoz valahogyan hozzá kell jutni. Most JDBC kapcsolatot használunk és az Oracle HR sémából kérdezünk le adatokat, de a forráskód-részlet univerzális. A folyamat a következő:

  • Betöltjük a driver osztályt.
  • Autentikációval c kapcsolatot nyitunk az adatbázis-szerver felé.
  • Végrehajtjuk a lekérdező SQL parancsot.
  • Feldolgozzuk az eredményül kapott ResultSet típusú rs objektumot.
  • Végül lezárjuk a c hálózati kapcsolatot.

Ha engedélyezzük, akkor a megjelenő táblázat fejlécében az egyes oszlopok felirataira kattintva elérhetjük, hogy az adott oszlop típusának megfelelően növekvő vagy csökkenő sorrendbe átrendeződjenek az adatok:

A kivételkezelést nem részleteztük a fenti forráskódoknál, de természetesen kötelezően adott.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam 45-52. óra: Adatbázis-kezelés JDBC alapon, illetve Java adatbázis-kezelő tanfolyam 9-12. óra: Oracle HR séma elemzése, 33-36. óra: Grafikus kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalmaihoz kapcsolódik.

Programozási Hét 2019 – CodeWeek.eu

Programozási hét 2022, CodeWeek.eu

Programozási hét 2018 CodeWeek.euAz Európai Programozási Hét idén 2019. október 5-20-ig került megrendezésre. Ez egy önkéntesek által működtetett, alulról szerveződő kezdeményezés. Az önkéntesek saját országukban a Programozási Hét nagyköveteként népszerűsítik a programozást. Ehhez nyílt és ingyenes eseményeket hirdetnek meg a CodeWeek.eu weboldalon.

A Programozási Hét célja

  • a programozással való alkotás megünneplése,
  • az emberek felvértezése képességekkel,
  • az emberek összekapcsolása,
  • még több ember érdeklődésének felkeltése a tudomány, a technológia, a mérnöki ismeretek és a matematika iránt.

Miért jó ez az érdeklődőknek/résztvevőknek?

  • A programozás szórakoztató!
  • Programozni kreatív tevékenység! Az emberiség a kezdetektől fogva alkot: agyagból, kőből, téglából, papírból vagy fából. Manapság programozással is alkotunk.
  • A programozás felvértez! Sokkal többre is képesek vagyunk annál, hogy csak fogyasszuk a digitális tartalmat; programozással sokféle dolgot alkothatunk, és azokat milliók számára elérhetővé tehetjük. Létrehozhatunk weboldalakat, játékokat, irányíthatunk egy számítógépet vagy egy robotot.
  • Értsük meg a világot! Manapság egyre több minden össze van kapcsolva. Ha némi rálátásunk van arra, hogy mi történik a színfalak mögött, akkor a világot is jobban megérthetjük.
  • A programozás megtanítja nekünk a számítógépes gondolkodást, fejleszti a problémamegoldást, kreativitást, kritikus érvelést, analitikus gondolkodást, valamint csapatmunkára késztet.
  • Manapság a munkahelyek 90%-a digitális készségeket, köztük programozási ismereteket követel a munkavállalóktól.

2015-től veszünk részt az esemény szervezésében, programozást népszerűsítő előadások, laborgyakorlatok meghirdetésével és megtartásával. 2017-ben 50+ országban 1,2 millió érdeklődő résztvevő csatlakozott.

Meghirdetett eseményeink

2019-ban három it-tanfolyam.hu-s eseményt hirdettünk meg Programozási Hét 2019 rendezvényen.
Helyszín: 1056 Budapest, Váci utca 47., 3. emelet 309-es terem, megközelítés
Dátum és időpont: 2019. október 8. 10:00-13:00-ig
Az események ingyenesek voltak, de a részvétel előzetes regisztrációhoz kötött.

Rendezvényünk plakátja

it-tanfolyam.hu - Programozási Hét 2019 CodeWeek.eu plakát

A rendezvény jó hangulatban telt, 47-en látogattak el hozzánk. Idén is volt közöttük emelt szintű informatika érettségire készülő középiskolás csoport informatikatanárával együtt, tanfolyamaink iránt érdeklődő és jelentkezést fontolgató, Java SE szoftverfejlesztő tanfolyamunkat korábban sikeresen teljesítő hallgatók és olyan is, aki tavaly járt nálunk először a Kutatók éjszakája 2018 rendezvényünkön. Az egyszerűbb lottószelvényes előadásnál most is elhangzott számos kérdés és ötlet, az absztraktabb témákhoz már lényegesen kevesebb hozzászólás/kérdés érkezett, de azért előfordult néhány. Igazán tartalmasan telt el idén is ez a három óra. Köszönjük mindenkinek, aki részt vett a Programozási hét 2019 – CodeWeek.eu rendezvényünkön. Az előadások prezentációit tanfolyamaink hallgatói számára – a témához kapcsolódó témakörökhöz, ILIAS-ra feltöltve – tesszük elérhetővé.

10:00-11:00 – Kaczur Sándor: Generáljunk lottószelvényeket és hasonlítsuk össze megoldásainkat!
Véletlenszám-generátorral lottószelvényeket állítunk elő. Többféle ötletet, módszert, algoritmust, adatszerkezetet, tesztelési módszert összehasonlítva vizsgáljuk, hogy melyik a hatékonyabb lépésszámot, memóriaigényt, bonyolultságot tekintve. Java nyelven implementálunk és az érdeklődők javaslatait is azonnal beépíthetjük a forráskódba. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kapcsolódik. Előismeretként feltételezünk némi jártasságot programozási alapismeretek, programozási tételek, ciklusok, metódusok, tömbök témakörökből.

11:00-12:00 – Kaczur Sándor: Írjunk hatékony adatbázis-lekérdezéseket!
Az Oracle HR sémában, először tipikus, hétköznapi szavakkal megfogalmazunk néhány lekérdezést, majd SQL nyelven megvalósítjuk és elemezzük, hogy helyesek-e, hatékonyak-e, mit adnak vissza. Szükség esetén optimalizáljuk, testre szabjuk ezeket. Kategóriák: egyszerű, összetett, aggregáló, soktáblás, hierarchikus/rekurzív lekérdezések. Ha lehet, grafikusan is megjelenítjük a lekérdezések eredményeit Java swing felületen, beépített JTable és  JTree komponensekkel, illetve  JFreeChart grafikonnal is. A Java adatbázis-kezelő tanfolyamunk tematikájához kötődik a program. Előismeretként feltételezünk némi jártasságot adatbázis-kezelés, SQL, Java swing felhasználói felület témakörökből.

12:00-13:00 – Kaczur Sándor: Építsünk látványos weboldalt XML fájlból megszerzett adatokból!
XML adatforrásban kapjuk egy cég alkalmazottainak adatait, amelyeket Java programmal feldolgozva, látványosan, animálhatóan megjelenítjük böngészőben az eredményt. Például: ki melyik részlegben dolgozik, kik dolgoznak az egyes részlegekben. Az érdeklődők igénye szerint a feladatot megoldhatjuk a következő technológiák közül választva: JavaScript, Bootstrap, jQuery. A Java EE szoftverfejlesztő tanfolyamunk tematikájához kötődik a program. Előismeretként feltételezünk némi jártasságot Java fájlkezelés, kivételkezelés, adatfeldolgozás, HTML, JavaScript témakörökből.

 

Kutatók éjszakája 2019

Kutatók éjszakája

Kutatók éjszakájaA Kutatók Éjszakája nemzetközi rendezvénysorozat 2005-ben indult. Magyarország 2006-ban csatlakozott. Azóta évről-évre egyre több intézmény nyitja meg hazánkban kapuit, szervez érdekes programokat, sok-sok településen, több száz helyszínen, több ezer eseményt meghirdetve sok tízezer érdeklődő/résztvevő látogatónak biztosít tartalmas estét.

Bár a kezdeményezés elsősorban a kutatói pálya népszerűsítését szolgálja, ezért leginkább a tizen- és huszonévesekre számít, az események vonzók és elég érdekesek ahhoz, hogy a kisgyerekektől a legidősebbekig mindenki megtalálja a számára izgalmas programokat. Korábban nagyobb felsőoktatási intézmények és kutatóintézetek szerepeltek döntően, de az utóbbi néhány évben egyre több kisebb intézmény, tehetséggondozással foglalkozó középiskola, cég, egyesület is csatlakozott a rendezvényhez. A Kutatók éjszakája rendezvény minden meghirdetett programja ingyenes.

Rendezvényünk plakátja

it-tanfolyam.hu_Kutatok_ejszakaja_2019_plakat

Az it-tanfolyam.hu 2019-ben sem marad ki a sorból. (2018-ban is szerveztünk programokat.) Meghirdettünk öt programot a kutatokejszakaja.hu weblapon. Az eseményekre regisztrálni kell a weblapon, ami talán szervezőként ránk keresve bizonyul legegyszerűbbnek. Szervezői lapunk: https://www.kutatokejszakaja.hu/szervezo-intezmeny/it-tanfolyam-hu/. A regisztrációs időszak szeptember 14-26-ig tart és a programjainkra szeptember 27-én 17:40-20:50 óráig kerül sor.

Bízunk abban, hogy idei programjaink is népszerűek lesznek, sok-sok kérdés is elhangzik és kellemes hangulatú szakmai párbeszéd alakul ki.

Az előadások prezentációit tanfolyamaink hallgatói számára – a témához kapcsolódó témakörökhöz, ILIAS-ra feltöltve – tesszük elérhetővé.

17:40-18:10 – Milyen eséllyel és hány találatos szelvénnyel nyerhetünk, ha sok lottószelvénnyel fogadunk?
Véletlenszám-generátorral lottószelvényeket állítunk elő. Különbözőeket. Sokat: ezret, tízezret, százezret. Azután szimulálunk egy lottósorsolást. Megnézzük az eredményeket: hány darab két-, három-, négy- és telitalálatos szelvényt kaptunk. Átgondoljuk, hogy milyen eltérések adód(ná)nak ötös-, hatos- és heteslottó esetén. Közösen áttekintjük a Java nyelven implementált szoftver lépéseit és testre szabásának lehetőségeit. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kapcsolódik.

18:20-18:50 – Tervezzünk hálózatos programokat! – Denevérek a barlangban
Adott a szerver és kliensek. Előbbi a barlang, utóbbiak a denevérek. Átgondoljuk, hogyan kommunikálnak egymással és ennek milyen elvi és gyakorlati megvalósítási lehetőségei adódnak. Ismertetjük a Java RMI technológiáját. Mit érdemes megmutatni a két program működése közben? Közösen áttekintjük az osztálydiagramot és a Java forráskódokat. Ötletelünk és megfogalmazunk sok-sok ötletet a továbbfejlesztésre. A program a Java EE szoftverfejlesztő tanfolyamunk tematikájához kapcsolódik.

19:00-19:30 – Jelenítsük meg webes térképeken Céline Dion koncertturnéjának helyszíneit!
A híres énekesnő idén szeptemberben világ körüli turnéba kezd (Courage World Tour) és ennek állomásait kb. fél évre előre meghirdették már áprilisban. Ismertetünk egy esettanulmányt. Ez egy hálózatos Java projekt, amely webről összegyűjtött adatok alapján, többféle Google Charts objektumot állít elő. A termék JavaScript-re épülő weboldalak sokasága, amely tipikus felhasználói igényeket/követelményeket kielégíthet. A megvalósítás kivételkezelést alkalmaz, HTML és JSON tartalmat olvas és generál, valamint elvégzi/elvégezteti az adatok térképen való megjelenítéséhez szükséges geokódolást. Az előadás ismerteti a specifikáció és a tervezés lépéseit, az implementációt, a tesztelést, valamint továbbfejlesztési javaslatokat is ad.
A program a Java EE szoftverfejlesztő tanfolyamunk tematikájához kapcsolódik.

19:40-20:10 – Írjunk hatékony adatbázis-lekérdezéseket!
Az Oracle HR sémában, először tipikus, hétköznapi szavakkal megfogalmazunk néhány lekérdezést, majd SQL nyelven megvalósítjuk és elemezzük, hogy helyesek-e, hatékonyak-e, mit adnak vissza. Szükség esetén optimalizáljuk, testre szabjuk ezeket. Kategóriák: egyszerű, összetett, aggregáló, soktáblás, hierarchikus/rekurzív lekérdezések. Ha lehet, grafikusan is megjelenítjük a lekérdezések eredményeit Java swing felületen, beépített JTable és JTree komponensekkel, illetve JFreeChart grafikonnal is. A Java adatbázis-kezelő tanfolyamunk tematikájához kötődik a program.

20:20-20:50 – Gondolkodjunk logikusan!
Az előadás során áttekintjük az intelligencia, a kreatív problémamegoldó és logikus gondolkodás összefüggéseit és izgalmas feladatokból válogatva közösen megoldunk néhány fejtörő feladatot.

 

Programozási Hét 2018 – CodeWeek.eu

Programozási hét 2022, CodeWeek.eu

Programozási hét 2018 CodeWeek.euAz Európai Programozási Hét idén 2018. október 6-21-ig került megrendezésre. Ez egy önkéntesek által működtetett, alulról szerveződő kezdeményezés. Az önkéntesek saját országukban a Programozási Hét nagyköveteként népszerűsítik a programozást. Ehhez nyílt és ingyenes eseményeket hirdetnek meg a CodeWeek.eu weboldalon.

A Programozási Hét célja

  • a programozással való alkotás megünneplése,
  • az emberek felvértezése képességekkel,
  • az emberek összekapcsolása,
  • még több ember érdeklődésének felkeltése a tudomány, a technológia, a mérnöki ismeretek és a matematika iránt.

Miért jó ez az érdeklődőknek/résztvevőknek?

  • A programozás szórakoztató!
  • Programozni kreatív tevékenység! Az emberiség a kezdetektől fogva alkot: agyagból, kőből, téglából, papírból vagy fából. Manapság programozással is alkotunk.
  • A programozás felvértez! Sokkal többre is képesek vagyunk annál, hogy csak fogyasszuk a digitális tartalmat; programozással sokféle dolgot alkothatunk, és azokat milliók számára elérhetővé tehetjük. Létrehozhatunk weboldalakat, játékokat, irányíthatunk egy számítógépet vagy egy robotot.
  • Értsük meg a világot! Manapság egyre több minden össze van kapcsolva. Ha némi rálátásunk van arra, hogy mi történik a színfalak mögött, akkor a világot is jobban megérthetjük.
  • A programozás megtanítja nekünk a számítógépes gondolkodást, fejleszti a problémamegoldást, kreativitást, kritikus érvelést, analitikus gondolkodást, valamint csapatmunkára késztet.
  • Manapság a munkahelyek 90%-a digitális készségeket, köztük programozási ismereteket követel a munkavállalóktól.

Én 2015-től veszek részt az esemény szervezésében, programozást népszerűsítő előadások, laborgyakorlatok meghirdetésével és megtartásával. 2017-ben 50+ országban 1,2 millió érdeklődő résztvevő csatlakozott.

Meghirdetett eseményeink

2018-ban három it-tanfolyam.hu-s eseményt hirdettünk meg Programozási Hét 2018 rendezvényen.
Helyszín: 1056 Budapest, Váci utca 47., 3. emelet 309-es terem, megközelítés
Dátum és időpont: 2018. október 10. 9:00-12:00-ig
Az események ingyenesek voltak, de a részvétel előzetes regisztrációhoz kötött.

Rendezvényünk plakátja

it-tanfolyam.hu - Programozási Hét 2018 CodeWeek.eu plakát

A rendezvény jó hangulatban telt, 53-an látogattak el hozzánk. Volt közöttük emelt szintű informatika érettségire készülő középiskolás csoport informatikatanárával együtt, tanfolyamaink iránt érdeklődő és jelentkezést fontolgató, Java SE szoftverfejlesztő tanfolyamunkat korábban sikeresen teljesítő hallgatók és olyan is, aki két hete járt nálunk először a Kutatók éjszakája 2018 rendezvényünkön. Az egyszerűbb lottószelvényes előadásnál elhangzott sok-sok kérdés és ötlet, az absztraktabb témákhoz már lényegesen kevesebb hozzászólás/kérdés érkezett, de azért elhangzott néhány. Igazán tartalmasan telt el ez a három óra. Köszönjük mindenkinek, aki részt vett a Programozási hét 2018 – CodeWeek.eu rendezvényünkön. Az előadások prezentációit tanfolyamaink hallgatói számára – a témához kapcsolódó témakörökhöz, ILIAS-ra feltöltve – tesszük elérhetővé.

9:00-10:00 – Kaczur Sándor: Generáljunk lottószelvényeket és hasonlítsuk össze megoldásainkat!
Véletlenszám-generátorral lottószelvényeket állítunk elő. Többféle ötletet, módszert, algoritmust, adatszerkezetet, tesztelési módszert összehasonlítva vizsgáljuk, hogy melyik a hatékonyabb lépésszámot, memóriaigényt, bonyolultságot tekintve. Java nyelven implementálunk és az érdeklődők javaslatait is azonnal beépíthetjük a forráskódba. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kapcsolódik. Előismeretként feltételezünk némi jártasságot programozási alapismeretek, programozási tételek, ciklusok, metódusok, tömbök témakörökből.

10:00-11:00 – Kaczur Sándor: Írjunk hatékony adatbázis-lekérdezéseket!
Az Oracle HR sémában, először tipikus, hétköznapi szavakkal megfogalmazunk néhány lekérdezést, majd SQL nyelven megvalósítjuk és elemezzük, hogy helyesek-e, hatékonyak-e, mit adnak vissza. Szükség esetén optimalizáljuk, testre szabjuk ezeket. Kategóriák: egyszerű, összetett, aggregáló, soktáblás, hierarchikus/rekurzív lekérdezések. Ha lehet, grafikusan is megjelenítjük a lekérdezések eredményeit Java swing felületen, beépített JTable és  JTree komponensekkel, illetve  JFreeChart grafikonnal is. A Java adatbázis-kezelő tanfolyamunk tematikájához kötődik a program. Előismeretként feltételezünk némi jártasságot adatbázis-kezelés, SQL, Java swing felhasználói felület témakörökből.

11:00-12:00 – Kaczur Sándor: Építsünk látványos weboldalt XML fájlból megszerzett adatokból!
XML adatforrásban kapjuk egy cég alkalmazottainak adatait, amelyeket Java programmal feldolgozva, látványosan, animálhatóan megjelenítjük böngészőben az eredményt. Például: ki melyik részlegben dolgozik, kik dolgoznak az egyes részlegekben. Az érdeklődők igénye szerint a feladatot megoldhatjuk a következő technológiák közül választva: JavaScript, Bootstrap, jQuery. A Java EE szoftverfejlesztő tanfolyamunk tematikájához kötődik a program. Előismeretként feltételezünk némi jártasságot Java fájlkezelés, kivételkezelés, adatfeldolgozás, HTML, JavaScript témakörökből.

 

Gyűjtsünk össze adatokat névjegykártya készítéshez!

névjegy

Induljunk ki az Oracle HR sémából!

Az EMPLOYEES táblából szükséges adatok: alkalmazottak neve konkatenálva a FIRST_NAME és LAST_NAME mezőkből, illetve a meglévő elérhetőségek: EMAIL (kiegészítve), PHONE_NUMBER és a hozzáadott WEBSITE. A JOBS táblából szükséges a munkakör megnevezése a JOB_TITLE mezőből, és a részleg neve a DEPARTMENTS tábla DEPARTMENT_NAME mezőből.

Építeni kell a DEPARTMENTS és EMPLOYEES táblák közötti 1:N kapcsolatra (azaz egy adott részlegben több alkalmazott is dolgozik), amelyet a DEPARTMENT_ID mező valósít meg. Nem szükséges az EMPLOYEES és DEPARTMENTS táblák közötti 1:N kapcsolat (azaz egy adott alkalmazott vezetőként több részleget is vezethet). Szükséges a JOBS és az EMPLOYEES táblák közötti 1:N kapcsolat, ami a JOB_ID mezővel valósul meg.

Hasznosak a köztes/átmeneti elnevezések a tábláknál ( D, J, E) és a mezőknél (például EMPLOYEE_NAME) egyaránt. Előbbieknél a mezőnevek minősítéséhez és egyértelmű hivatkozásaihoz kellenek, utóbbinál a metaadatokba kerülnek és utólag kiolvashatók ( ResultSetMetaData) és megjelenítéstől függően tartozhatnak például egy JTable vizuális komponens mögötti DefaultTableModel-hez.

A CONCAT függvénynek két paramétere lehet, ezért csak ott használtam, ahol ez kézenfekvő volt és elegendőnek bizonyult (az EMPLOYEE_NAME-nél nem akartam egymásba ágyazni két CONCAT-ot).

Az első lekérdezés a 107-ből 106 alkalmazott adatait adja vissza.
A második lekérdezés a hiányzó 1 alkalmazott adatai miatt szükséges, akinek nincs beállított részlege ( DEPARTMENT_ID IS NULL). Neki hiányos a COMPANY_DEPARTMENT_NAME adata, de így is egységes lehet az eredménytáblaként kapott adathalmaz (például oszlopok sorrendje és adattípusa).
A két lekérdezés eredményét egyesíteni kell ( UNION).

A lekérdező parancs

A lekérdező utasítást bele kell építeni egy Java kliensprogramba (MVC architekturális tervezési minta szerint a modell rétegbe), ami JDBC alapon kapcsolódik az Oracle adatbázis-szerver HR sémájához olyan felhasználó nevében, aki csatlakozhat és lekérdezhet. Meg kell tervezni és felügyelni kell a biztonságos kapcsolatot (kivételkezeléssel), annak életciklusát (nyit, lekérdez, zár), valamint gondoskodni kell az eredménytábla megjelenítéséről.

A keletkező eredménytábla exportálható Excel-be (XLS, XLSX formátumokba), és kiegészíthető például még egy oszloppal/mezővel (darabszám). Ezután átadható a grafikusnak, aki például felhasználja azt adatforrásként saját névjegykártya tervező szoftverében, vagy használja a Word körlevél varázslóját. Az adatforrás sorrendje ( ORDER BY) megkönnyítheti az elkészült névjegykártyák szétosztását.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam 45-48. óra: Adatbázis-kezelés JDBC alapon, 1. rész alkalmához, illetve a Java adatbázis-kezelő tanfolyam 9-12. óra: Oracle HR séma elemzése, 13-16. óra: Konzolos kliensalkalmazás fejlesztése JDBC alapon, 1. rész, 33-36. óra: Grafikus kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalomhoz kapcsolódik.

Az SQL forráskód formázásához a Free Online SQL Formatter-t használtam.