Generare de conținut pentru date bancare Laura -Andreea Luca Coordonator științific: Conf. dr. ing. Alexandru Boicea BUCUREȘTI 2018 1 CUPRINS CUPRINS… [620320]

UNIVERSITATEA POLITEHNICA BUCUREȘTI
FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
DEPARTAMENTUL CALCULATOARE

PROIECT DE DIPLOMĂ

Generare de conținut pentru date bancare

Laura -Andreea Luca

Coordonator științific:
Conf. dr. ing. Alexandru Boicea

BUCUREȘTI
2018

1
CUPRINS
CUPRINS ………………………….. ………………………….. ………………………….. ………………………….. ….. 1
Sinopsis ………………………….. ………………………….. ………………………….. ………………………….. …… 3
Abstract ………………………….. ………………………….. ………………………….. ………………………….. …… 3
1 INTRODUCERE ………………………….. ………………………….. ………………………….. ……………….. 4
1.1 Context ………………………….. ………………………….. ………………………….. …………………… 4
1.2 Problema ………………………….. ………………………….. ………………………….. ………………… 5
1.3 Obiective ………………………….. ………………………….. ………………………….. ………………… 5
1.4 Soluția propusă ………………………….. ………………………….. ………………………….. ………… 6
1.5 Rezultatele obținute ………………………….. ………………………….. ………………………….. …. 7
1.6 Structura lucrării ………………………….. ………………………….. ………………………….. ………. 7
2 ANALIZA CERINȚELOR/MOTIVAȚIE ………………………….. ………………………….. ……………….. 8
3 TEHNOLOGII FOLOSITE ………………………….. ………………………….. ………………………….. ……. 9
3.1 Oracle SQL developer ………………………….. ………………………….. ………………………….. .. 9
3.2 Java ………………………….. ………………………….. ………………………….. ………………………… 9
3.3 Sencha Gxt ………………………….. ………………………….. ………………………….. …………….. 10
3.4 Gwt ………………………….. ………………………….. ………………………….. ………………………. 10
3.5 Maven ………………………….. ………………………….. ………………………….. …………………… 11
3.6 Eclipse ………………………….. ………………………….. ………………………….. …………………… 12
3.7 GitHub ………………………….. ………………………….. ………………………….. ………………….. 13
4 STUDIU DE PIAȚĂ ………………………….. ………………………….. ………………………….. …………. 14
4.1 SQL Data Generator ………………………….. ………………………….. ………………………….. .. 14
4.2 IBM DB2 Test Database Generator ………………………….. ………………………….. ……….. 15
4.3 Datanamic Data Generator MultiDB ………………………….. ………………………….. ……… 16
5 SOLUȚIA PROPUSĂ ………………………….. ………………………….. ………………………….. ……….. 17
5.1 Platforma de raportare ………………………….. ………………………….. ……………………….. 17

2
5.2 Cerințe ………………………….. ………………………….. ………………………….. ………………….. 18
5.3 Generare de dataset -uri ………………………….. ………………………….. ………………………. 18
5.4 Generare de rapoarte ………………………….. ………………………….. …………………………. 22
6 DETALII DE IMPLEMENTARE ………………………….. ………………………….. ………………………. 28
6.1 Generare de dataset -uri ………………………….. ………………………….. ………………………. 28
6.1.1 Conexiunea la baza de date ………………………….. ………………………….. …………… 28
6.1.2 Citire partiții ………………………….. ………………………….. ………………………….. ……. 28
6.1.3 Citire instituții financiare ………………………….. ………………………….. ………………. 29
6.1.4 Citire dataset -uri ………………………….. ………………………….. ………………………….. 30
6.1.5 Generare înregistrări în dataset -uri ………………………….. ………………………….. … 31
6.2 Generare de rapoarte ………………………….. ………………………….. …………………………. 36
6.2.1 Module ………………………….. ………………………….. ………………………….. …………… 36
6.2.2 Dată de raportare, cluster și rapoarte ………………………….. …………………………. 38
6.2.3 Generare de înregistrări pentru rapoarte ………………………….. …………………….. 40
7 EVALUARE ………………………….. ………………………….. ………………………….. …………………… 42
8 CONCLUZII ………………………….. ………………………….. ………………………….. …………………… 43
9 BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ………………. 44

3
SINOPSIS
Acest proiect ajută la inserarea de înregistrări în datas et-uri, dar și la completarea de rapoarte
bancare. Toate platformele pentru bănci au dataset -uri și rapoarte. Pe ntru a menține aceste
informații se folosesc baze de date. Pentru a fi îndeplinite cerințele echipe de dezvoltare a
platformei care se ocupă de interfață, funcționalități și însăși gestionarea bazelor de date
lucrează consta nt. Pentru ca funcționalitățile să fie corecte este necesară testarea acestora.
Testarea dataset -urilor este anevoi oasă în momentul în care se in troduc manual foarte multe
înregistrări. Pentru rezolvarea problemei am creat acest instrument care , în câ teva secunde ,
poate introduce sute de î nregistrări doar selectând numele dataset -ului, instituțiile financiare
dorite, data de rapo rtare și cluster -ul. Testarea modul ui în care rapo artele sunt completate
este o adevărată provocare , deoarece , manual , poate dura chiar și câteva ore. Pentru a
îmbunătați acest procedeu am adăugat la proiectul meu posibilitatea de completare a tuturor
celulelor unui raport doar selectând modulul d in care face parte acesta , data de raportare,
cluster -ul și instituțiile financiare pentru care se realizează generarea. În ambele c azuri un
număr specific de generări trebuie setat . Prin urmare, generare a automată crește semnificativ
viteza de testare.
ABSTRACT
This project is a tool for inserting records inside datasets and banking reports. All banking
platforms have datasets and reports. Databases are used to maintain these information. For
these, development teams work constantly on the graphical user interf ace, functionalities
and database management for this platform. In order for these functionalities to work as
intended, they need to be tested. This process is difficult when many records are inserted
manually. To solve this problem, I created this tool wh ich can fill in hundreds of records just
by selecting the name of the dataset, the desired financial institutes, the reporting date and
the cluster in just a few seconds. The method for testing how the reports are filled is a real
challenge, because the ma nually process can take up to a few hours. To optimize this, I added
to my project the possibility of completing all the cells of a report just by selecting the module
that it belongs to, the reporting date, the cluster and the financial institutes for whi ch the
data generation is made for. In both cases, a specific generation number has to be set.
Therefore, an automatic generation has a significant improvement on the testing rate.

4
1 INTRODUCERE
Băncile sunt nevo ite să completeze d ate și rapoarte într -o plat form ă de raportare. Această
platformă scrie toate informațiile într -o bază de date și , de asemenea, le și extrage din acea
bază de date. Pentru ca această platformă să poată fi actualizată în permanență necesită o
posibilitate de testare câ t mai rapid ă. Pentru ca acest lucru să fie posibil se cere trecerea de
la completarea ma nuală la o completare automată.
În cadrul dezvoltării acestui proiect s-a luat în considerare necesitatea prezentată mai sus.
Ideea proiectului în sine este implementată pe baza aceste i probleme. Pentru a ușura și
micșora timpul de testare s -a cerut această implementare a unui instrument care va genera
automat înregistrările dintr -un tabel dintr -o baza de date, doar prin introducerea numărului
de înregistrări dorit.
O altă problemă ar f i completarea de raporturi, care, de asemenea, este foarte ineficientă
pentru testare în momentul în care trebuie completat un număr mare de rapoarte. Pentru
asta voi prezenta ca soluție completarea automată a unui număr setat de rapoarte în funcție
de cee a ce utilizatorul dorește. Se va selecta un raport si se va seta numărul dorit de generări ,
numărul reprezentând câte rapoarte de acel tip se vor genera. Se pot selecta mai multe
rapoarte, iar numărul total de generări va fi împărțit pentru fiecare în part e aleatoriu.
„Business Intelligence” [1] se ocupă cu gestionarea unui volum foarte mare de date din bazele
de date. El este folosit în special în schimbările condițiilor de mediu. Este necesar să se aplice
în zilele noa stre o astfel de practică pentru că schimbările condițiilor de mediu sunt din ce în
ce mai multe, iar dezvoltatorii au nevoie de o gestionare foarte clară și sortată a datelor, în
funcție de necesități. Ajută foarte mult la relația dintre IT și cei din exterior. Acum se
incorporează tehnologii avansate și ajută la conexiuni și interschimburi, chiar și în momentul
în care nu este o persoană de specialitate. Timpul este esențial în natura stretegică a „business
Intelligence”.
1.1 Context
Instituțiile financiare sunt împ ărțite pe categorii : grupul de bănci, banca mamă, sucursale,
filiale. Toate filialele, sucursalele vor trimite informațiile lor la banca mamă. Toate inform ațiile
sunt ținute în rapoarte ș i dataset -uri.

5
Dezvoltatorii actualizează în permanență funcțional itățile pentru instrumentul pe care îl
folosesc băncile . După o implementare a unei actualizări este necesară verificarea acesteia.
Toate funcționalitățile necesită testare pentru a trimite băncilor o platfor mă funcțională și
utilă . Pentru verificarea lor este nevoie să se completeze manual toate înregistrările și toate
rapoartele, în funcție de condițiile oferite.
1.2 Problema
Cum am menționat și mai sus, principala problemă întâm pinată de dezvoltatorii de cod ș i de
funcționali este aceea că pentru a testa sun t nevoiți să introducă manual toate datele
necesare unei înregistrări sau a unui raport. Pentru a testa platforma este necesar uneori de
un număr foarte mare de înregistrări (de exemplu: pentru a testa faptul că pe următoarea
pagină sunt aș ezate corect dat ele) și atunci este necesar ca un dezvoltator să piardă foarte
mult timp cu testarea, în loc să se axeze efectiv pe actualizarea aplicației , care este necesară
cât mai rapid.
Rapoartele sunt create tot manual și în momentul completării unui raport este ne cesară
cunoașterea anumitor condiții de inserare pe o anumită coloană sau pe o anumită linie sau
chiar într -un anumit raport . În momentul conceperii acestui proiect toate condițiile de
coloane și înregistrările aduse erau testate manual. În momentul în car e se aplica o regulă pe
acea celulă era verificată de unul din funcționali pentru a vedea dacă este posibilă
introducerea acelei reguli sau condiții. Pentru rezolvarea acestor probleme este necesară
implementarea unui instrument care să se ocupe cu generar ea la mai multe date de conținut
pentru tabelele din baza de date necesare.
1.3 Obiective
Pentru creșterea timpului în dezvoltarea aplicației utilizată de bănci trebuie ca testarea să fie
cât mai eficientă. De aceea, pentru a nu pierde timpul pe generarea de conținut, util în testare,
s-a dorit a fi implementat acest instrument, care va realiza într -un timp mai scurt ceea ce
dezvoltatorii de software o făceau într -un timp mult mai îndelungat. Rapoartele pe care
trebuie să le completeze persoanele care se ocupă cu testarea platformei, sunt de asemenea
dificil de completat, deoarece toate informațiile trebuie date manual. Aceste rapoarte au
celule care nu pot fi completate, sau celule care au o anumită regulă după care se poate
completa. Astfel la completare util izatorii sun t nevoiți să știe toate aceste reguli. Toate sunt

6
rezolvate prin acest instrument reprezentat prin proiectul de față. Rapoartele și dataset -urile
se vor completa automat din tabelul specific din baza de date. Pentru fiecare raport aplicația
mea va ține cont de condiții pentru ca la testarea platformei utilizatorul să nu fie nevoit să
știe toate infomațiile pentru a putea completa un raport. Pentru a face multiple rapoarte este
necesar să se umple tabelul pentru rapoartele respective cu înregistră ri, pentru fiecare celulă,
se va ține cont dacă este modificabilă zona sau dacă are anumite condiții de modificare.
Timpul dezvoltatorilor nu va mai fi ocupat de generarea datelor în dataset -uri si nici cu
umplerea de rapoarte. Toate acestea se vor face în mod automat doar selectând unde ș i cu
ce condiții să se genereze înregistrările.
1.4 Soluția propusă
Pentru ca problemele să fie evitate și pentru ca dezvoltarea să fie cât mai eficientă s -a introdus
acest instrument care va ajuta î n special la o punere a mai rapidă în practică a acelor actualizări
create de dezvoltatorii de cod.
Pentru „dataset ”-uri am decis să creez o interfață cu informații ajutătoare utilizatorului.
Acesta poate alege numele „dataset ”-ului în care dorește generarea înregistrărilor. După
alegerea „dataset ”-ului se va popula un tabel, care conține toate coloanele acestuia , unde
prin trecerea unei coloane în tabelul din dreapta se pot seta anumite opțiuni dorite de
utilizator pentru respectiva coloană. Nu este necesară modificarea coloanelor, d acă nu se face
nici o schimbare asupra tabelelor acestea se vor genera cu modul implicit realizat de generare,
cu un număr aleatoriu de caractere, și aleatoriu pe înregistrare, o înregistrare poate conține
informații pe coloana respectivă, o altă înregistr are nu. După setarea „dataset ”-ului este
obligatorie alegerea unei date de raportare. De asemenea, și alegerea unui „cluster ” este
obligatorie, acest lucru fiind posibil doar după setarea unei date de raportare, deoarece un
cluster poate să nu existe pentr u o dată de raportare care există. Se introduce un număr de
generări dorit. Acum mai trebuie setată instituția financiară la care se dorește generarea, din
nou, în mod obligatoriu. Se pot alege si mai multe instituții financiare, numărul total de
generări împarțindu -se la întâmplare între ele. Se poate dori pentru o instituție financiară un
anumit număr de înregistrări, ceea ce este posibil de realizat din câmpul ascuns.
Pentru completarea de rapoarte am creat, de asemenea, o interfață ajutătoare pentru
utilizator. Se selectează modulul din care face parte raportul dorit de completat, după se pot

7
alege mai mult e rapoarte de completat. După selectarea rapoartelor dorite se va genera un
meniu pentru fiecare de unde se pot selecta celule care la selecție se vor introduce într -un
tabel unde se pot face modificări asupra celulei respective. Se alege data de raportare și
„cluster” -ul. Se selectează instituțiile financiare dorite. După se setează un număr de generări
care, la fel, se va împărți aleatoriu între toate instituțiile financiare selectate. Se poate alege
un anumit număr de generări cu o instituție financiară. Numărul setat se va aplica ca generare
pentru fiecare celulă din raport, fiecare celulă fiind o intrare în baza de date. În interfața
platformei pent ru bănci se va afișa pentru fiecare celulă suma tuturor generărilor pentru ea.
Dacă se dorește ca o celulă să fie generată de mai multe ori, adică mai multe înregistrări
pentru ea , în baza de date , se poate seta din tabelul creat cu celulele rapoartelor.
1.5 Rezultatele obținute
În momentul proiectării ideii acestui proiect s -a luat în considerare faptul că testarea se făcea
manual și atunci toate amplificau timpul de testare a funcționalităților introduse. Acum
generarea se va face automat ceea ce a dus la o îmbunătățire a dezvoltării platformei utilizată
de instituțiile bancare. Timpul nu va mai fi axat pe testare, ci pe implementarea propriu -zisă
a funcționaltăților platformei .
Se vor genera „dataset ”-uri, dar și rapoarte, în funcție de ce utilizatorul are nevoie, din „tab”-
uri diferite. Aduce îmbunătățiri la performanța dezvoltării platform ei utilizată pentru bănci,
prin rapiditatea generării unui număr foarte mare de înregistrări. De asemenea, se pot face
generări de rapoarte care prezintă diferite combina ții de dinamicitate. Se poate genera un
raport gata realizat dinamic într -un anumit fel, sau static. În momentul în care dorești a face
un raport dinamic timpul pierdut pe acea modificare este destul de mare, dar necesitatea
verificării funcționalității de dinamicitate este direct proporțională.
1.6 Structura lucrării
Lucrarea mea se va împărți în analiza cerințelor unde voi specifica dorința și necesitatea
implementării unui astfel de proiect. A doua parte va fi prezentarea unor metode deja
existente si cu ce vine în plus acest proiect. Voi prezenta , după , în detaliu soluția cu care am
venit eu la aceste probleme și voi oferi detalii despre implementare. Voi face o evaluare a
acestui instrument de generar e și voi încheia prin concluzii .

8
2 ANALIZA CERINȚELOR/M OTIV AȚIE
Pentru dezvoltarea platforme i pentru bănci lucrează o echipă de dezvoltare software, dar ș i
o echipă de funcționali. Echipa de dezvoltare software se axează pe modul în care platforma
funcționează, interfața grafică, dar și partea de ceea ce se întâmp lă în spate. Echipa de
funcționali se ocupă de funcționalitățile bazei de date, condițiile care trebuie îndeplinite în
momentul completării tabelelor, dar și în momentul completării rapoartelor.
Din cauză că toți clienții acestei platforme cer actualizări în mod constant și timpul oferit de
aceștia este foarte mic dezvoltatorii sunt într -o permanență tensiune că nu vor trimite la timp.
De aceea uneori sunt nevoiți să trimită anumite funcționalități fără a le mai verifica, ceea ce
poate aduce la mai multe pr obleme la utilizarea acesteia.
Dorința de implementare a acestei platforme a plecat de la echipa de dezv oltare de software
care necesită testarea, în primul rând al interfeței, dar și a modului de funcționare al acesteia.
După ce s -au oferit informații cu privire la instrumentul pe care urma să îl pun în practică
echipa de funcționali au reacționat la fel de entuziasmați spunând că în acest fel nu va mai fi
necesar să completeze manual toate formularele si toate rapoarte pentru a verifica dacă o
condiție d e umplere este corectă.
Echipa de funcționali au reacționat pozitiv atunci când li s -a prezentat faptul că acest
instrument va face completarea rapoartelor luând toate condițiile prezente pe acel raport.
Atunci , efec tiv, ei vor putea testa doar dacă va fi p usă b ine condiția, nu va fi nevoie s ă aibă
grijă să introducă ei datele în funcție de condiția al easă, pentru a vedea dacă e bună condiția,
acest instrument o va aplica pe cea pusă de ei în tabelul din baza de date special pentru
condițiile de pe celule, e i fiind nevoiți doar să facă cond iția corect, ceea ce voiau ei să verifice
de la început, dar se va face într -un timp mult mai scurt.
Într-o astfel de aplicație este necesară o testare automată pentru a nu fi nevoit sa angajezi
mai mulți oameni care să se ocupe de testare, sau chiar mai mulți oameni care să se ocupe de
dezvoltare, do ar pentru că jumătate din timp îl petrec pe acest lucru . În firma în care se aplică
acest instrument, realizat de mine, necesitatea lui s -a observat încă de la început. Astfel a cum
toți dezvoltatorii îl folosesc pentru a -și micșora timpul de lucru.

9
3 TEHNOLOGII FOLOSITE
3.1 Oracle SQL developer
Pentru a mă putea folosi de o bază de date din care să extrag informațiile cu privire la tabelele
existente, pe care le utilizează aplicația, dar și pentru a introduce datele generate automat,
am folosit Oracle SQL developer .
Oracle SQL developer este unul dintre cele mai folosite medii de dezvoltare integrat în
momentul de față. [2] Ușurința cu care se poate utiliz a, fiabilitatea, dar și performanța l -au
făcut să crească ca număr de utilizatori. Este un mediu de dezvoltare foarte ușor de folosit,
fiind nevoie doar de câteva apăsări de buton și completare din tastatură. Prin toate acestea
se poate deduce faptul că pe ntru dezvoltatori este mult mai puțin timp petrecut pe testele pe
baza de date.
Mediul de dezvoltare Oracle SQL developer este simplu de folosit din codul Java. Aplicația
mea am dezvoltat -o cu programare Java. Este necesar doar să formezi cozi cu expresii pe care
le poți rula din sql, ș i doar trebuie apelată funcția „execute” sau „execteQuery” . Toate
verificările de generări le -am făcut în Oracle SQL developer.
Am mai dat comenzi direct în Oracle SQL developer pentru a verifica dacă acestea
funcționează înainte d e a le trece în codul Java. Poți rula bucăți separate de cod, nu neapărat
să fie scris în interfață doar ceea ce dorești să vezi ca și rezultat.
3.2 Java
Pentru a programa am folosit ca limbaj de programare Jav a. Java este rapid, securizat, fiabil
și este gratuit de descărcat. J ava este u n limbaj de programare orientat obiect simplu. [3]
Programul realizat în Java poate rula pe mai multe sisteme de operare si pe mai multe
arhitecturi hardware. Foarte important este faptul că Java are multithreading i ncorporat și
atunci toate aplicațiile cu interfață interactivă vor avea performanțe mult mai ridicate.
Majoritatea utilizatorilor au încredere în Java deoarece are implementată o protecție
împotriva virușilor, dar și a manipulării din internet. A fost nece sară o astfel de implementare
în special deoarece Java se bazează pe descărcarea codului de oriunde de pe internet.
Majoritatea aplicațiilor necesită Java pentru a funcționa, deci configurările Java sunt existente
pe calculatoare în mare parte de întaine d e a programa cu Java.

10

Figură 1 Procesul de dezvoltare a software -ului1
Fișierele Java au extensia „.java” , după compilarea c u „javac” devenind fișiere „.class” care nu
conține cod, ea conținând bytecodes care este utilizată Java Virtual Machine. (Figură 1)
Aplicația în cele din urmă va fi rulată cu ajutorul unei instanțe a lui Java Virtual Machine.
3.3 Sencha Gxt
Pentru elementele de interfață am utilizat Gxt, asta deoarece am dorit un aspect cât mai
profesional și formal . Gxt este ut ilizat pentru a transforma codul Java în cod HTML și oferă un
număr foarte mare de componente pe care le poți folosi în interfață. [4] Aceste componente
le includ si pe cele mai noi introduse de către HTML5 cum ar fi formulare, grid-uri, arbori, liste,
panouri, meniuri, și multe altele. Dintre acestea eu am folosit formulare, panouri, grid -uri și
meniuri. 2
Acesta aduce o serie de scheme foarte ușor utilizabile pentru afișarea componentelor și
aranjarea lor în pagină. Există și o opțiune pentru a se putea așeza singure în funcție de
dimensiunea ecranului, astfel făcându -l cât mai utilizabil în condițiile în care ai nevoie ca
aplicația să aibă un aspect plăcut in diferent de sistemul de operare și dimensiunea ecranului.
Cu ajutorul a cestuia am reușit să îmi creez butoane , meniuri cu selecție singulară, dar și cu
selecție multiplă. Am realizat panouri și ferestre cu conținut, tab -uri, seturi de câmp și câmpuri
în care am adăugat toate butoanele.
3.4 Gwt
Gwt este folosit pentru a transforma codul Java în cod Ajax și JavaScript. El este, de fapt, un
set de instrumente de dezvoltare care ajută la punerea în funcțiune a unor aplicații web. Se

1 https://docs.orac le.com/javase/tutorial/g etStarted/intro/definition.html
2 https://www.sencha.com/

11
ocupă cu interacțiunea dintre server si client. [5] Mai exact, rezultatele pe care le are o
anumită componentă atunci când i se atribuie o acțiune. Este foarte ușor de folosit și nu este
necesar să știi XMLHttpRequest, JavaScript sau cum funcționează motoarele de căutare.3
Gwt este pliabil pe orice motor de căutare, c hiar și pe cele mobile. [6]Una dintre diferențele
între scrierea în Java cu Gwt și scrierea de cod JavaScript este că atunci când căutăm erorile
putem face debug direct din IDE și nu trebuie să inspectăm pagina web pentru a des coperi
problemele. În acest caz, putem face debug exact ca într -o aplicație Java obișnuită doar că pe
componente de interfață și pe acțiunile lor.
3.5 Maven
Sursele le -am compilat cu ajutorul lui Maven. El este utilizat pentru construirea si gestionarea
proiec telor Java. Cu ajutorul lui Maven toate procesele se realizează în același timp. Este mai
ușor să se distribuie jar -urile în mai multe proiecte și să se publice informațiile.4 Toate jar -urile
le-am introdus în proiect prin POM ca dependință și doar dând „clean install ” le-am putut
folosi în tot proiectul. Maven se bazează pe un fișier POM (Project Object Model). În acest
fișier sunt introduse dependințele de jar -uri, agregările și ierarhiile. Aici sunt conținute toate
informațiile necesare unui proiect și foarte important el nu lasă ca surse din exterior să
intervină în rularea unui „plugin ”, el va continua să ruleze „plugin ”-ul pană la terminarea
acestuia. [7]

Figură 2 Ciclul de viață Maven

3 http://www.gwtproject.org/
4 https://maven.apache.org/

12
Maven are un ciclu de viață . În primul rând, se face „validate ” care reprezintă verificarea
efectivă a corectitudinii proiectului și dacă acesta dispune de toate sursele necesare punerii
în funcțiune. Urmează „compile ” care , după denumire , este faza de compilare a proiectului,
făcându -se testarea codului sursă compilat cu „test”, ceea ce nu ar trebui să ceară codului să
fie împachetat sau desfășurat. Se împachetează într -un jar codul sursă compilat în faza de
„package ”, după verificându -se dacă toate criteriile sunt îndeplinite c u „verify ” astfel se po t
instala într -un depozit local pentru a putea fi folosite și în alte proiecte, dacă este necesar cu
ajutorul lui „install ”.
Uneori dorești să poți lua într -un depozit la distanță jar -ul. Pentru a -l copia într -un depozit de
la distanță se folosește etapa de „ deploy” . Dacă dăm comanda „clean install ” în Maven se vor
realiza toate etapele până la „install” , adică fără „deploy ”, fără a mai sări peste o altă etapă .
(Figură 2)
3.6 Eclipse
Eclipse este unul dintre cele mai populare medii de dezvoltare Java, și nu numai. [8] Pot fi
integrate multe instrumente în acest mediu de dezvoltare, inclusiv cele pentru interfață.
Pentru utilizarea Eclipse se găsește o foarte mare și bine pusă la punct documentație.5
Eclipse poate rula pe mai multe sisteme de operare. Întotdeauna va avea nevoie ca Java să fie
instalat pentru a putea funcționa. Pentru a instala Java este necesară setarea unei variabile
de mediu în calculator. După aceea descarci programul și îl instalezi.
Depă narea codului pentru detecția erorilor este una dintre cea mai ușoară cu acest IDE. Este
necesar doar să setezi un breakpoint la linia de cod unde crezi că ar putea fi problema, iar
atunci când programul ajunge să execute acea linie se oprește. Atunci tu p oți inspecta valorile
la toate elementele care te interesează sau poți vedea daca a intrat pe acel caz, sau nu.
Pașii pe care merge rularea programului rămân aceeși, deci în momentul în care pui mai multe
breakpoint -uri programul va intra pe rând în ele în ordinea în care se execută funcțiile. Pentru
a sări direct la un breakpoint se foloseste tasta F8. Dacă vrei să mergi din linie în linie, pentru
a vedea exact unde încep problemele apeși tasta F6. Dacă programul ajunge la o funcție și

5 https://www.eclipse.org/ide/

13
apeși F6 el va trece la linia următoare după ce execută funcția fără a intra în ea. Daca dorești
ca în acest caz să vezi ceea c e se întâmplă și în funcție ape și F5 în momentul în care ești pe
linia unde se apelează funcția .
Importa nt este faptul că este foarte u șor să impor ți pachete în acest mediu de dezvoltare, dar
și faptul că se pot instala foarte ușor jar -uri.
Eu am folosit Eclipse Oxygen, fiind ultima versiune de la Eclipse în momentul în care am
început această aplicație.
3.7 GitHub
Nevoia de a nu pierde lucrarea m -a con dus la a folosi GitHub pentru a -mi depozita proiectul.
GitHub este cea mai folosită platformă pentru a îți ține proiectele pe o durată mai mare de
timp.6 Această platformă este folosită în special de către companii pentru a le fi ușor să facă
schimb de cod . [9]
La un proiect pot lucra mai multe persoane și, cum este cazul companiilor, ele lucrează în
același timp, făcând uneori modificări chiar pe aceleași clase sau pachete. În momentul acesta
este nevoie de un loc de depozitare a proiectul.
În momentul în care cineva lucrează pe un proiect este necesar să își desca rce modificările
aduse de alte persoane proiectului deja existent cu „fetch” . Dacă proiectul a fost descărcat
trebuie dat un „commit” cu un mesaj specific pentru ceea c e ai lucr at la proiect în plus. În
urma „c ommit” -ului trebuie dat „rebase ” pentru a aplica modifică rile luate de la alte
persoane. Este necesar să dai întâi „commit” și după „rebase” deoarece în acest moment se
va aplica tot ce au schimbat alții asupra pro iectului dar fără a șterge modificările aduse de
tine. În continuare trebuie dat „push” pentru a pune în depozit toate modificările aduse de
către tine la proiecul respectiv .

6 https://github.com/

14
4 STUDIU DE PIAȚĂ
4.1 SQL Data Generator
Acest instrument poate crea date într -un vo lum foarte mare care au o anumită importanță
specificată de utilizator. Se poate descărca gratuit doar pe o durată de douăsprezece zile,
după aceea fiind nevoit să plătești o taxa pentru fiecare utilizator al său.
Se pot insera date în funcție de lungime, tip, dar poți chiar tu să îl schimbi după cum ai nevoie.
Se pot crea date doar prin apăsarea unui buton și se poate ține cont de cheile externe manual.
Oferă conversia la tip, suport pe ntru depen dințe între coloane . Poți genera aceleași date de
fiecare da tă. Poți să dezactivezi constrângerile pentru a nu intra în conflict cu logica bazei de
date. [10]

Figură 3 Interfața SQL Data Generator7
Diferența dintre această aplicație și instrumentul realizat de mine este aceea că pentru a
genera cu instrumentul meu este necesar doar să se aleagă tabelele de care are nevoie și,
dacă cere utilizatorul, alte modificări pe tipul de generare, aleatoriu sau nu. (Figură 3) Altă
diferență ar fi posibilitatea de completa re a unor rapoarte bancare, care ține cont de anumite
condiții impuse pe rapoarte sau pe celulele rapoartelor. Toate cheile externe sunt luate în
considerare de către aplicație și nu este necesară introduc ere lor manuală. În funcție de

7 https://www.red -gate.com/products/sql -development/sql -data -generator/

15
„cluster” -ul pe care este nece sară raportarea se va alege un „plot_fk” care va reprezenta cheia
externă de care se va folosi aplicația.
4.2 IBM DB2 Test Database Generator
IBM DB2 Test Database Generator este folosit pentru a genera teste realizate pe baze de date.
Toate aplicaț iile care au o bază de date în spate sunt nevoite să realizeze teste de
funcționalitate. Dacă sunt realizate manual va dura o eternitate testarea tuturor
funcționalităților. Este un instrument gratuit, astfel oricine dezvoltă o aplicație cu baze de
date îl poate folosi.
Pentru a put ea începe să folosești aplicați a trebuie prima dată să sete zi o variabilă de mediu
în calculatorul tău numită „DB2TEMPDIR” . [11]

Figură 4 Interfață IBM DB2 Test Database Ge nerator pentru creare de teste8
Primul pas în folosirea aplicației este să ne conectăm la baza de date unde este instalat
instrumentul. Acest lucru se poate observa că se face chiar din a plicație. (Figură 4) În tab -ul
„targets” se completează tabelul în ca re se dorește inserarea de înregistrări și numărul
acestora. Poți alege din tabelele deja existente (asta pentru că te stele le vei face pe ceea ce
ai deja în baza de date). După alegerea tabelului se pot introduce și anumite criterii de selecție
a unor coloare din tabela respectivă sau în funcție de valoarea de pe o coloană. Trebuie să
aplici cel puțin o regulă, poți alege aleatoriu, dar trebuie setat și tipul valorii pe care vrei să o

8 https://www.ibm.com/developerworks/data/library/techarticle/dm -0706salkosuo/

16
inserezi. După toate setările realizate și salvarea acestora într -un format (xml, cvs sau sql etc.)
este necesar doar apăsarea buto nului „start” din tab -ul „generator” .
Diferența dintre aplicaț ia mea si aceasta este faptul că tipul valorilor inserate este făcut
automat de către aplicația mea luând din declararea coloanelor tabelului din baza de date. Pe
lângă aceasta, este necesară respectarea unor condiții pe care le -am extras din fișiere xml și
nu este necesar să le dau manual aplicației. Completarea de rapoarte dinamice de orice tip
este imposibilă cu o astfel de aplicați e. Toate plusurile pe care le -am adus aplicației mele au
fost cerințele dezvoltatorilor, mai exact ceea ce nu se găsește într -o aplicație deja existentă.
4.3 Datanamic Data Generator MultiDB
Datanamic Data Generator MultiDB9 generează date simple sau după tipu l tabelului în care
dorești inserarea. Acest instrument analizează baza ta de date și automat determină un
generator cât mai potrivit pentru fiecare coloană. Poți folosi date deja existente sau poți folosi
instrumentul pentru a analiza schema bazei de date pentru a genera datele în funcție de
anatomia acesteia. [12]
Poți schimba felul în care datele se generează sau le poți lăsa astfel cum instrumentul a
determinat modul de inserare. Se ocupă , de asemenea , și de cheile externe și folosirea
acestora. Această aplicație costă 800$ pentru fiecare utilizator.
Din cauza necesității de comp letare de rapoarte nu se poate folosi un astfel de instrument.
Nu poate determina rapoartele dinamice, atunci neștiind în ce mod trebuie inserate datel e,
de asemenea , umplerea pe rapoarte nu este realizată pe un tabel, ci pe un view, iar fiecare
celulă în parte reprezintă o nouă intrare în baza de date, el trebuind să știe toate celulele unui
raport, nu poate distinge care sunt pentru un anumit raport și care pentru altul.
Tabelele au dependențe între ele ș i sunt atribuite și „trigger ”-uri pe ele. De fiecare dată când
scrii în view trebuie setat „workspace ”-ul și această aplicație se ocupă doar de inserare în baza
de date nu și de alte setări cu referire la baza de date pe care o folosesc.

9 http://www.datanamic.com/datagenerator/

17
5 SOLUȚIA PROPUSĂ
Soluția propusă a pornit de la un lucru destul de simplu : generare de înregistrări într -o bază
de date. Cum deja am specificat, aplicația dezvoltată de mine este un instrument care va ajuta
mai multe ec hipe de dezvoltare dintr -o firmă care se ocupă cu platforma de raportare pentru
majoritatea băncilor. Pentru a începe acest proiect am încercat să cer cât mai multe informații
despre platformă, cum ar fi : de unde se citesc datele, unde se scriu, cum se sa lvează în baza
de date sau cum respectă anumite condiții. Toate echipele de dezvoltare au venit cu diferite
îmbunătățiri și cerințe pentru această platformă, care m -au ajutat să aduc proiectul până la
final. Toate cerințele au fost îndeplinite pentru ca ec hipele să aibă parte de un ajutor cât mai
mare din parte aplicației mele.
5.1 Platforma de raportare
În primul rând, voi discuta despre platforma inițială. Această platformă este utilizată de
majoritatea băncilor pentru a -și salva datele confidențiale care îi țin pe o linie de plutire, mai
exact pentru a fi mereu la curent cu modul în care oamenii se folosesc de acea bancă. Pe de
altă parte, asta îi ajută și să poată avea toate informațiile într -un singur loc de unde să le poată
accesa oricând. Datele sunt com pletate de către persoanele autorizate de bancă în platformă,
iar ele vor fi salvate într -o bază de date. În baza de date respectivă sunt ținute absolut toate
detaliile introduse în platformă, dar și felul în care au fost introduse. Toate condițiile puse
pentru celule, dar și dependințele de tabele sunt reținute în baza de date. (Figură 5)

Figură 5 Transmiterea informațiilor platforma bancară

18
Pentru a asigura faptul că în cazul pierderii bazei de date nu se pierd toate informațiile acestea
sunt menținute și în fișiere xml. În cazul în care vrem să refacem ba za de date sunt necesare
xml-urile implementate odată cu baza de date.
5.2 Cerințe
În momentul în care am mers la toate echipele pentru a le asculta cerințele mi s -a spus că este
necesar să fac generare de „dataset ”-uri, pentru a nu realiza manual fiecare înr egistrare, căci
uneori este necesar să introducă și sute de înregistrări „ dataset ”-uri pierzând chiar și o zi
întreagă pentru testare. O altă cerință a fost pe rapoarte. Pentru rapoarte am avut o cerință
pentru a face și generare de rapoarte, dar de aici a u pornit diverse cerințe precum: să se țină
cont de condițiile atribuite în primul rând tabelelor, după să se țină cont de tipul celulei, să se
țină cont de tipul raportului, să se țină cont de condiția pusă pe celulă.
Decizia mea în cele din urmă a fost sa le satisfac toate cerințele pentru a fi cu siguranță un
instrument folositor.
5.3 Generare de dataset -uri
Am început prin a genera îregistrări în „ dataset ”-uri: am luat toate informațiile necesare unei
generări simple, am început după aceea o parte din int erfață în care am introdus câte puțin
din fiecare citire pe care o realizam. După ce am făcut și partea de interfață am ajuns să apelez
funcțiile realizate în funcție de selecția făcută de către un utilizatorul.

Figură 6 Citire t abele din baza de date
Am citit toate informațiile legate de tabele din fișiere xml. Am salvat denumirea tabelului în
aplicația inițială, numele pe care îl găsesc în baza de date. Pentru fiecare tabel am extras
coloanele ca denumire, dar și ca tip sau dime nsiune maximă. (Figură 6 )

19
Acum se poate selecta un tabel în care vreau să introduc date, în funcție de denumirea lui în
platforma băncilor (caption) , dar și în funcție de numele tabelului din baza de date . În funcție
de tabelul ales se va umple grid -ul în care pe o coloană sunt denumirile coloanelor conținute
în acesta. Pe a doua coloană se află maximul de caractere posibil pentru respectiva coloană.
Pe o coloană este setat automat tipul de generare a caracterelor ca fiind aleatoriu între 1 si
maximul de ca ractere pentru aceasta extras din tabelul ales. Pe ultima coloană este setat tipul
de generare a coloanei, pe o înregistrare pot fi date, pe o altă înregistrare pot să nu fie pe
respectiva coloană. Pentru a face modificări cu privire la tipul de generare a m făcut un alt grid
în care pot trage o coloană din primul grid pentru a -i seta informațiile după cum doresc. Acest
grid are a doua, a treia si a patra coloană editabile. În momentul tragerii coloanei vor fi setate
coloanele de generare aleatoare cu privir e la numărul de caractere, dar și c ea cu privire la
generarea pe acea coloană a fi inactive. (Figură 7)

Figură 7 Populare grid și modificări în cel de al doilea
Acum se pot face modificări pe acea coloană. Se poate decide dacă nu mărul de caractere să
fie unul specific, dar să nu depășească maximul, se poate decide să nu fie aleatoriu până la
numărul ales, ci să se genereze exact cu acel număr de caractere, se poate decide dacă să se
genereze mereu informații pe acea coloană în toa te înregistrările sau să se genereze doar
uneori. (Figură 8 )

Figură 8 Modificări pe cel de al doilea grid

20

Figură 9 Citire de instituții financiare și partiții
Toate instituțiile financiare au fost extra se din baza de date din tabelul „FINANCIAL_INST” și
puse în modelul de selecție multiplu. ( Figură 9 ) Astfel se pot alege mai multe instituții
financiare pentru care să se genereze „dataset ”-uri. De fiecare dată când se selectează o
instituție financiară se creează într -un field set o căsuță în care se poate introduce numărul
de înregistrări pe care îl dorim pentru acea instituție financiară. (Figură 10 )

Figură 10 Selectare instituție financiară
S-a citit din tabelul „PARTITIONS ” toate informațiile care sunt inserate din aplicație originală
cu privire la „cluster ” și la data de raportare. De asemenea , am citit dacă este blocat sau nu și
tipul. Toate dățile de raportare au fost extrase și puse într -un model de selecție singular. În
momentul extragerii unei date de raportare se va salva automat și cluster -ele aferente
acesteia, după cum am menționat o dată de raportare are mai multe „cluster ”-e. Informațiile
legate de „cluster ”-e vor fi introduse în modelul de selecție singular doar în momentul
selectării unei date de raportare. Posibilitatea de a introduce informații este doar atunci când
„cluster ”-ul ales există pe dat a de raportare aleasă. (Figură 9 )

21
Am implementat, în continuare, o căsuță în care să se poată introduce numărul de înr egistrări
dorit pentru respectivul tabel, un buton prin care se poate da restaurare la grid -uri, grid -ul
inițial va reveni la valorile pe care le avea, iar cel de al doilea se va goli. Am mai implementat
un buton de resetare a întregii interfețe în cazul î n care nu vrei să dai reîncărcare la pagină.
De asemenea, am pus butonul de generare, unde se întâmplă magia. (Figură 11 )

Figură 11 Interfața completată
Acum că toa te informațiile au fost introduse în interfață se poate apăsa but onul de generare
și se vor insera un număr înregistrări în tabelul selectat egal cu numărul setat de noi, dar pe
instituția financiară pe care am setat un alt număr se vor genera acel număr de înregistrări,
pentru restul aleatoriu pană la numărul cerut ini țial.
În mom entul în care se apasă butonul „Generate” se vor citi toate informațiile completate în
platformă și se vor trimite către server. Împărțirea pe instituții financiare am făcut -o în partea
de client, restul pe server. Mai exact am căutat în toată baza de date dacă există tabelul
selectat și dacă există am generat intrări egal cu numărul setat în interfață. Dacă s-au făcut
modificări pe grid -ul respectiv se va ține cont daca generarea este aleatoare sau specificată.
Formez declarația sql, iar în mo mentul în care completez valorile voi pune valori aleatoare cu
un număr aleatoriu de caractere, dar uneori este posibil să nu conțină informații celula și să
fie nulă. Dacă a fost setat numărul să nu fie aleatoriu voi completa cu numărul specificat. În
momentul în care am setat ca generarea să nu fie aleatoare pe coloane fiecare înregistrare va

22
avea informații pe celula resp ectivă . Toate informațiile vor fi introduse în tabelul aferent
„dataset ”-ului selectat de noi. (Figură 12)

Figură 12 Diagramă generare
Inserând în baza de date cu ajutorul aplicației mele, platforma pentru bănci va citi informațiile
de acolo și le va afișa în interiorul său. Cu această soluție, toate persoanele care lucrează cu
„dataset ”-uri vor putea să își genereze un număr ales de înregistrări în funcție de câte au
nevoie pentru testare. Datele fiind aleatoriu, nu va avea un înțeles pentru raport, deoarece
completarea de rapoarte cu înțeles are sens doar în momentul în care o folosește o bancă, nu
și atunci când este necesară doar testarea platformei. (Figură 13 )

Figură 13 Rezultatul generării de dataset -uri
5.4 Generare de rapoarte
Pentru generarea de rapoarte am realizat un alt tab sub tab -ul de generare special pentru
rapoarte. Am fost nevoită să citesc despre rapoarte din fișiere xml aflate sub directorul
„modules ” aflat în calculator. În fiecare director este, de fapt, un grup de mo dule. Fiecare xml

23
reprezintă un modul. Am extras fiecare nume de modul și l -am pus într -un model de selecție
singular. În același fișier xml de unde iau numele modulului se află și toate rapoartele aferente
modulului. Am extras numele raportului care se af lă în aplicația pentru bănci, numele
raportului după cum îl găsesc în baza de date și formula pentru fiecare modul. (Figură 14 )

Figură 14 Extragere module și rapoarte
Pentru rapoarte am început interfața cu informațiil e pe care l e am de la tab -ul „datasets ”.
Astfel primele două informații vor fi data de raportare și cluster -ul. După aceea am făcut un
model de selecție singular în care îmi țin modulele găsite. Am făcut un model de selecție
multiplu pentru denumirea rapoartelor găsi te, am făcut și aici pentru instituții financiare un
model de selecție multiplu, căsuța pentru introducerea valorii dorite de rapoarte create.
(Figură 15 )

Figură 15 Interfața pentru generarea rapoartelor
Data de raportare și „cluster”-ul merg pe același principiu ca și la „datasets ”, astfel se poate
alege un „cluster ” doar în momentul în care este selectată o dată de raportare, deoarece

24
modelul de selecție singular pentru „cluster ” se populează doar în momentul în care se știe
data de raportare. La o dată de raportare pot exista mai multe „cluster ”-e. Data de raportare
si „cluster ”-ul sunt luate ca și în cazul precedent din tabela din baza de date numită
„FINANCIAL_INST” . Nu se poate alege un „cluster ” care nu există pentru o anumi tă dată de
raportare și nici invers.

Figură 16 Module
Deoarece rapoarte le depind de modulul selectat, meniul cu selecție multiplă în care se află
rapoartele se populează în momentul în care un modul este selectat. Modulele am dec is să le
pun într-un model de selecție singul ar. (Figură 16 )
Pentru rapoarte am decis să creez un câmp ascuns pentru anumite setări ulterioare
îmbogățite pe care l -am lăsat inițial strâns. În acest câmp, la selectarea unui raport, se va crea
un model de se lecție multiplă cu numele raportului selectat. În acest model de selecție am
pus, pentru raportul pe care îl reprezintă , celulele existente în el . O celulă este, de fapt, o
intrare în baza de date. Deci pentru a completa un raport este necesară completarea în baza
de date cu intrări pentru fiecare celulă în parte. În aplicația mare celula se calculează ca fiind
suma celulei respective din toate rapoartele completate. În acest sens, dezvoltatorii de cod
vor putea testa cu aplicația mea dacă suma este făcută bine, aceea fiind aplicată după ce eu
voi insera în baza de date.
Numărul de generări setat în căsuță va reprezenta de câte ori se repetă fiecare celulă din
raport, asta însemnând de fapt, de cate ori se generează raportul. Generarea va fi aleatoare,
informațiile conținute nu vor avea vreo semnificație, fiind un instrument folosit pentru
eficientizarea testării platformei.

25

Figură 17 Mai multe opțiuni pentru rapoarte
Instituțiile financiare sunt puse tot într -un model de selecție multiplu, uneori este necesară
generarea pe mai multe instituții financiare. De asemenea, ca și la „dataset s”, am ales să creez
un câmp ascuns pentru instituțiile financiare selectat e. (Figură 17) În momentul selecției unei
instituții financiare se va pun e în acel câmp, care inițial este strâns, o căsuță în care se va
putea introduce numărul de generări dorit pentru acea instituție financiară. Deci, dacă alegem
un număr de generări pentru o anumită instituție financiară, atunci fiecare celulă din raportu l
selectat se va genera ca având instituția financiară specificată ca numărul de generări pentru
respectiva instituție . Dacă se aleg mai multe rapoarte, pentru fiecare raport în parte se va ține
cont de numărul dorit de generări pentru respectiva instituție financiară.

Figură 18 Selectare celulă pentru mai multe opțiuni
Să ne întoarcem la câmpul ascuns creat special pentru rapoartele selectate. După cum am
precizat se creează un model de selecție multiplu pentru fiecare raport care conține celulele
conținute. Celulele sunt reprezentate prin linie și coloană. Pentru a avea mai multe opțiuni de
generare am creat un grid pentru celulele selectate. În momentul în care selectez o celulă
pentru un anumit raport se va crea o linie în grid î n care se va pune numele raportului, linia la
care se află celula, coloana la care se află celula și numărul de generări pe care vreau să -l fac

26
pentru acea celulă. Ultima coloană din grid este editabilă, acolo putem seta ce număr de
generări dorim noi pent ru celula respectivă. (Figură 18 )
Dacă debifare una din celule se va șterge și din grid -ul creat. De asemenea, dacă debifez un
raport care era selectat, se va șterge atât meniul cu selecție multiplă din câmpul cu opțiuni
suplimentare pentru rapoarte, cât ș i toate celulele aferente lui care au fost selectate și trecute
în grid.

Figură 19 Modificare număr de generări
Am specificat deja că ultima coloană a grid -ului este editabilă. Dacă este nevoie de un număr
special de intrări pent ru o anumită celulă se va apăsa de două ori în căsuța din coloana
„number of records” și se va modifica numărul deja existent cu cel pe care îl dorim.
Modificările aduse acelei coloane se vor lua în considerare în momentul în ca re se face
generarea. (Figur ă 19 ) De asemenea, am un buton de resetare a tuturor componentelor la
starea lor inițială.

Figură 20 Interfața cu toate informațiile completate pentru generare
Acum că toate informațiile au fost introduse/selectate se poate apăsa butonul de generare.
(Figură 20 ) Toate acțiunile se petrec în spate și în momentul acesta se va completa în baza de

27
date în view -ul setat înregistrări. Asupra view -ului respectiv este aplicat un „trigger” care
transmite informațiile către alte două (sau m ai multe) tabele. Aplicația pentru bănci utilizează
toate informațiile oferite de baza de date, în care am introdus noi datele.

Figură 21 Diagramă generare rapoarte
În momentul în care apăs pe generate pe partea de client se cite sc toate informații le introduse
de către utilizator, se împarte numărul total de generări setat la toate instituțiile financiare
selectate. După setarea unui număr de generări pentru o anumită instituție financiară se
trimit la server toate informațiile da te cu instituția financiară respectivă și numărul aferent ei
de generări. La server se preiau toate informațiile transmise de la client și se caută pentru
fiecare raport celulele, unde se introduc toate informațiile date în funcție de condiții. După se
generează în baza de date. Toate informațiile sunt vizualizate de către utilizator în platforma
pentru bănci, care citește informațiile generate din baza de date. (Figură 21)

Figură 22 Raport completat din platforma bancară
Acum că toate informațiile au fost introduse se poate citi din platforma pentru băncii în
funcție de modulul în care s -au introdus datele și de raport informațiile date de către
utilizator. Toate informațiile afișate în platformă sunt la întamplare ele fiind doar pentru
testare nu și pentru a avea un anumit înteles. Verificarea că funcționează este ca pentru o
celulă să se face suma tuturor generărilor pentru acea celulă. (Figură 22)

28
6 DETALII DE IMPLEMENTARE
Pentru a putea începe acest proiect am fost nevoită să co nsult mai multe persoane care
cunosc modul în care aplicația funcționează. Am fost nevoită să știu de unde se pot citi datele
pentru o generare, cum se introduc datele în tabele sau vizualizări, cum le citește aplicația.
Am fost nevoită să completez manual multe „dataset ”-uri, dar și multe rapoarte în platforma
pentru bănci, pentru a vedea cum se modifică înregistrările în baza de date, unde se modifică
și de ce.
Am întâmpinat mai multe probleme pe parcursul dezvoltării proiectului din lipsă de
cunoștințe cu privire la informațiile din baza de date și modul în care sunt interpretate de
către aplicația originală. Am fost nevoită să învăț cum se folosește aplicația inițială pentru a o
putea concepe pe a mea.
6.1 Generare de dataset -uri
6.1.1 Conexiunea la baza de date
Pentru a citi din t abelele și view -urile necesare a fost nevoie dă mă conecte z la baza de date.
Pentru a mă conecta la baza de date am citit informațiile cu pri vire la conexiune din fișierul
„db.propert ies”. Am căutat calea către fișier deschizân d un termi nal din cod, căutând „home”
și dând după aceea efectiv comanda de căutare a unui fișier, în funcție de sistemul de operare
de pe care se va face căutare fișierului. Pentru că exista posibilitatea să fie mai multe fișiere
„db.properties” am veri ficat care d intre ele cuprinde î n calea sa „custom/properties” . Astfel
am descoperit din ce fișier este necesar să citesc.
După ce am găsit fișierul , am salvat din acesta : numele utilizatorului, parola, portul, numele
serverului, sid -ul pentru conexiune și mai exista un atribut în fișierul acela pentru „ layer ”-e.
„Layer ”-ele sunt de fapt numele de fișierele xml aferente fiecărui director care conține tabele
din baza de date.
După salvarea tuturor am realizat conexiunea la baza de date cu ajutorul serverului, portului ,
sid-ului, numelui utilizatorului și parolei.
6.1.2 Citire partiții
Am început prin citi rea tabelului din baza de date „PARTITIONS” și a tabelului
„FINANCIAL_INST” . Pentru citirea partițiilor m -am conectat la baza de date și după am făcut

29
un „select” pe aceasta pentru a lua informațiile de care am nevoie : id, perioadă (care
reprezintă de fapt data de raportare), cluster -ul, starea, dacă este blocat sau nu și tipul. De
fapt am extras toate posibilitățile pentru fiecare coloană în parte. (Figură 23 )

Figură 23 Extragere informații partiții
Informațiile legate de partiții le -am salvat deoarece atunci când voi genera înregistrări în baza
de date ele vor fi luate în considerare în platforma bancară doar în momentul în care
elementele legate de partiții există în acest tabel din baza de date. Pentru interfață am avut
nevoie de data de raportare si „cluster ”. Pentru a afișa aceste informații în interfață am apel at
în partea de client funcția „ getPartitionsElem ents” . Am luat un combobox pentru a pune
datele de raportare. Un combobox este un model de selecție luat din Gxt, în acest model se
poate selecta o singură opțiune din cele posibile. Astfel am introdus toate datele de raportare
pe care le -am găsit în tabel ul „PARTITIONS”. Când am apelat fun cția „getPartitionsElements”
am salvat în obiecte data de raportare și toate „cluster ”-ele aferente acesteia. Cu acest lucru
am populat combobox -ul pentru „cluster ”-e în funcție de ceea ce am selectat pentru data de
raportare. Am pus un ascultător pe selec ția datei de raportare, ca atunci când este selectată
una să caute prin toate obiectele salvate și să populeze combobox -ul cu „cluster ”-ele dorite.
6.1.3 Citire instituții financiare
Pentru instituțiile financiare am făcut conexiunea la baza de date și după acee a am făcut un
„select” după „FINANCIAL_INST” . Am luat toate informațiile posibile pentru coloanele :
plot_fk (care este cheia externă, este interpretată în funcție de „cluster ”), dacă este actualizat
statusul sau nu, numele instituției financiare, codul in stituției financiare. (Figură 24 ) Am creat

30
obiecte care conțin informațiile de mai sus pentru fiecare înr egistrare în parte din tabelul
„FINANCIAL_INST” . Cheia externă și tipul statusului le voi folosi în momentul generării.

Figură 24 Extragere informații instituții financiare
Pentru partea de interfață voi folosi doar numele instituției financiare și codul acesteia. Am
ales să folosesc un model de selecție multiplu, adică un meniu pe care l -am asociat unui buton.
Am adăugat ca op țiuni de selecție numele instituțiilor financiare urmate de codul lor. În acest
moment se pot selecta mai multe instituții financiare.
Pentru a avea un număr de înregistrări pe care îl dormi am adăugat o căsuță în care să poată
introduce numărul dorit. Am pus pe acea căsuță să apară o eroare în momentul în care nu a
fost completat nimic pentru a nu se face generarea.
Toate componente de pana acum au fost puse în interfață inițial deoarece nu depindeau
unele de altele și nici cu altele din exterior.
6.1.4 Citir e dataset -uri
Pentru punerea tabelelor existente într -un combobox am folosit „layer ”-ele extrase în
momentul în care am luat informațiile pentru conexiunea la baza de date. Am folosit același
principiu. Am deschis un terminal din cod Java, am căutat „home ”-ul, după aceea am dat „cd”
pentru a mă duce spre calea respectivă. Problema este că în „layer ” se găsește doar numele
unui folder , deci calea spre el trebuie formată. Astfel am căutat prin tot calculatorul unde se
găsesc directoare cu numele la fel ca „layer”-ul căutat și atunci am verificat dacă în calea sa
conține „datasetbrowser ”, acesta fiind un director părinte celui cu numele căutat. Astfel am
luat toate căile care conțin aceste directoare si am extras din ele toate fișierele xml existente.

31
Am luat f iecare fișier și am căutat după tag -ul „dataset ”. De acolo am extras numele pe care
îl găsești în platforma bancară, dar și numele din baza de date, după atributele „name ” și
„caption ”. Uneori aceste tabele se pot afla sub directorul „easycap ” acolo trebui e căutat după
tag-ul „layout ”, atributele extrase sunt „table ” care reprezintă numele tabelei și „label ” care
este tabelul din baza de date. În cazul în care nu există tag -ul „layout” se va extrage după tag –
ul „xchange” . Acolo v a trebui căutat după atribut ul „xpath” și dacă conține „@” se va salva
din nou numele tabelei. (Figură 25 )

Figură 25 Extragere dataset -uri
6.1.5 Generare înregistrări în dataset -uri
Toate tabelele le -am pus într -un combobox. Acum am toate informațiile necesare pe ntru o
generare. Astfel, în partea de client , am luat toate informațiile introduse și le -am pus într -un
obiect. Prob lema este că eu doresc ca generarea să fie la întâmplare ceea ce înseamnă că și
numărul de înregistrări pentru fiecare instituție financiară trebuie să fie aleatoare. Astfel am
rezolvat această problemă în partea de client . Am verificat câte instituții financiare am
selectate. Am împărțit numărul de înregistrări setat la toate instituțiile financiare în așa fel
încât toate înregistrările pentr u instituțiile financiare adunate să dea numărul total de
înregistrări.

32
Atunci când am trimis informațiile în partea de server am trimis precum număr de înregistrări
cel ales aleatoriu pentru instituția financiară respectivă, deci și precum instituție fin anciară
am trimis tot una, urmând să repet același procedeu pentru fiecare instituție financiară
selectată în parte.
În partea de server am parcurs numărul de înregistrări trimis pentru respectiva instituție
financiară pentru a genera pentru fiecare în pa rte. Am căutat în toată baza de date tabelele
existente și am verificat dacă cel selectat de mine există acolo. Dacă există se va face
construcția unei declarații sql „insert” . Astfel am luat toate numele coloanelor pentru tabelul
din baza de date t ransmis ca parametru. Pe lângă numele fiecărei coloane am extras și tipul
de date care pot fi inserate în acea coloană cât și dimensiunea maximă de caractere acceptată
de acea coloană, toate îmi vor folosi la generare. (Figură 26 )

Figură 26 Extragere nume, tip și dimensiune coloane pentru tabel
După ce am extras denumirile coloanelor pot termina declarația de „insert ” punând „values”
ca valori „?” pentru a le înlocui după ce le caut. Întâi voi verifica dacă nu se află printre
coloanele c are sunt obligatorii să fie introduse cu anumite valori. Dacă aceste denu miri de
coloane se află printre cele obligatorii îi voi atribui ca valoare pe înregistrare ori cea selectată,
în cazul datei de raportare și „cluster ”, ori ceea ce am extras din tabel a „PARTITIONS”. Dacă
este „plot_fk”, coloana va avea o valoare asociată „cluster ”-ului selec tat. Coloanele
importante sunt „plot_fk”, care am menționat că este cheia externă , ea este setat ă în
declarația sql cu funcția „setInt()”, „repdate” care reprezintă data de raportare și „cluster ”,
aplicația fiind nevoită în momentul în care citește din baza de date să știe în funcție de ce dată

33
de raportare și de ce „cluster ” să pună informațiile. O altă informație utilă pentru aplicația
bancară este numele utilizato rului, alta ar fi d acă este blocată celula respectivă, adică nu se
poate scrie în ea, și foarte important să știe în funcție de ce instituție financiară este nevoie
să citească din baza de date. Aceste câmpuri la completare trebuie să fie neapărat ceea ce
există deja în baza de date pentru a le putea afișa în platf ormă. (Figură 27 ) Dacă coloana pe
care introduc datele nu se află printre coloanele tehnice necesare aplicației acestea vor fi
introduse cu un număr de caractere la întâmplare între 0 si maximul d at de către tabel, în
funcție de tipul lor.
Figură 27 Coloanele tehnice
După ce am realizat această generare simplă care este doar cu informații la întâmplare, adică
uneori pot exista informații pe o anumită coloană, pe o altă în registrare nu și dacă nu este o
coloană tehnică inserarea se va face cu un număr de caractere ales de către aplicație între 0
și maximul extras din tabel pentru acea coloană.
S-a dorit posibilitatea de a specifica câte înregistrări sunt necesare pentru o a numită instituție
financiară, dar și să se poată decide un număr fixat de caractere pentru o coloană selectată,
dar și să se poată genera absolut pe toate înregistrări pe o anumită coloană.
Pentru a rezolva problema cu instituțiile financiare am decis să creez un field set, un câmp
ascu ns în interfață care are ca scop posibilitatea introducerii de mai multe opțiuni pentru
instituții financiare dar totuși să nu ne încurce interfața în momentul în care acest lucru nu se

34
dorește. Am pus un selector pe meniul ascuns sub butonul cu instituții financiare. Acest
selector va încărca în field set doar în momentul selectării unei instituții financiare. Se va
încărca pentru fiecare selecție o căsuță în care se va putea introduce numărul de generări
dorit pentru acea i nstituție financiară, cu un label care are numele respectiv selectării. În
momentul în care se va debifa o instituție financiară se va șterge și căsuța aferentă acestuia
din field set. (Figura 28 ) Se va ține cont de selecție în momentul în care se va apăsa butonul
de generare. Dacă este setat un număr pentru o instituție financiară atunci pentru respectiva
instituție se va trimite la server numărul introdus, iar pentru restul se va împărți aleatoriu
numărul de generări rămas după ce se vor scădea cele setat e pentru instituția financiară
specificată.
Figură 28 Selector instituții financiare
Pentru a genera pe toate coloanele și cu un număr specificat de caractere am decis să creez
două grid -uri. Grid -ul este un tabel. În acest grid a m pus în momentul în care se selectează un
tabel din baza de date să se completeze pe o coloană cu toate coloanele tabelului selectat.
Grid -ul mai conține încă 3 coloane, una în care este pus numărul maxim pentru acea coloană,
una în care este setat să se genereze cu un număr la întâmplare de caractere pentru acea

35
coloană și una pentru a se specifica să se genereze la întamplare coloana, pe o înregistrare să
apară informații pe acea coloană , pe o înregistrare să apară valoarea nulă. În grid -ul creat prin
selectarea tabelului am pus să fie inițial setate cu „yes” coloanele care specifică generarea la
întâmplare. În spatele acelui „yes” se află de fapt un checkbox (căsuță de selecție) care este
setată ca fiind selectată. Pe acest grid nu se pot face modificări . De aceea am introdus un al
doilea grid în dreapta acestuia pentru a putea modifica aceste informații pentru ce coloană te
interesează.
Cel de al doilea grid se va popula doar în momentul în care se trage din cel din stânga o coloană
spre acesta. Grid -urile funcționează pe bază de tragere și plasare. În momentul în care am tras
din grid -ul din stânga o coloană către grid -ul din dreapta aceasta se va șterge din primul și va
fi afișat în cel de al doilea.
După plasare linia va avea coloanele doi, trei și pa tru editabile. În cea de a doua coloană se va
putea seta valoarea de caractere dorită. Inițial va fi numărul maxim de caractere permis de
acea coloană. După plasare coloanele pentru generarea aleatoare vor fi setate pe „no”. Astfel
generarea se va face cu fix numărul de caractere maxim și pe toate înregistrările vor apărea
informații pe acea coloană. Dacă dorim să modifică trebuie să apăsăm de două ori cu mouse –
ul pe celula pe care o dorim a fi modificată.
Acum putem să schimbăm numărul într -un număr de ca ractere dorit de noi, putem seta ca
coloana să fie generată cu un număr de caractere aleatoare între 0 și numărul specificat de
noi sau să fie generat cu fix numărul de caractere setat de noi( „no”). Poți decide dacă dorești
să generezi la întâmplare pe o a numită coloană sau nu. Poate în continuare să nu fie generate
date pe acea coloană în toate înregistrările, dar când sunt generate să fie cu numărul
specificat.
În acest moment am trimis la server o listă cu coloanele modificate și cum sunt modificate.
De această listă se va ține cont în momentul generării. Se va genera pe acea coloană
informațiile ca mai sus dar se setează numărul de caractere fix, nu se va mai trece prin
împărțirea aleatoare a caracterelor, decât daca asta e valoarea dată de grid la fel și în cazul
apariției acelei coloane pe toate înregistrările. (Figură 29)

36

Figură 29 Funcția de generare de dataset -uri
În acest moment generarea de „dataset ”-uri este terminată și au fost îndeplinite toate
cerințele de care am av ut parte pe durata dezvoltării acestora.
Am trimis aplicație până în momentul acesta la toți cei care ar beneficia de ea și i -am pus să
o testeze pentru a îmi spune ce adăugări ar mai face. Totul li s -a părut potrivit cerințelor și au
sesizat o foarte mare îmbunătățire a performanței la lucru. În momentul acesta mi -au spus că
foarte ajutător pentru toți ar fi să pot face o generare pentru completarea de rapoarte.
6.2 Generare de rapoarte
6.2.1 Module
Primul pas realizat pentru generarea de rapoarte a fost citirea mod ulelor existente. Un modul
conține mai multe rapoarte. Pentru citirea modulelor am consultat mai multe persoane care
se ocupă cu partea de rapoarte din platforma bancară. Aceștia mi -au spus că voi găs i toate
modulele în directorul „modules” care se află în același loc de unde am extras și tabelele
existente. Astfel am căutat în tot calc ulatorul exact la fel ca și la „dataset” -uri și am verific at

37
dacă calea către directorul „modules” conține „ configuration” . Atunci am preluat toate
fișirele xml de sub acesta .
Din fișierul xml am extra s numele modulului după tag -ul „module” . Am precizat că toate
modulele au mai multe rapoarte sub ele. După ce am citit numele modulului, am citit toate
elementele ca re au ca tag „report” . Pentru fiecare raport în parte am extras atributele
„caption” (numele pentru rapor t găsit în aplicația bancară), „allocname” (în ce tabelă se
găsesc d atele cu privire la raport) și „condition” (condiția de care trebuie ținut cont în
momentul în care este necesară introducerea în baza de date).
Condiția extrasă este utilă în momentul în care platforma bancară citește din baza de date,
pentru că doar platforma va verifica dacă condiția este respectată pentru acea înregistrare.
Pentru a putea insera condiție la generarea mea am fost nevoită să o par sez cu „JSQLParser” .
Am suprascris anumite metode pentru a putea scoate dintr -o condiție mare, una care să poată
fi pur si simplu alocată fără a da erori. El va decide ce rezultat de va lua în considerare.
În cazul în care am de ales între dou ă condiții d e îndeplinit având „or” între ele, am pus să se
aleagă una din ele aleatoriu. (Figură 30)

Figură 30 Pentru „or” între două expresii sql
În cazul în care în timpul par sării întâlnim o expresie cu „null” atunci se va parsa în conti nuare
expresia de la stânga, dar va conține St ring-ul rezultat după expresie „=NULL” sau „ != NULL ”.
(Figură 31)

Figură 31 Pentru „null” pe o expresie sql

38
Cele mai multe probleme le -am întâmpinat în momentul gen erării unor expresi i ce conțin „in” .
(Figură 32) Pentru a rezolva acest lucru am fost nevoită sa îi dau elementului din stânga
expresiei una din va lorile din dreapta operandului „in” . Astfel am salvat toate elementele din
dreapta într -un vector și am dat elemntului din stâng a o valoare aleatorie din vectorul
respectiv.

Figură 32 Pentru „in” între două expresii sql
6.2.2 Dată de raportare, cluster și rapoarte
6.2.2.1 Dată de raportare și cluster
Acum că am terminat cu parsarea condiției am toate informațiile nece sare pentru a putea
trece în interfață. Pentru începutul interfeței am creat combobox -urile pentru data de
raportare și pentru „cluster ”. Acestea sunt exact aceleși ca și la „dataset ”-uri. De asemenea,
și instituțiile financiare merg pe același principiu.
6.2.2.2 Rapoarte
După ce am adăugat aceste 3 componente deja existente pentru „dataset ”-uri am continuat
prin a adăuga un combobox care să conțină toate modulele din platforma bancară. Pentru că
în momentul în care am găsit un modul am salvat și toate rapoartele sale și informațiile despre
aceastea am creat un selector prin care populez un meniu cu toate rapoartele aferente
modulului selectat. Am ales să fac meniu pentru rapoarte, deoarece există posibilitatea ca un
utilizator să își dorească să completeze cu info rmații pentru testare mai multe rapoarte în

39
același timp. (Figură 33) În momentul în care adaug în meniul pentru rapoarte numele
raportului cum se află în plat forma pentru bănci, voi salva într-o mapă numele care este în
baza de date pentru a ști ce adaug în coloana „reportname ” atunci când completez tabelul cu
informații .

Figură 33 Inserare rapoarte în meniu
De asemenea, va exista o căsuță în care utilizatorul va trebui să introducă numărul de rapoarte
pe care dorește să îl gener eze. Numărul se va împarți între rapoartele selectate la întamplare.
Partea de instituții financiare va fi tot un meniu pe care selectorul pus va crea o căsuță într –
un field set pentru a pune numărul dorit de rapoarte pentru acea instituție financiară.
În momentul selectării unui raport din meniu se va crea într -un field set specific setărilor
suplimentare pentru rapoarte un buton sub care va fi un meniu ce va conține toate celulele
acelui raport. Dacă din meniu voi deselecta un raport, butonul se va șter ge. Pentru ștergerea
unui buton am parcurs tot câmpul field set -ului, am luat toate componentele și le -am șters
pe acelea care au titlul setat egal cu numele raportului deselectat. Am decis să mai adaug un
grid pentru a face modificări pe celulele selectat e. În momentul selectării unei celule se va
completa o linie în grid cu numele raportului din care face parte, linia, coloana și numărul
dorit de înregistrări pentru celula respectivă. Coloana pentru numărul de înregistrări dorit
este editabilă, pentru ca utilizatorul să își pună numărul dorit de generări. Această opțiune
am decis să o adaug deoarece la testare există posibilitatea să se dorească testare a unei
anumite celule și atunci să existe mai multe generări doar pentru celula respectivă. În
momentul d eselectării unei anumite celule se va șterge și din grid linia aferentă respectivei

40
celule. De asemenea, am adăugat ca la deselectarea unui raport, pe lângă ștergerea butonului
aferent raportului respectiv, să se șteargă și celulele care au fost introduse în grid din acel
raport.
Pentru a șterge dintr -un câmp anumite componente, este necesar să se parcurgă toate
componentele existente în acel câmp și după să se verifice care sunt de tipul pe care vrem să
îl ștergem (de ex emplu HboxContainer). (Figură 34 ) Fiecare buton, pe care l -am creat pentru
rapoarte, l -am pus într -un container de tip HboxContainer pentru a le așeza frumos în
interfață.

Figură 34 Ștergere HboxContainer
De asemenea, și pentru acest tab am introdus un buton pentr u resetare la o interfață
necompletată, în cazul în care un utilizator dorește să șteargă toate informațiile.
6.2.3 Generare de înregistrări pentru rapoarte
Am întâmpinat probleme în momentul generării de înregistrări în tabela din baza de date
deoarece nu aveam suficiente informații cu privir e la tabel ul în trebuie să introduc
înregistrările. Ideea din spatele platformei pentru bănci este că informațiile introduse trec
printr -un trigger care le transmite în două (sau mai multe) tabele în același timp. Inițiat toate
informațiile sunt introdu se într-un view având ca sufix „syn". Din acest view informațiile sunt
trecute printr -un trigger pentru a ajunge în tabelele cu aceeași denumire dar fără sufix. Ele
sunt introduse și în tabela cu sufixul „ optimized” de unde sunt citite de platformă, dar și în
alte tabele cu sufixe ca „int” pentru inform ațiile de tip integer, „date” pentru informațiile de
tip dată etc.
Pentru a putea afla felul în care se introduc informațiile în baza de date în momentul
introducerii acestora în aplicație am fost nevoită să com pletez mai multe formulare în
aplicația inițială. Astfel am observat unde se introduc informațiile ( în ce tabel ). Pentru a
determina cum se duc informațiile acolo am fost nevoită să întreb o echipă care se ocup ă cu

41
bazele de date, astfel aceș tia mi -au spus că se folosește un trigger. Pentru a afla în ce mod
acționează trigger -ul asupra informațiilor am citit conținutul acestuia.
Pentru completarea rapoartelor am fost nevoită să fac conexiunea la o altă bază de date unde
sunt ținute view -urile pe care sunt aplicate triggere -le. Din partea de client am trimis la server,
in momentul apăsării butonului pentru generare, toate informațiile introduse în interfață.
Astfel după conectare, pe partea de server se verifică dacă tabelul introdus există în baza de
date r espectivă.
O altă problemă întâmpinată la generarea de rapoarte a fost necesitatea setării unui spațiu
de lucru. (Figură 35 ) După ce setez spațiul de lucru iau condiția pusă p e acel raport si o împart
după „and” , luând intr -un vector toate condițiile care au „and” între ele pentru a putea trimite
la „insert” exact valorile care trebuie setate pentru coloanele respective.

Figură 35 Setare spațiu de lucru
În momentul completării unui raport fiecare celulă din raport este o nouă in trare în baza de
date. Astfel pentru a completa un întreg raport am parcurs toate celulele existente. Pentru
celulele modificate din grid l e-am dat valorile date din grid după editare. (Figură 36 )

Figură 36 Setare număr înregistr ări celule modificate
Pentru declararea instrucțiunii „insert” se va seta fiecare coloană a înregistrării. În momentul
setării valorilor pe coloane prima dată se va verifica dacă coloana respectivă este tehnică.
Dacă este o coloană tehnică i se va insera v aloarea specifică, dacă nu este tehnică i se va seta
o valoare aleatoriu.

42
7 EVALUARE
Evaluarea aplicației a fost făcută pe tot parcursul dezvoltării sale. Cum am precizat în
momentul în care finalizam o anumită funcționalitate ceream diverse păreri cu pr ivire la
acestea.
În momentul în care o persoană cu mai multe cunoștințe în platforma observa că ceva ar
trebui adăugat și ar fi de ajutor îmi spuneau pentru a putea pune în practică. Am ținut cont
de părerea tuturor cu privire la aplicația mea și am deci s să ascult absolut orice doleanță .
Faptul că am dus la sfârșit proiectul mi -a oferit ocazia de a lăsa persoane să îmi testeze
aplicația. Astfel pe lângă testele intermediare create pe aplicația mea, au mai fost și testele
finale prin care persoanele mi -au evalua t toată aplicația.
Am întâ mpinat probleme de performanță în dezvoltare pe care le -am determinat prin debug
sau chiar a fost adusă ca idee implementarea unei memorii de reținere a informațiilor care se
extrăgeau în cel mai mult timp. Cele mai multe p robleme de timp au fost aduse de către citirea
fișierelor pentru t oate denumirile de tabele, dar ș i a modulelor pentru rapoarte. Am efiencizat
aceste probleme, acum încărcarea aplicației făcându -se în câteva secunde.
O altă problemă întâmpinată a fost cu l ocul în care se află toate informațiile necesare unei
generări. M -am confruntat cu această problemă din cauza lipsei de cunoștințe legate de
platforma inițială. Dar prin teste am reușit să găsesc soluții.
Spre deosebire de alte instrumente care realizează generări de date, aplicația mea ține cont
de orice condiție pusă pe un anumit tabel. De asemenea, instrumentul știe să decidă în ce fel
să se genereze datele doar introducând puține informații de bază. Se introduc data de
raportare și „cluster ”-ul direct î n coloană aferentă din tabel fără a specifica care este aceasta.
În același mod funcționează și coloana pentru instituții financiare. Faptul că se poate genera
pe mai multe instituții financiare, dar acestea fiind doar coloane în tabel este o altă
îmbunăt ățire adusă de această aplicație.
Necesitatea de a ști cât mai puține informații de către persoanele care testează platforma
pentru bănci și totuși de a putea s ă își testeze funcționalitățile aduse pe acea platformă i -a
determinat să utilizeze platforma me a și nu una existentă pe piață.

43
8 CONCLUZII
Pentru a duce la final aceast ă lucrare a fost nevoie de multă cercetare asupra platformei
pentru bănci. Trebuia știut în ce mod își salvează datele, unde și în ce moment. Tab -urile
diferite lucrează pe baze de dat e diferite. Toate informațiile le -am primit pe parcursul
dezvoltării proiectului.
Funcționalitățile proiect ului meu au fost duse la final , iar utilizatorii sunt foarte mulțumiți de
viteza de reacție a programului. Acum timpul de lucru este unul mult mai m are. De fiecare
dată când a intervenit o problemă am reușit să îi găsesc o soluție prin încercări continue în
platforma inițială.
Consider că în momentul de față toate echipele care au nevoie de teste cu informații din baza
de date au mai mult timp să dezv olte platforma. Dacă au nevoie de „dataset ”-uri pot genera
sute de înregistrări în „ dataset ”-uri în doar câteva secunde.
Cea mai dorită parte a aplicației a fost completarea de rapoarte, deoarece un raport p oate
dura și câteva minute să îl completezi manu al. Deci, în cazul în care dorești completarea a mai
multor rapoarte pierzi zeci de minute. Dorința cea mai mare a fost pe crearea acestui
instrument de generare de rapoarte pentru a economisi timp, acum nu mai ia dezvoltatorilor
timp din cel acordat pentr u dezvoltare.
Proiectul meu a fost considerat de la bun început un mare avantaj adus echipelor de
dezvoltare. El este un instrument gratuit și se mulează perfect pe cerințele lor. Nu a fost găsit
un instrument cu o licență gratuită care să poată să țină c ont de toate condițiile de generare.
Condițiile pentru rapoarte, dar și condițiile de inserare, cum ar fi în ce tabel sau view să se
insereze. Toate informațiile legate de unde se inserează sunt introduse din cod.
Utilizatorul aplicației nu necesită cunoș tințe legate de inserarea intr -un raport atunci când îl
completează. În momentul acesta toate condițiile de pe rapoarte sunt luate în considerare de
proiectul meu fără ca utilizatorul să le cunoască, astfel acesta poate testa anumite
funcționalități fără a fi nevoit să cunoască toate informațiile despre raportul respectiv.
Opțiunile create pentru fiecare tab au fost concepute pentru a putea completa „dataset ”-uri
sau rapoarte fără a încerca să deslușești tot ce este în spatele acestora, de t oate se va ocup a
platforma mea.

44
9 BIBLIOGRAFIE

[1] M. Anandarajan, A. Anandarajan și C. A. Srinivasan, Business Intelligence Techniques,
Berlin: Springer -Verlag, 2004.
[2] S. F. w. B. Pribyl, Oracle PL/SQL Programmin, Fourth Edition, Sebastopol: O'Re illy Media,
2005.
[3] K. Arnold, J. Gosling și D. Holmes, The Java Programming Language, Fourth Edition,
Addison Wesley Professional, 2005.
[4] „Sencha GXT,” Sencha, [Interactiv]. Available:
https://www.sencha.com/products/gxt/#overview. [Accesat 25 01 2018].
[5] C. Hall, Implementation Idiroms and Best Practices, Futurescale, 2008.
[6] „GWT Overview,” GWT, [Interactiv]. Available:
http://www.gwtproject.org/overview.html. [Accesat 26 01 2018].
[7] „Apache Maven,” Apache, [Interactiv]. Available : https ://maven.apache.org/. [Accesat
18 01 2018 ].
[8] A. Jecan, Java 9 Modularity Revealed, Berkeley: Apress, 2017.
[9] M. A. Russel, Mining the Social Web, Second Edition, Sebastopol: O'Reilly Media, 2014.
[10] „SQL Data Generation,” Red Gate So ftware Ltd, [Interactiv]. Available: https://www.red –
gate.com/products/sql -development/sql -data -generator/. [Accesat 30 05 2018].
[11] IBM, „Get started with IBM DB2 Test Database Generator,” IBM, [Interactiv]. Available:
https://www.ibm.com/developerwor ks/data/library/techarticle/dm -0706salkosuo/.
[Accesat 02 06 2018].
[12] DATANAMIC, „Datanamic Data Generator MultiDB,” DATANAMIC, [Interactiv].
Available: http://www.datanamic.com/datagenerator/index.html. [Accesat 03 06
2018].

45

Similar Posts