Organogram készítése

Organogram logó

HR-organogram-logoAz 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

SQL-organogram

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

SQL-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

HR-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.

ADA 2020

A Debreceni Egyetem Informatikai Kara 2020. december 15-16-án megrendezte az ADA konferenciasorozat harmadik konferenciáját (ADA 2020), amely az informatika és a STEM területei iránt érdeklődők konferenciája volt.

A konferencia célja

Az ADA konferenciasorozat elsődleges célja, hogy lehetőséget és közeget biztosítson az informatikai és a STEM területeken dolgozó, kutató vagy még a tanulmányaikat folytató nők szakmai megjelenésének, kommunikációjának. A konferencia kiemelt figyelmet kíván fordítani a kapcsolódó szakterületek munkaerő utánpótlásának problémáira, az érdeklődők pályaválasztási motivációja növelésének, illetve az orientáció kialakításának lehetőségeire. A konferenciasorozat szeretne hozzájárulni a nők arányának növekedéséhez a fenti területekhez tartozó szakmákban és kutatásokban.

Kiknek érdemes részt venni?

Mindenkinek, aki érdeklődik az informatika és a STEM területeinek új eredményei iránt! Minden kutatónak, oktatónak, felsőoktatásban tanuló vagy doktori tanulmányokat folytató hallgatónak, akik tudományos eredményeiket szeretnék bemutatni egy szélesebb szakmai közönség előtt.

Akik az informatikához, a STEM területekhez, illetve ezek oktatásához kapcsolódó munkájuk és tapasztalatuk alapján kialakult jó gyakorlatukat kívánják megosztani a szakmabeliekkel.

Az eseményről

Mindkét nap 1-1 plenáris előadással indult. 11 szekcióban (Számítástudomány, Természettudomány, Okos város és okos otthon, Női tapasztalatok a STEM területén, Nők a tudományban, Virtuális valóság, Virtuális valóság és vizualizáció, Középiskolai oktatás, Új didaktikai irányvonalak, Digitális eszköztár használata, Robotika) zajlott a 40 szekció előadás. A konferencia a Webex online platformon zajlott.

Elérhető a konferencia programja: keddi program és szerdai program, valamint az absztraktok is.

2020-ban előadást tartottam „Koronavírus Java projekt – a tervezés és megvalósítás mérföldkövei” címmel, amely a konferencia Digitális eszköztár használata szekciójába került. Az absztrakt: „Az előadás/cikk egy szoftverfejlesztő OKJ képzésen használt/használható esettanulmányt ismertet. A Java projekt két különböző weboldalról ment adatokat, ezek: https://koronavirus.gov.hu/elhunytak és https://www.worldometers.info/coronavirus/country/hungary/. Az adatokat helyi állományrendszerben tárolja, konvertálja, összefésüli, végül némi adattisztítást követően feldolgozza. A Java alkalmazások gyakorlat tantárgy tematikájának kapcsolódó elemei: OOP-MVC, swing GUI, eseményvezérelt programozás, szövegfájlok kezelése, hálózati kommunikáció, kivételkezelés. Az előadás/cikk ismerteti a Java projekt tervezésének és megvalósításának fontosabb lépéseit, mérföldköveit.”

Az előadásom prezentációját és az Java projekt/esettanulmány forráskódját ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Az előadásom témája a Java EE szoftverfejlesztő tanfolyam több alkalmához is kötődik.

Részt vettem az ADA 2019 konferencián is.

Fibonacci-spirál

Fibonacci nap

Fibonacci nap 2018A Fibonacci-spirál a népszerű Fibonacci-sorozat elemei által meghatározott oldalhosszúságú négyzetekbe rajzolt maximális sugarú negyedkörök megfelelően összeillesztett darabjaiból/sorozatából áll. Sokszor hasonlítják az arany spirálhoz (jól közelíti), amely az aranymetszéshez kötődik.

A Fibonacci-spirál

Vegyük a Fibonacci-sorozat első 10 elemét! Rajzoljuk egymás mellé az alábbi elrendezésben belülről kifelé haladva az 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 oldalhosszúságú négyzeteket (az alábbi ábrán vékony sárgával jelölve). Piros színnel rajzoljuk bele a négyzetekbe a négyzet oldalhosszával megegyező sugarú negyedköröket. A negyedkörök megfelelő elrendezésben folytonos görbét alkotnak, és ezt nevezzük Fibonacci-spirálnak (az alábbi ábrán vastag pirossal jelölve).

Fibonacci-spirál 1

A rajzolás bármeddig folytatható, mert a sorozat végtelen, a négyzetek illeszkednek és az ábra rekurzív, önhasonló. Az alábbi animáció mutatja, hogyan alakul a spirál a nézőpont közelítésével. A viselkedés távolítás során is azonos lenne.

Fibonacci-spirál 2

Korábban blogoltunk már a Fibonacci napról, amelyet minden évben november 23-án ünneplünk. A sorozat első néhány eleméből összeáll a 11.23. és értelmezhető dátumként. Most nem a sorozat elemeinek előállítására fókuszálunk, hanem arra, hogy ezekből felépítsük a Fibonacci-spirált.

Készítsünk Java programot!

Grafikus felületű Java programot készítünk, amely 21 animációs fázisban mutatja be a Fibonacci-sorozat első 10 eleméből álló Fibonacci-spirál felépítését. A rajzolás fázisai:

  • Az 1. fázis a kiindulópontként tekinthető fehér, üres rajzlap. A rajzlap fekvő, mérete 890*550 pixel, amelyre éppen elfér a 10 negyedkörből álló spirál.
  • A 2-11. fázisban megfelelő pozícióba/koordinátákra kerülnek fel az ábra vázát alkotó négyzetek, belülről kifelé haladva. A négyzetek oldalainak hosszúsága a sorozat elemeinek megfelelő. A szomszédos négyzetek különböző színekkel kitöltöttek és mindegyikben megjelenik a sorozat megfelelő eleme.
  • A 12-21. fázisban – szintén belülről kifelé haladva – a négyzetek törlődnek és helyükre a spirált alkotó negyedkörök kerülnek fekete színnel. A 21. fázist tekintjük végeredménynek.

A fázisok kézzel, nyilakkal jelölt (Első, Előző, Következő, Utolsó) vezérlő nyomógombokkal megjeleníthetők, illetve egyben, időzítve animációként is lejátszható a rajzolási folyamat. Az elkészült program működése megfigyelhető az ábrán:

Fibonacci-spirál Java program

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 Java SE szoftverfejlesztő tanfolyamunkon, a szakmai modul Objektumorientált programozás témakörét követő 29-36. óra Grafikus felhasználói felület alkalmain már tudunk egyszerűbb szimulációs programot tervezni, kódolni, tesztelni.

LEGO Education módszertani képzés / Robotika Mindstorms EV3 robottal

„A LEGO® Education olyan, tanulást segítő megoldásokat fejleszt, melyek betekintést nyújtanak tudomány és technológia rövid történetébe, miközben a tanulás folyamatát egy élménnyé teszik. A termékeinket úgy terveztük, hogy a kísérletekben résztvevő diákok aktív közreműködésüknek köszönhetően első kézből, saját bőrükön szerzett tapasztalatokkal fejlesszék a szerkezetekkel, azok működésével valamint a programozási technikákkal kapcsolatos ismereteiket.” – írják a H-Didakt Kft. honlapján, a LEGO® MINDSTORMS® Education EV3 terméklapján. Az önálló felfedezés izgalmát így határozzák meg: „A LEGO® Education megoldásai olyan gyakorlati tanulási technikákon alapulnak, melyek segítik a gyerekeket, hogy elsajátítsák a dinamikus tanulás képességét. Ahelyett, hogy egyszerű memorizálásra bátorítana, a diákokat olyan kihívás elé állítja, melyek arra késztetik őket, hogy használják a képzeletüket, javítsák a problémamegoldó készségüket, valamint a másokkal való együttműködésre is késztet. A diákok átélhetik az önálló felfedezés izgalmát, valamit olyan létfontosságú készségekre tehetnek szert, mely jövőbeli sikerük záloga lehet.”

Élményalapú tanulás

A hagyományosnak tekinthető tanítási paradigmákat fokozatosan leváltják az alternatív pedagógia módszerei. A változás okai ismertek: a szakképzés sajátos igényei, a felnőttoktatás terjedése, a tudomány és a technika felgyorsult fejlődése, az informatika és a hírközlés átalakulása. Az alternatív tanulási stratégiák alapvető célja az, hogy a tanuló ne a passzív „elszenvedője” legyen az ismeretek elsajátításának, hanem aktív tevékenysége (vagy legalábbis annak szimulációja) alapján vonjuk be őt ebbe a folyamatba. Ennek hatására váljék számára élményszerűvé az új tudás elsajátítása és belsővé válása is. A fenti cél alapján nevezzük az ilyen módszereket összefoglalóan élményalapú tanulásnak.” Néhány pedagógiai módszer/eszköz a tanulási élmények elérésére: kooperatív tanulás, drámapedagógia, projektmódszer, médiapedagógia, felfedezéses tanulás, számítógépes tanulás.

Kolb négy lépésből álló tapasztalati tanulási ciklust javasolt: tapasztalat, reflexió, általánosítás, alkalmazás. „Minden összetevőben megjelenik a cselekvés, az önálló és az együttes munka. Így az élménypedagógiai alapokon nyugvó tanulási folyamat a cselekvés általi tanulás és fejlődés sajátos változata, multiszenzoros tanítási folyamat. Az élménypedagógia a helyzetek teremtésének nagymestere, ezáltal cselekvésre készteti a résztvevőt, provokál, sikert kínál. A résztvevők/tanulók próbára teszik tudásukat, képességeiket, kreativitásukat. Mindezek által feltárva a fizikai, és pszichikai képességeiket. Az élménypedagógia a személyes élményre, megélésre, tapasztalat-és ismeretszerzésre koncentrál. A saját tapasztalati tanulás lényege az önirányítás”, foglalta össze Molnár Katalin.

Módszertani képzés

2020. szeptember 21-én részt vettem a H-Didakt Kft. LEGO Education módszertani képzés / Robotika Mindstorms EV3 robottal című tanári felkészítésén. A helyszínt a győri Széchenyi Egyetem Apáczai Csere János Kar biztosította, amely saját Lego Robot laborral rendelkezik. A blog bejegyzésben látható fényképek ott készültek.

Megismerkedtünk a LEGO MINDSTORMS Education EV3 szoftver alapfunkcióival. Kaptunk ötleteket arra, hogy a különböző életkorú diákok/tanulók/hallgatók számára milyen projektfeladatok az ideálisak. Bemutatták a hazai és nemzetközi versenyeket, ami a csoportmunkában megvalósuló kooperációt kiegészítendő kiváló megmérettetési lehetőséget jelenthet. Én magam is voltam már zsűritag FLL robotversenyen. Mindannyian átélhettük az élményt: milyen összeépíteni, beállítani egy robotot, elkészíteni majd rátölteni a problémát megoldó szoftvert, kipróbálni, finomhangolást végezni. Informatikatanárként nyilván triviális a szoftver használata és az egész folyamat, de újszerű megközelítésnek éreztem azt, hogy szinte minden tantárgyhoz összeállítható olyan projektfeladat, amelyhez felhasználható a robot. Persze át kell élni az első buktatókat is: például amikor nagyon vártam, hogy ugató vagy nyávogó hangot adjon a robot, ha piros vagy sárga színt érzékel, de ehhez nem ártott volna megfelelően összedugni a kábeleket sem. 😉 A robot programozásához szükséges az alapvető algoritmikus építőkockák és érzékelők ismerete. A többi a kreativitáson múlik, aminek a fejlesztését kiváló oktatóvideók és példatárak is segítik. A sok segédanyag közül kiemelem Kiss Róbert: Robotika feladatgyűjteményét.

Többször is elhangzott, hogy ugyanannak a feladatnak több – különböző szintű – jó/helyes/elfogadható megoldása is lehet/van. Matematika szakos tanárként rögtön a Pólya-féle problémamegoldás lépései jutottak eszembe: megértés, tervezés, megoldás, ellenőrzés.

Például: juttassunk el a robottal a Marsról a Földre szállítmányt!

Ha profi megoldást szeretnék, akkor a robotnak meg kell találnia a csomagot, tolnia kell, kanyarodik vele, tovább tolja, végül megáll. Persze a kereséshez érzékelők és tesztelős ciklus kell, a kanyarodáshoz ciklus induló- és célfeltétellel, a haladáshoz tesztelős ciklus, a megálláshoz célfeltétel. Például kanyarodni akkor kell, amikor a robot előtt „megjelenik az út közepén” a fekete pályán egy ferde fehér csík. Ha csalok, vagy csak egyszerűbben gondolkodom, akkor kezdetben a robot irányba áll, halad előre kb. 40 cm-t, fordul balra kb. 45°-ot, majd halad előre kb. 70 cm-t a célig. Ilyenkor 1-2-3 teszt/finomhangolás során 3 szekvenciával is megoldható a feladat. A fordulás is lehet profin tervezett, kiszámolt, vagy történhet tapasztalati úton is: ha balra kell fordulni, akkor a robot jobb oldali kerekének fél fordulatával lemérhető, hogy az hány fokos elfordulást jelent. Persze számíthat, hogy mekkora ívben kell fordulni: kis ív esetén a robot jobb kereke fordulhat előre felet, miközben a bal kereke is fordul (negyedet, felet), de hátrafelé. Izgalmasnak tűnt.

Rögtön eszembe jutott a Bloom-féle taxonómia négy gondolkodási/műveleti szintje is: ismeret, megértés, alkalmazás és magasabb rendű műveletek (analízis, szintézis, értékelés). Ezekre a szintekre tudatosan hivatkozunk Java SE szoftverfejlesztő tanfolyamunkon is, amikor egy-egy programozási feladatot többféleképpen is megoldunk. Ezeket evolúciós projekteknek tekintjük.

A tanári felkészítést Kállai Balázs Lego tréner tartotta. Biológia szakos tanárként több olyan példát is említett, amelyek interdiszciplináris jellegűek, így jól összefogják például a természettudományos és/vagy STEM alaptantárgyakat, alkalmasak tematikus napok/hetek megvalósítására. Vendégelőadóként Kövecsesné Dr. Gősi Viktória – az SZE oktatási dékánhelyettese – a módszertani és érzékenyítésről szóló részben ismertette A léleknek idő kell című tantárgyának tematikáját. A kollégák abszolút elhivatottak voltak, célorientáltan és bármilyen szakos tanár kollégák számára is közérthetően foglalták össze a gyakorlatban kiválóan használható ötleteiket, tapasztalataikat. A szemléletformáló tanári felkészítést ajánlom az érdeklődő kollégák számára!

 

Népesedési világnap

Népesedési világnap logó

Népesedési világnap logóAz ENSZ 1987-ben július 11-ét a népesedési világnappá (World Population Day) nyilvánította. Bolygónk lakossága aznap érte el az 5 milliárdot. További kerek számok voltak: 1999. október 12-én 6 milliárd, 2011. október 30-án 7 milliárd. További kerek számok várhatóak: 2023 – 8 milliárd, 2037 – 9 milliárd, 2057 – 10 milliárd. A KSH elemzése részletes elemzéseket közöl évről-évre a témában, például: 2019-ben, 2018-ban. A worldometer.info weboldalon folyamatosan frissülő kimutatások érhetők el a népességhez globálisan, valamint országonként is: például Magyarország aktuális népesedési adatai.

A népesedési világnap inspirált egy Java program megtervezésére és megírására. A swing GUI-s program megjeleníti a worldometer.info weboldalról kinyerhető adatok alapján régiónként (kontinensenként) az elérhető adatokat 1950-től 2020-ig az alábbiak szerint egy világtérképen.

Az elkészült program

Népesedési világnap Java program

Tervezés

Objektumorientált szemlélettel, MVC architekturális tervezési mintát követünk, angol nyelvű interfész, osztály, változó, objektum, metódus nevekkel. A projekt neve: WorldPopulation, a csomag neve: worldpopulation. Amit lehet, konstansként interfészbe (szeparálva) teszünk és az MVC rétegekhez kötődő osztályok implementálják. A modell minden évszámhoz tárolja a szükséges adatokat, mindezt egyetlen betöltéssel/letöltéssel éri el. A program kliensként hat régióra vonatkozó adatot gyűjt össze, alkalmazkodva a szerver adatforráshoz. A címsorban lévő összesített adat is elérhető közvetlenül a weboldalon, de a kisebb adatforgalom érdekében hasznos inkább a kliensben összesíteni. Mindössze egyetlen eseménykezelés szükséges: a csúszka beállításával megadott évszám alapján frissíteni kell a régiók címkéit és az ablak címsorát. Öröklődés hasznos a feladat megoldása során: egyrészt interfészek, másrészt osztályok között.

Interfészek

Az ősinterfész a WorldPopulationConstants, benne az évszám intervallum MIN_YEAR és MAX_YEAR határaival, valamint a megjeleníthető régiók neveivel tömbben: REGION_NAME_ARRAY. Két utódinterfész épül az ősre: ModelConstants és ViewConstants. Előbbi interfész az adatforráshoz kapcsolódik: URL_COMMON az URL eleje, URL_ARRAY az URL végei régiónként tömbben. Utóbbi interfész a megjelenítéshez kapcsolódik: WORLD_MAP_IMAGE a háttérkép annak WORLD_MAP_RECT méretével együtt, valamint a régiónkénti REGION_RECT_ARRAY téglalapok tömbje a kezdeti pozíciókkal/méretekkel, TITLE a sablon a program címsorához (frissítendő az évszámmal és az összesített népességgel). A megfelelő utódinterfészt mindig implementálja az MVC szerint hozzá illeszkedő osztály.

Osztályok

A belépési pont a WorldPopulation.java fájlban található.

Három összetartozó elemi adatot fog össze egybe a RegionData POJO, ezek name, year, population nevű rendre String, int, long típusú adatok. Például: Európa, 2020, 747643253. Tartalmaz két függvényt: getPopulation(), valamint toString(). Utóbbi HTML formátumban adja vissza a megjelenítendő adatokat.

A JLabel-ből származik az igényekhez alakított RegionLabel osztály. Ennek van előre megadott pozíciója, mérete, betűtípusa, betűmérete, sárga háttérszíne, piros kerete. Ezenkívül a téglalap átlátszó, valamint a benne megjelenő HTML tartalom vízszintesen középre igazított. Némi extra funkció, hogy egérrel megfogva – drag and drop – áthelyezhető, ami a MouseMotionListener egérmozgást figyelő interfész mouseDragged() metódusának felülírásával válik lehetővé. A mozgathatóságáért saját maga felel. Példaként közöljük az osztály teljes forráskódját:

A webről adatokat szerez és tárolja a Model osztály, a java.io és java.net csomagokra építve. Egy példa: a https://www.worldometers.info/world-population/europe-population/ oldal forrásából nyeri ki az osztály az alábbi adatokat:

Ezek parszolását követően elkészül egy optimálisnak tekinthető, generikus listákból álló regionListArray tömb adatszerkezet. A parszolás történhet egyszerű szövegkezeléssel vagy JSON feldolgozással is. Erre épülnek a konstruktorral és vezérlővel összehangoltan működő getter metódusok: getHTML(), getRegionList(), getRegionData(), getPopulation(). A JSON adatforrás feldolgozását most nem részletezzük, de hasonlóról blogoltunk már: Időjárás Budapesten.

A grafikus felhasználói felületet adja a JFrame utód View osztály. Három GUI komponensből áll: pnWorldMap – háttérkép JPanel, lbYear – kiválasztott/aktuális év JLabel, slYear – kiválasztható/görgethető aktuális év JSlider. Izgalmas megoldani egymásra/egymáson elhelyezni a komponenseket. Egy JLayeredPane komponens  DEFAULT_LAYER rétegére kerül a térképet tartalmazó háttérkép, majd a  PALETTE_LAYER rétegére kerül dinamikusan a hat  RegionLabel osztályú/típusú objektum. A csúszka komponens slYearStateChanged() eseménykezelő metódusa vezérlőként megszólítja a modell réteget és a visszakapott adatokkal frissíti a nézet réteget (a címsorban lévő összesítéssel együtt, ezres szeparátorokkal).

Ötlet továbbfejlesztésre

Hat különböző weboldal forráskódjából kell összegyűjteni a megjelenítendő adatokat. Ez 2020-ban régiónként 71 számot jelent és hat régió van. Érdemes lehet olyan adattárolást megvalósítani, amely csökkenti a szerverhez fordulások számát, illetve a letöltendő adatok mennyiségét. Hiszen a múltbeli évekhez kötődő historikus adatok nem változnak. Ha ezekre valamilyen formában a program emlékszik, akkor elegendő az utolsó tárolt évből kiindulva az aktuális évig évenként, régiónként lekérni mindössze 6, 12, 18… számot, a program utolsó futtatásának évéből kiindulva. Ez lényegesen kevesebb lenne, mint a jelenlegi 6*71 lekért szám. A koncepció kulcsszava: inkrementális adatfrissítés. Ha megvalósítjuk az ötletet, akkor figyelni kell arra, hogy az aktuális/utolsó évben az adatok akár másodpercenként is változhatnak.

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 tematikájához kötődik (ha a swing GUI-ra koncentrálunk és az adatok helyi fájlrendszerből elérhetők), és a Java EE szoftverfejlesztő tanfolyam tematikájához kapcsolódik (ha az adatokat közvetlenül a webről olvassuk).