Az Oracle HR sémából építünk organogramot, amivel megjeleníthető a szervezeti hierarchia. Személyenként készítünk csomópontokat. (Másképpen is lehetne: például részlegenként.) A megvalósítás során kétszer konvertálunk A-ból B-be. Először az adatbázisból/adatforrásból SQL lekérdezéssel jutunk hozzá a szükséges adatokhoz, amelyeket generikus listába képezzük le. Ezután a listát feldolgozva generálunk HTML fájlt, amely tartalmaz egy Organization Chart diagramot.
Hasonló feladat: Ki kinek a vezetője?, rekurzív lekérdezéssel. Érdemes összehasonlítani a kétféle szemléletmódot.
Tervezés
Most pedig azt használjuk fel, hogy az Oracle HR sémában az
EMPLOYEES táblában reflexió van, amelyet az
EMPLOYEE_ID és a
MANAGER_ID mezők biztosítanak.
Az Organization Chartnál három adatsor adható meg. Ezek most testre szabva (mindegyik szöveges):
'Employee lastname',
'Job ID', valamint jelmagyarázatként további három mező összefűzve:
'Employee name, Department name, Job title'. Az organogramon megjelenő adatok például:
"Raphaely",
"PU_MAN", valamint a csomópontra fókuszálva megjelenő tooltip:
"Employee: Den Raphaely, Department: Purchasing, Job: Purchasing Manager". A
DEPARTMENTS táblából – az
EMPLOYEES-zel a
DEPARTMENT_ID-vel összekötve – megkapjuk a
DEPARTMENT_NAME-t. A
JOBS táblából pedig – az
EMPLOYEES-zel a
JOB_ID-vel összekötve – megkapjuk a
JOB_TITLE-t.
A lekérdező parancs
Az
EMPLOYEE_ID elsődleges kulcs, vagyis kötelező. A
MANAGER_ID nem kötelező, a hierarchia tetején álló vezetőnél ez a mező null értékű. Mivel a
MANAGER_ID nem kötelező, így külön lekérdező parancsban kell előállítani a 15 középvezetőt együtt a 2 felső vezetővel, valamint az egyetlen felső vezetőt, akinek a
MANAGER_ID-ja null. Ezt a két részeredményt össze kell fűzni (
UNION).
Az eredménytábla
Az adatfeldolgozás lépései
Java programozási nyelven kötelező a kivételkezelés a JDBC kapcsolatfelvétel, SQL parancs futtatása, valamint a fájlkezelés során. A
JDBCConnection interfészben definiált szöveges konstansok:
DRIVER,
URL,
USER,
PASSWORD (az adatbázis-szerverrel való kommunikációhoz),
SQL (a lefuttatandó lekérdező parancs). Az
OrganizationChart interfészbe került a
HTML_FILE_PATH (a generálandó HTML fájl
Path útvonala) és a
HTML (konstans váz az organogram testre szabott HTML+JavaScript forráskódja). Az SQL parancs
ResultSet eredménytáblájának feldolgozása során áll elő az
orgChartDataList generikus lista. A HTML konstans szövegben lévő
#OrgChartData# elemet ki kell cserélni a generikus listából Stream API-val dinamikusan összefűzött adatokra. A fenti példa ide kapcsolódó része:
"[{'v':'Raphaely', 'f':'Raphaely<div style="color:red; font-style:bold">PU_MAN</div>'}, 'King', 'Employee: Den Raphaely, Department: Purchasing, Job: Purchasing Manager']". Ezt követően a
java.nio csomag
Files osztályának
write() metódusával fájlba menthető az előállított fájltartalom. A konkrét Java forráskódot most nem részletezem.
Az elkészült organogram
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 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.