Documente Academic
Documente Profesional
Documente Cultură
Cuprins
Cuprins ................................................................................................................................ 4 Capitolul 1. Introducere Contextul proiectului .............................................................. 7 1.1 Internet i Web 1.0................................................................................................. 7 1.2 Web 2.0, Web 3.0 i HTML5 ................................................................................ 8 1.3 Social Media i Social Dashboards ....................................................................... 9 1.4 Motoare de cautare i Web .................................................................................... 9 1.5 Contextul Problemei .............................................................................................. 9 Capitolul 2. Obiectivele proiectului ................................................................................ 10 2.1 Generator Web 3.0 ............................................................................................... 10 2.2 Site Web 3.0 ........................................................................................................ 11 2.2.1 Personalizare site .......................................................................................... 11 2.2.2 Platforme Web 2.0 ........................................................................................ 12 2.2.3Memorare / Manipulare informaii ................................................................ 12 2.3 Editor ................................................................................................................... 13 Capitolul 3. Studiu bibliografic ...................................................................................... 14 3.1 Conceptul Web X.0 ............................................................................................. 14 3.1.1 Web X.0 Pro/Contra ..................................................................................... 14 3.1.2 Web 1.0......................................................................................................... 15 3.1.3 Web 2.0......................................................................................................... 16 3.1.3.1 Web 1.0 Web 2.0 ................................................................................ 17 3.1.4 Web 3.0......................................................................................................... 19 3.1.4.1 Elementele Web 3.0............................................................................... 20 3.1.4.2 Semantic Web - Teorie .......................................................................... 20 3.1.5 Web 4.0......................................................................................................... 23 3.2 Generatoare de Site-uri ........................................................................................ 23 3.3 Web Service......................................................................................................... 24 3.4 Social Dashboards ............................................................................................... 25 3.5 Data mining ......................................................................................................... 26 Capitolul 4. Analiz i fundamentare teoretica ............................................................... 28 4.1 Analiza general .................................................................................................. 28 4.2. Analiza componente ........................................................................................... 29 4.2.1 Site-ul web .................................................................................................... 30 4.2.1.1 Cerine funcionale ................................................................................ 30 4.2.1.2 Cerine ne-funcionale: .......................................................................... 31 4.2.1.3 Cerine specifice domeniului problemei:............................................... 32 4.2.2 Generatorul Web........................................................................................... 32 4.2.2.1 Cerine funcionale ................................................................................ 32 4.2.2.2 Cerine ne-funcionale ........................................................................... 32 4.2.3 Editorul de Site-uri ....................................................................................... 33 4.2.3.1 Cerine funcionale ................................................................................ 33 4.2.3.2 Cerine ne-funcionale ........................................................................... 34 4.2.3.3 Cerine specifice domeniului problemei ................................................ 35 4.3 Arhitectura Sistemului ......................................................................................... 35 4.3.1 Arhitectura bazat pe componente ............................................................... 35 4.3.2 Descrierea Arhitecturii Proiectului ............................................................... 36
Cuprins Capitolul 5. Proiectare de detaliu si implementare ......................................................... 38 5.1 Arhitectura proiectului implementat.................................................................... 38 5.2 Editor Site ............................................................................................................ 38 5.2.1 Aplicaia Flash .............................................................................................. 39 5.2.1.1 Platforma Aplicaiei............................................................................... 39 5.2.1.2 ablon de proiectare .............................................................................. 40 5.2.1.3 Elemente generale ale implementrii .................................................... 41 5.2.1.4 View ...................................................................................................... 44 5.2.1.4.1 Elementele Vizuale ......................................................................... 44 5.2.1.4.2 Tipuri de componente ..................................................................... 46 5.2.1.5 Controlorul (Controller) ........................................................................ 49 5.2.1.6 Modelul.................................................................................................. 53 5.2.1.6.1 Operaii legate de pagini ................................................................. 53 5.2.1.6.2 Operaii legate de componente ....................................................... 54 5.2.2 Standardul XML ........................................................................................... 57 5.2.3 Aplicaia JSP ................................................................................................ 59 5.2.3.1 Platforma Aplicaiei............................................................................... 59 5.2.3.2 Implementarea operaiilor ..................................................................... 59 5.3 Site Web 3.0 ........................................................................................................ 61 5.3.1 Pagini specifice fiecrui site ......................................................................... 61 5.3.2 Paginile generate de utilizator ...................................................................... 62 5.3.3 Pagina Social Dahsboard .............................................................................. 64 5.4 Generatorul Web.................................................................................................. 65 5.4.1 Tehnologia Web Service ............................................................................ 66 5.4.2 Operaiile Generatorului web ....................................................................... 67 Capitolul 6. Testare i validare ....................................................................................... 69 6.1. Ansamblul proiectului ........................................................................................ 69 6.2.Editor ................................................................................................................... 70 6.3. Generator ............................................................................................................ 71 6.4. Site ...................................................................................................................... 71 Capitolul 7. Manual de instalare si utilizare ................................................................... 72 7.1 Instructiuni de instalare ....................................................................................... 72 7.1.1 Editorul ......................................................................................................... 72 7.1.2 Generatorul ................................................................................................... 73 7.1.3 Site ................................................................................................................ 73 7.2 Manual de utilizare .............................................................................................. 74 7.2.1 Editorul ......................................................................................................... 74 7.2.2 Generatorul ................................................................................................... 78 7.2.3 Site ................................................................................................................ 79 Capitolul 8. Concluzii ..................................................................................................... 81 Calitatea obiectivelor realizate .................................................................................. 81 Posibile dezvoltri/nbuntiri .................................................................................. 83 8.2.1 Dezvoltri/nbuntiri generale ................................................................... 83 8.2.2 Editor ............................................................................................................ 83 8.2.3 Generator ...................................................................................................... 84 8.2.4 Site ................................................................................................................ 84 Bibliografie ........................................................................................................................ 85 Anex ................................................................................................................................. 87 A1 Editor ................................................................................................................... 87
Cuprins A1.1 Elementele vizuale ale aplicaiei .................................................................. 87 A1.2 Controlerul .................................................................................................... 88 A1.3 Modelul ......................................................................................................... 89 A2. Generator ............................................................................................................ 91 A3. Site ...................................................................................................................... 93
Capitolul 1
Capitolul 1.
Pentru o introducere corespunzatoare n contextul problemei este indispensabil o prezentare a evoluiei Internetului, a modificrii structurii sale. Necesitatea unei astfel de prezentri este motivat de evoluia legturii ntre Internet i om, de satisfacerea nevoilor utilizatorului i modul prin care Internetul a rspuns acestor cereri. Fenomen complex care, mai mult ca niciodata, are un rol important n viaa omului, Internetul a parcurs o serie de etape pentru a deveni ceea ce este astzi. Aceast capitol va prezenta succint etapele de dezvoltare, att tehnologic ct i privit din punct de vedere al raportului author user, apoi va continua cu o ramura a Internetului i anume socializarea on-line ct i o prezentare a viitorului. Descrierea fiecrei etape va fi limitativ, dar va conine suficient informaie pentru inelegerea unui concept sau fenomen, mpreun cu surse bibliografice care prezint conceptul n profunzime.
Capitolul 1
Capitolul 1
Capitolul 2
Capitolul 2.
Obiectivele proiectului
Problema procesrii tuturor informaiilor Web 2.0 sub o singur platform se poate realiza printr-o aplicaie independent . Aceast aplicaie trebuie s neleag ceea ce doreste utilizatorul, s poat fi utilizat de oriunde, s pstreze personalitatea utilizatorului, s pstreze legtura cu aplicaiile Web 2.0 i s ajute utlizatorul n experiena on-line. Soluia propus const ntr-un site care ndeplinete toate condiiile de mai sus. Proiectul ofer un generator de site-uri web, unul specific fiecrui utilizator, care nu se va rezuma doar la generarea codului de manipulare (pagin personalizat i pagini de unificare a platformelor Web 2.0), ci i la generarea codului de interpretare a informaiilor primite - Web 3.0. Realizarea obiectivului propus se efectueaz printr-un proiect ce const n trei pri principale: un serviciu on-line care genereaz site-uri Generator Web 3.0, un consumator de servicii care citete preferinele utilizatorului apoi le trimite serviciului de generare Editor; i site-ul Web 3.0 generat. Luat fiecare individual, se observ un aparent raport de dependen a clientului fa de serviciu, independena produsului final i a serviciului, posibilitatea de reutilizare a serviciului ct i alte particulariti care vor fi prezentate n subcapitolele urmtoare. Astfel descrierea obiectivelor proiectului ncepe prin descrierea obiectivelor componentelor sale principale.
10
Capitolul 2
11
Capitolul 2
12
Capitolul 2 O caracteristic esenial a acestei funcionaliti const n caracterul permanent al acestei baze de date. n momentul schimbrii /actualizrii site-ului, coninutul bazei de date nu se va schimba. Operaiile eseniale oferite de acest funcionalitate se rezum la: prelucrare Web 2.0, memorare informaii relevante manipulare informaiei spre generarea unui coninut relevant utilizatorului persistena bazei de date odat generate
2.3 Editor
Aplicaia Editor are dou funcionaliti principale. prima funcionalitate este de manipulare. Aplicaia primete intrrile de la utilizator, le transform ntr-un format pe care aplicaia Generator le recunoate i apoi afieaz rspunsul acesteia. a doua funcionalitate este una de testare. Prin aplicaia Editor se poate verifica disponibilitatea serviciului, se limiteaz intrrile la Generator la cele pe care acesta le poate procesa i testeaz coninutul decurs din procesul de creeare. Datorit celor dou funcionaliti, Editorul poate fi ncadrat n tipul de aplicaie Front End[17], un mediu CAD (Computer Aided Design)[16] care s permit o creeare/modificare a unui site. Utilizatorii necesit un nivel minim de cunotiine despre web, mediul de dezvoltare trebuie s respecte conceptul usability aplicaia s fie folosit ntr-un mod uor i de plcut[18]. Mediul trebuie s permit importul de fiiere multimedia, dar nu prezint un editor al acestora. Fiierele sunt ataate paginilor web prin poziionarea acestora n cadrul pagini. Obiectivele principale se rezum la: ajutor creeare/editare/modificare pagini apelare serviciu web/ verificare disponibilitate serviciu publicarea unui rezultat parial respect conceptele Web 3.0 / Semantic web
13
Capitolul 3
Capitolul 3.
Studiu bibliografic
Parcurgerea obiectivelor din capitolul anterior, a relevat o serie de concepte i principii care au la baz studii bibliografice. Documentarea corespunztoare asupra acestor principii i tot ceea ce reprezint, este esenial n dezvoltarea corespunztoare a proiectului. Spre deosebire de capitolele anterioare, criteriul de clasificare dup care se va face partajul materialelor bibliografice n subcapitole, nu mai este elementul comun, ci importana studiului bibliografic pentru proiect. Fiecare subcapitol va prezenta o serie de concepte, prerile unor experi n domeniu, exemple practice ale conceptelor, apoi legtura dintre proiect i aceste concepte .
Capitolul 3 O alt prere contra conceptului 2.0 se fundamenteaz pe exemplul Amazon.com. mpreun cu alte site-uri din perioada anului 1995, Amazon.com permitea review-uri din partea utilizatorilor si. Alte preri opuse Web 2.0, exemplu articolul [23], motiveaz inexistena conceptului datorit spectrului mult prea larg de aplicabilitate. Susintorul Web 2.0, Tim OReilly a rspuns n articolul [24] prin prezentarea conceptului n 7 capitole. El a cuprins ideile principale corespunztoare noului concept prin comparaie cu predecesorul su; articolul descrie diferenele dintre elementele Web 1.0 i Web 2.0, reliefnd ideile specifice conceptului Web 2.0. Un argument suplimentar i decisiv legat de existena i aplicabilitatea conceptului Web X.0, este dat de nsui cei care scriu internetul, utilizatorii. Datorit folosirii lui pe o scal larg, practica general asociat i perioadei ndelungat n care s-a invocat conceptul, a devenit larg acceptat de toi practicienii ct i de toi teoreticienii. nsui Tim Berners-Lee, cel care a denumit Web 2.0 o bucat de jargon, a recunoscut la Conferina Web 2.0 din anul 2009[25]: este un termen minunat pentru a oferi o linie de dezvoltare [a internetului] n ultimii ani.
15
Capitolul 3
16
Capitolul 3 The Long Tail[24] site-urile mici reprezint cea mai mare parte a internetului, astfel orice aplicaie s se concentreze la site-urile mari i la cele mici Aplicaiile sunt data-driven este important deinerea unei baze de date unice, o baz de date greu de recreat Utilizatorii adaug valoare utilizatori trebuie s se implice n adugarea coninutului Drepturi rezervate soft reutilizabil care aparine oricui The perpetual Beta aplicaii n continu modificare Cooperare, nu control s nu existe un monopol al unui serviciu Software specific mai multor dispozitive Cateva elemente constatate n practica Web 2.0: Limbaje orientate spre o grafic nbuntit: JavaScript, Ajax, Flash Socializarea internetului prin interoperabilitatea aplicaiilor Web 2.0, Servicii Web Necesitatea de generare cod reutilizabil oferit utilizatorului, exemple YouTube; Flickr;
sau chiar opiuni de manipulare: Facebook, Twitter, etc
Limbaje predominante: HTML, XHTML, PHP, ASP, JSP n seciunea urmtoare se vor prezenta cteva tabele comparative Web 1.0 Web 2.0. 3.1.3.1 Web 1.0 Web 2.0 Jeffrey Henning, n prezentarea [28], ofer o scurt i simpl comparaie ntre Web 1.0 i Web 2.0 - Tabelul 3.1. Aceast prezentare simplist prezint esenialul diferenelor Web 1.0 2.0. Tabelul 3.1 Web 1.0 Web 2.0 Oneway Twoway Autoritar Democratic Pasiv Activ Static Dinamic nchis Colaborativ Toate comparaiile se bazeaz pe diferena din perspectiva utilizatorului. Prima prezint cele dou concepte asemntor comunicarii dintre dou persoane. One way - sunt aplicaiile n care utilizatorul nu poate aduga coninut, doar s vizualizeze asemntor unui monolog. Twoway este dialogul Web, utilizatorul poate citi i aduga coninut. Celelalte comparaii sunt legate de prima. Web 1.0 este autoritar i static datorit rigiditii sale, pe cnd Web 2.0 este democratic i dinamic, permite i utilizatorului s participe la creearea coninutului. Choise Media Group,Vovici, ntr-un webcast[29], a prezentat clasificarea dup Tabelul 3.2. Aceast comparaie repet i completeaz cea fcut de Jeffrey Henning. Tabelul 3.2. Web 1.0 Web 2.0 Coninut Read-Only Coninut generat de utilizator Ochi Maini Stickiness Syndication Editor Buzz Pagini Personale Blog Centralizat Croudsourcing
17
Capitolul 3 Prima comparaie, mpreun cu doua, repet prezentarea diferenelor dintre concepte din prisma utilizatorului, singura diferen const n modul de exprimare. A doua comparaie prezint ntr-o manier artistic ceea ce a fost expus n prima comparaie. Raportul Stickiness/Syndication reprezint caracterul Rigid/Flexibil corespunztor celor dou concepte. Stickiness reprezint inflexibilitatea aplicaiilor Web 1.0 n opoziie cu flexibilitatea aplicaiilor Web 2.0. Aici Syndication nu se refer la RSS feed. Diferena Editor/Buzz se rezum la modul de publicare a coninutului a dou aplicaii specifice conceptelor din care faceau parte. Editor publica informaiile oferite de autor, dar nu permitea adugarea de coninut din o surs exiterioar. Buzz(Google) era o reea de socializare n carea utilizatorii puteau face schimb de informaii. Ambele servicii nu mai sunt disponibile astzi. Diferena pagini personale/blog este una de coninut. Ambele permit unui utilizator s publice informaii, diferena este din perspecitva cititorului. Asemntor cu deosebirea principal intre Buzz/Editor, utilizatorii pot aduga preri legate de articolele publicate doar pe Blog, nu i n cadrul Paginilor personalizate. Este important urmtoarea meniune: paginile personalizate, din comparaia pagini personalizate/blog, sunt pagini specifice Web 1.0. n cazul n care ele ofer posibilitatea de feedback, ele sunt produse Web 2.0. Ultima comparaie este la nivelul dezvoltatorilor. n Web 1.0 dezvoltatorii coninutului aplicaiilor Web erau doar programatorii care publicau aplicaia. Spre deosebire de predecesorul su, acum consumatorii produsului Web 2.0 devin i ei dezvoltatori ai coninutului (codeveloperi)[24]. Croudsourcing nseamn externalizarea unui serviciu ctre un grup de specialiti sau comunitate sub forma unei competiii de dezvoltare. Diferena croudsourcing/outsourcing const n publicul la care este predat. Croudsourcing se aplic unui public nedefinit. Tim OReilly, n lucrarea sa [24], a formulat cteva exemple Web 1.0 Web 2.0. Aceste exemple stau la baza celor apte principii enunate. Tabelul 3.3 corespunde lucrrii [24] i conine exemple de aplicaii sau principii care reliefeaz Web 1.0 i Web 2.0. Tabelul 3.3 Web 1.0 Web 2.0 Doubleclick GoogleAdSense Ofoto Flickr Akamai BitTorrent Mp3.com Napster Britannica Online Wikipedia Personal websites Bloging evite Upcoming.org i EVDB Domain name speculation Search engine optimization Page views Cost per click Screen scraping Web services Publishing Participation Content management systems Wikis Directories (taxonomy) Tagging (folksonomy) Principala diferen DoubleClick/AdSense a fost targetul de site-uri folosite. AdSense a demonstrat c serviciile pentru consumatori i managementul informaiei algoritmice trebuie s se ntind peste tot web-ul, pn la margini, nu doar la centru, la coada sa lung, nu doar la cap[24]. DoubleClick era un model care susinea: cei care fceau promovarea fceau regulile, iar publicitatea era dedicat doar celor mari. Vizitatorii se orientau n general spre aceste pagini. 18
Capitolul 3 Succesul Adsense a constat n posibilitatea de a publica pe orice pagin advertisements i spre deosebire de predecesorul su, nu necesita un contract de vnzri. Acum publicitatea nu apare doar pe site-uri mari, ci poate aprea pe orice site. Diferena Akamai/BitTorrent este una crucial. Ambele servicii se ocup de transferul de fiiere ctre utilizatori. Diferena ntre cele dou era modul de transmisie. Akamai oferea fiierele de pe serverele lor, pe cnd BitTorrent se folosea de arhitecturi n participaie [6]. BitTorrent se folosea de ideea lui Tim Berners-Lee, o aplicaie devine mai bun cu ct mai muli utilizatori particip la ea. n cazul n care serverele devin suprasolicitate, cei de la Akamai trebuiau s adauge alte servere, pe cnd la BitTorrent o suprancrcare pare greu posibil datorit participaiei utilizatorilor att la download ct i la upload. Acelai argument este revelator n comparaia Mp3.com/Napster. Comparaia ntre cele dou enciclopedii Online Britannica Online/Wikipedia este asemntoare cu cea Akamai/BitTorrent. Dei Britannica produce articole mai relevante/preioase dect Wikipedia, Britannica nu va putea niciodat produce o cantitate mai mare de articole ca Wikipedia, datorit numrului de editori/utilizatori. Comparaia dintre cele dou e asemntoare cu One-Way/Two Way a lui Jeffrey Henning. n aceast comparaie Web 2.0 pare a fi n dezavantaj datorit raportului cantitate/calitate. La o prim vedere aa este, dar cu un numr tot mai mare de contribuitori la mediul Wikipedia, calitatea ncepe s creasc odat cu cantitatea. Nivelul de utilizatori/creatori de coninut Wikipedia este n continu cretere. Site-ul [40] conine informaii suplimentare pe acest subiect. Diferenele ntre publishing/participation; personal websites/blogs; Ofoto/Flickr; Screen Scraping/WebServices, sunt parcurse n mare n paragrafele anterioare. Diferenele dintre acestea reprezint aplicarea unui principiu specific Web 1.0/Web 2.0 n diferite contexte de dezvoltare.
19
Capitolul 3 Directorul W3C Tim Berners-Lee a descris Web 3.0: un amestec ntre o grafic format din vectori scalari, cu un acces la un Web semantic integrat pe un spaiu imens de informaii, n care vei avea acces la o cantitate incredibil de resurse. Aceast prere este mprtit i de ali experi, n prezent, majoritatea practicienilor ct i teoreticienilor susin aceeai idee. Web 3.0 pare a avea la baz cele cinci concepte enumerate mai sus. 3.1.4.1 Elementele Web 3.0 Primele patru direcii de dezvoltare cuprinse n acest subcapitol sunt tangente cu proiectul dezvoltat, astfel ele vor fi descrise pe scurt. Scalable Vector Graphics, considerat ntre Web 2.0 i Web 3.0, este deja folosit n dezvoltarea aplicaiilor web. SVG este o familie de specificaii, bazate pe XML, pentru descrierea imaginilor, statice sau dinamice, ntr-un spaiu vectorial bi-dimensional. SVG a cunoscut o serie de versiuni, n prezent 1.1 fiind recomandat de W3C. Acest standard este folosit de o perioad ndelungat, el este un proiect open standard din anul 1999. n prezent, majoritatea browserelor web cunosc i au o implementare pentru SVG. Apartenena lui la Web 3.0 se explic prin abundena n practic a acestui format, spre deosebire de predecesorii si Web. Inteligena artificial va avea o importan major n experiena online. Aplicaiile Web 3.0 trebuie s fie capabile s efectueze seturi de sarcini specifice utilizatorului. Fie aplicaia va citi profilul utilizatorului [7], fie va face operaii pentru utilizator, fie aplicaia va genera content[31], domeniul de aplicabilitate va fi foarte mare. Un lucru este sigur, web 3.0 va introduce Inteligena Artificial n domeniul Web[41]. First Generation Metaverse, definit n articolul [32] i amintit n articolul [7]. Web 3.0 va unii Internetul cu lumea 3D. Vor exista aplicaii care localizeaz i genereaz modele 3D. Unele preri merg mai departe, Internetul va fi n 3D. Aceast prere pare plauzibil datorit efortului interprins de dezvoltare a unei alternative OpenGL, denumit WebGL[36]. Aceast platform scris n AJAX permite aplicaiilor care folosesc OpenGL s ruleze n interiorul browserului. Informaia i modul su de foloisin. Reid Hoffman, cofondator LinkedIn, a prezentat ntr-o conferin [37] importana informaiei i modul cum va circula on-line. Web 3.0 va conine toat informaia produs de 2.0, mpreun cu informaii analitice[37]. Aceast informaie trebuie clasificat dup importana sa, procesat, iar din ea se va genera noul coninut. Acum aplicaiile vor contribui la coninutul paginilor, mpreun cu utilizatorii (Web 2.0) i autorii (Web 1.0). 3.1.4.2 Semantic Web - Teorie Deseori folosit ca sinonim cu Web 3.0, Semantic Web arat un internet n care aplicaiile web nu doar afieaz informaii ci i interpreteaz. Tim Berners-Lee descrie Semantic web n cartea sa [38] un web de informaii care poate fi procesat direct sau indirect de ctre maini. James Hendler n articolul [39] descrie Semantic Web: scopul acestei noi tehnologii este dezvoltarea comunicrii ntre oameni, folosind diferite terminologii care extind interoperabilitatea bazelor de date, care s furnizeze instrumente pentru interactivitatea cu coleciile multimedia i s asigure noi mecanisme pentru suport al tiinei. Tot n acest articol el scrie: Pentru a ajunge la acest potenial, oamenii de tiin i inginerii tehnologiei informaiei 20
Capitolul 3 trebuie s creeze noi modele de cooperare[] pentru noua generaie de instrumente tiinifice pe Web. Semantic Web propune un internet care se bazeaz pe cunotine collection of knowledge[38]. El va permite utilizatorilor s adauge ceea ce cunosc, aplicaiile s neleag i s rspund la diferite ntrebri. W3C definete, pe site-ul oficial [42], Semantic Web ca o extensie a World Wide Web, care permite utilizatorilor s mpart informaii dincolo de limitele aplicaiilor i website-urilor. El este descris ori ca un web of data, fie un salt spre o paradigm natural n folosina de zi cu zi a Web-ului, sau ca un internet mai aproape de om. Aceast extensie nu va nsemna un nou Internet. Datele oferite de ctre Web 2.0 vor fi utile n dezvoltarea noului Internet. Pe baza unor legturi semantice, se va genera coninut nou din cel vechi. Informaia generat trebuie s fie ntr-o form structurat de date, va fi editat n aa fel nct s poat fi citit att de utilizatori ct i de aplicaii. Tot n site-ul [42], Semantic Web primete dou caracteristici : [...] formate comune pentru integrare i combinare a datelor provenite din diverse surse, spre deosebire de Web-ul anterior care se ocupa doar de intreschimbul de resurse; de asemenea: Semantic Web definete [...] cum datele Web sunt legate de obiecte reale Odat cu promovarea i acceptarea conceptului de Semantic Web ca un pas firesc n dezvoltarea Web, au nceput s apar diverse preri despre cum s-ar putea implementa. Tim Berners-Lee, n prezentarea sa [43], a descris Arhitectura Semantic Web ntr-o form denumit generic : Semantic Web Cake , Figura 3.1.
Figura 3.1 Semantic Web aa cum a fost prezentat de Tim Berners-Lee n 2000 Structura prezentat de Arhitectura Semantic Web trebuie analizat bottom-up. Prima parte conine unicode i URI mpreun cu XML i xmlschema. Descrierea elementelor specifice acestui nivel se bazeaz pe definiiile oferite de W3C[44]. Unicode reprezint un standard de codificare, reprezentare i manipulare a caracterelor text, din majoritatea sistemelor de scriere din lume. URI Uniform Resource Identifier este format dintr-un ir de caractere care descrie o resurs dintr-o reea. Aceste dou componente se ocup de identificarea elementelor pe Web printr-o codificare adecvat. XML este un limbaj de descriere a datelor, uor inteligibil att aplicaiilor ct i oamenilor. Xmlschema este o particularizare a modului de reprezentare XML prin definirea unor seturi de reguli pentru reprezentarea datelor. NS provine de la namespace i propune un set de denumiri unice pentru elementele i atributele dintr-un document. XML ofer un suport corespunztor 21
Capitolul 3 pentru codificarea semanticii, datorit practicii asociate ct i uurinei de manipulare a formatului. RDF Resource Description Framework se bazeaz pe o tripl de informaie, format din: un subiect, un obiect i verbul/predicatul care leag cele dou. Subiectul i Obiectul reprezint resurse care dein propria identitate. Aceast identitate este descris individual n resurse descriptive, printr-un URI. Legtura dintre resurse este realizat printr-o descriere. Aceasta este un container care conine cteva afirmaii despre resurs. Exemplu 3.1,Tripla: Ana are mere, grafic: are Subiect Ana Descriere mere Obiect
Exemplu 3.1, Tripla: Ana are mere, XML: <rdf:Description about=[Ana] xmlns:are=[NS]> <predicatulMeu rdf:resource=[mere] /> </rdf:description> Codul anterior prezint Ana ca o resurs; se definete un namespace pentru relaia are; se specific legtura cu resursa mere. Subiectul i descrierea (predicatul) sunt de regul reprezentate prin URI. Obiectul este fie un alt URI, fie un string sau un numr. Exemplu 3.2 din perspectiva URI: Subiect Descriere/Predicat Obiect <http://exemplu.com/persoana/Ana> - <http://ontologiefamilie.com/1.0#areTata> <http://exemplu.com/persoana/Ion > RDF definete clase, obiecte i predicate mpreun cu anumite reguli specifice fiecruia. RDF + rdfschema reprezint setul de reguli care trebuie respectate, oferind o structur de siguran pentru dezvoltarea semanticii. Ontologia este un model folosit pentru repezentarea informaiei, un set de concepte dintrun domeniu, i modul cum relaioneaz reprezentrile. Ontologia se bazeaz pe RDF i prezint resursele sub denumirea de clase. ntr-o ontologie se adaug semantica la resursele specificate(una sau mai multe RDF), singura condiie este unicitatea termenilor descrii n clase. Scopul ontologiei este de a crea relaii din schemele descrise de RDF, mpreun cu crearea altor relaii (subiecte/predicate/obiecte). Ontologia prezint urmtoarele caracteristici: formate din triple, asemntor cu RDF uor de extins definirea unei triple noi formeaz o relaie nou prin modificarea semnificaiei subiectelor/predicatelor/obiectelor nu se modific ontologia alternative excelente la cod surs ontologia este mai uor de modificat adaptabilitate Logica se formeaz din ontologie i conine toate relaiile formate. Proof reprezint totalitatea de legturi formate la cerere sub forma unei query. 22
Capitolul 3 Trust reprezint nivelul de ncredere n resursa respectiv. Acesta se pot prelua din diverse servicii on-line. Nivelul de ncredere favorizeaz o legtur semantic fa de alta. Scopul Semanticii Web este de a oferi un neles, din perspectiva dispozitivelor/aplicaiilor, a datelor publicate. n urma realizrii acestui concept, aplicaiile vor fi capabile s rspund la ntrebrile formulate n limbaj natural. n prezent, W3C susine un efort de promovare i recomandare Semantic Web.
Capitolul 3 Din 1996, cei de la W3C lucreaz spre a propune un generator/editor de site-uri. Acest efort a luat denumirea de Amaya. Scopul acestei aplicaii a fost, de la bun nceput, unirea ctor mai multe standarde W3C sub un singur editor. Legtura studiului bibliografic Generatoare de Site-uri Proiect este una de gen specie. Totalitatea principiilor descrise n acest studiu vor fi aplicate nemijlocit n Proiect.
Service Requester
SOAP
Service Provier
Serviciile Web arbitrare prezint trei actori: Service Brooker, Service Provider i Service Requestor. Fiecare dintre actori comunic unul cu cellalt prin mesaje. Aceste mesaje difer dup tipul de actori, dar toate sunt scrise n limbaj XML. Ian J. Taylor, n lucrearea sa [50], prezint modul de funcionare a arhitecturii Serviciilor Web: Service Broker are un singur scop, publicarea existenei serviciilor. Service Provider descrie funcionalitiile sale Brokerului n formatul WSDL. Service Broker va publica informaiile specifice serviciului n format UDDI, Universal Description, Discovery and Integration, dar interogarea Service Requestor-lui este realizat prin WSDL. 24
Capitolul 3 Service provider este Serviciul Web. El ofer informaii ctre Broker despre funcionalitile sale. Dup tipul de descriere UDDI, aceste informaii conin trei componente[50]: White Pages ofer informaii despre partea de bussines care furnizeaz serviciul Yellow Pages ofer o clasificare a serviciului pe baza taxonomiilor de baz Green Pages sunt folosite la descrierea modului cum se acceseaz serviciul Web Dup ce un Service Requestor s-a hotrt s utilizeze serviciul oferit de Provider, Requestorul va face schimb de mesaje de tip SOAP cu Providerul. Aceste mesaje vor conine informaiile specifice intrrilor/ieirilor serviciului. Mesajul SOAP Simple Object Access Protocol reprezint o modalitate de codificare a obiectelor/variabilelor/intrrilor/ieirilor n formatul XML. Structura sa prezint un Envelope care conine doi copii: Header i Body. SOAP header, opional, este folosit pentru descrierea unor informaii legate de aplicaie, exemplu: informaii legate de calea de transmitere. SOAP body, obligatoriu, conine informaii pentru destinatarul mesajului. SOAP fault, aparine de body, este partea din mesaj destinat erorilor. SOAP este o recomandare W3C din anul 2003. Cealalalt variant a arhitecturii Serviciilor Web este REST. Succesul Representational state transfer (REST), fa de modelele care folosesc SOAP sau WSDL, este datorat simplitii modelului arhitectural. Arhitecturile REST comunic prin resurse stateless. Ele folosesc protocolul HTTP, interfaa mesajelor este constrns n formatul operaiilor standard HTTP (GET,PUT,DELETE, etc.). Spre deosebire de arhitecturile care folosesc SOAP sau WSDL, arhitectura REST nu folosete neaparat formatul WSDL. Aplicaiile care dezvolt servicii web implementate folosind HTTP i principiile REST sunt denumite generic RESTful. Celi de la W3C pe site-ul oficial [51] prezint o list cu caracteristicile unui Web Service: - componente ale unei aplicaii - comunic folosind protocoluri deschise - self-contained, self-describing, independente - se descoper folosind UDDI - pot fi folosite de ctre alte aplicaii - XML este baza Serviciilor Web Serviciile web, arhitectura SOA i variantele de arhitecturi de implementare a serviciilor web sunt recomandri W3C din anul 2003. Necesitatea fundamentrii Web Service Proiect este bazat pe o component descris n capitolul anterior Serviciul Generator Web 3.0.
25
Capitolul 3 Data Hub Activities totalitatea activitiilor din reelele sociale reprezint o platform deschis de informaii; conine totalitatea activitiilor pentru un site Social Network totalitatea reelelor de socializare care permit transmiterea traficului ctre un site Social Source Referral verificarea informaiilor primite dac provin de la o surs de trafic social Social Source & Action aciunile specifice reelei de socializare Social Entity URL-ul mprit pe social media Social Type tipul de site social Aceste informaii trebuie luate n vedere n momentul integrrii unei aplicaii de socializare n Dashboard. n ceea ce privete activitatea oferit de un dashboard, prezentat tot n articolul [52], exist o clasificare n trei tipuri de activiti: activitate off-site, activitate on-site i conversaii/rezultate. Activitatea off-site reprezint setul de funcionaliti disponibile utilizatorului n clipa lipsei de conexiuni cu servicul Web 2.0, mpreun cu funcionalitiile exterioare manipulrii acestor aplicaii. Scopul principal al aplicaiei dashboard este activitatea on-site. Operaiile de creeare/modificare/tergere a coninutului aplicaiilor web 2.0 reprezint funcionalitile on-site. Conversaii/rezultate reprezint acea parte a aplicaiei n care se leag diversele platforme mpreun. Coninutul din o aplicaie 2.0 trebuie s poat fi publicat n interiorul altei aplicaiii 2.0. Necesitatea prezentrii unor elemente teoretice despre social dashboard este folositoare n analiza necesar alegerii aplicaiilor incluse n aplicaia dashboard.
Capitolul 3 nvarea bazat pe reguli caut legturi ntre variabile Clustering se caut grupuri i structuri de informaii. Clasificare metod prin care se aplic structura nvat n seturi noi de date Regresie etapa n care se caut o funcie specific setului de date Sumarizare generarea reprezentrii setului de date n diferite formate cerute de utilizator Ultima etap, de interpretare/evaluare este una de testare final. n funcie de ce s-a generat prin procesul de Data Mining, se vor testa rezultatele pe seturi mari de date. Necesitatea prezentrii unor elemente fundamentale legate de data mining este una de informare. Aplicaia va propune un algoritm de cutare fundamentat n prezentul sub-capitol.
27
Capitolul 4
Capitolul 4.
Capitolele anterioare prezint obiectivele urmarite de proiect, apoi cateva studii care stau la baza dezvoltrii prezentei aplicaii. Prezentul capitol va oferi o analiz a cerinelor funcionale i non-funcionale mpreun cu o descriere a arhitecturii proiectului. Cerinele funcionale i non-funcionale vor fi prezentate la nivelul fiecrei componente a proiectului. Dac este cazul, se vor face meniuni referitoare la conceptul Web care fundamenteaz o cerin. Cerinele vor fi clasificate dup modelul propus de Ian Sommerville n prezentarea [55]. Arhitectura aplicaiei va fi prezentat pe baza celor trei componente descrise anterior, mpreun cu motivul separaiei proiectului n trei aplicaii individuale.
Capitolul 4 portabilitate posibilitatea de a utiliza aplicaia n mai multe medii posibilitatea de executare n cazul unor resurse limitate Aceste cerine se aplic pe ansablul proiectului, urmnd a fi enunate la nivelul fiecrei componente.
Capitolul 4 Fiecare component prezint un set specific de cerine funcionale Componentele sunt dezvoltate/verificare independent Independena componentelor; ele pot fi folosite i de ctre alte aplicaii n cadrul setului de cerine specificate Fiecare din aceste cerine funcionale/non-funcionale vor fi prezentate la nivelul fiecrei componente. Urmtoarea etap n dezvoltarea proiectului este analiza, n detaliu, a componentelor prin prezentarea tuturor cerinelor specifice.
Capitolul 4 permite logare prin surse exterioare; doar deintorul site-ului are posibilitatea de logare editarea coninutului este limitat; coninutul adaugat de ctre proprietarul site-ului se poate modifica doar de ctre proprietar, restul de orice persoan cerine generale legate de paginare n cadrul site-ului:
4.2.1.2 Cerine ne-funcionale: n categoria acestor cerine se vor prezenta cerinele ne-funcionale mpreun cu exemplificarea rolului fiecrui concept. Cerinele vor fi prezentate dup caracterul global sau particular n relaie cu proiectul. Cerine ne-funcionale globale: robustee intrrile se rezum la coninutul adaugat de ctre utilizatorii externi mpreun cu coninutul adugat de ctre proprietar. Erorile sunt verificate la nivelul utilizatorului extern prin filtrarea coninutului; erorile de intrare a proprietarului sunt limitate de ctre operaia de generare accesibilitate aplicaia este accesibil unui numr mare de utilizatori datorit postrii sale pe Internet disponibilitate aplicaia este disponibil att timp ct hostul este disponibil; relativ 99,8%, standard de hosting backup site-ul va conine o copie a sa n formatul trimis ctre generator, accesibil doar proprietarului extensibilitate aplicaia este n continu modificare datorit adugrii de coninut de ctre utilizatori mentenabilitatea uurin n ndeplinirea unor noi sarcini, determinarea unor defecte; se realizeaz datorit partajrii informaiei n pagini Web compatibilitate cu un numr mare de platforme orice browser care implementeaz standardele cerute de cerinele funcionale portabilitate aplicaia se poate folosi de pe orice mediu care suport un browser de internet posibilitatea de executare n cazul unor resurse limitate aplicaia folosete un numr limitat de resurse Cerine ne-funcionale particulare: Certificare acreditarea este realizat de ctre standardul W3C Independena odat generat, site-ul nu va mai folosi celelate componente n buna sa funcionare Mentenabilitatea site-ul este uor de modificat de ctre proprietar fie prin o nou generare, fie prin editare a fiierelor particulare Inter-operabilitate aplicaia nu este legat de celelalte componente dar este interoperabil cu aplicaiile Web 2.0 folosite Scalabilitate parial adevrat n cadrul site-ului, adevrat n cadrul coninutului aduga de ctre exterior, fals legat de coninutul adugat de proprietar; se prezum un nivel redus de cunotiine n programare pagini web a proprietarului, este recomandabil o nou generare n cazul de adugare pagini
31
Capitolul 4 4.2.1.3 Cerine specifice domeniului problemei: Acest tip de cerine sunt legate de caracterul on-line al aplicaiei. Spre deosebire de cerinele prezentate anterior, acestea au la baz factorul uman de eroare sau intenie de modificare a coninutului ntr-un mod abuziv aplicaia ar trebui s prezinte o posibilitate de eliminare a activitii de tip spam site-ul ar trebui s ofere o posibilitate de tergere a coninutului de ctre utilizatorii externi alte cerine care pot face aplicaia s fie folosit n scopuri abuzive
Capitolul 4 backup aplicaia generez site-ul i creeaz o copie de siguran n interiorul acestuia extensibilitate orice modificare efectuat asupra modului de genererare/produsului generat este transparent fat de utilizator mentenabilitatea independena fa de orice alte componente ceeaz posibilitatea unei corectri permanente compatibilitate cu un numr mare de platforme portabilitate componenta trebuie s foloseasc un protocol care s permit un spectru larg de aplicaii care o pot apela posibilitatea de executare n cazul unor resurse limitate Cerine ne-funcionale particulare: Independena fiecare component este independent de cealalalt Documentare aceast component ofer o documentaie asupra intrrilor i ieirilor; standardul de intrare Inter-operabilitate aplicaia trebuie s fie interoperabil cu orice component care o apleaz Scalabilitate aplicaia este gndit pentru un numr mare de utilizatori
Capitolul 4 trebuie s permit introducerea de componente Web 2.0 trebuie s asigure respectarea formatului Semantic Web 3.0 trebuie s respecte conceptul SVG Web 3.0 trebuie s permit adugarea de componente data-driven Cerine sistem: trebuie s ofere opiuni de publicitate a site-urilor trebuie s constrng intrrile la cele acceptate de ctre editor trebuie s permit adugare de componente particularizate trebuie s verifice posibilitatea de conexiune cu Generatorul ar trebui s ofere un mod de vizualizare a coninutului generat de utilizator 4.2.3.2 Cerine ne-funcionale Cadrul cerinelor nefuncionale este analizat pe baza cerinelor specifice ntregului proiect cerine generale, mpreun cu cele specifice componentei Editor cerine particulare. Cerine ne-funcionale generale: robustee componenta joac rolul unui parser al intrrilor oferite de utilizator, eliminnd posibile erori la generare; aplicaia trebuie s fie pregtit de orice greeal de input a utlizatorului accesibilitate aplicaia este accesibil celor care doresc s o foloseasc prin intermediul Internetului; ea nu este obligatorie pentru generare, ci o recomandare disponibilitate editorul este disponibil att on-line ct i offline, generarea standardului Generatorului este realizat i fr ajutorul internetului backup aplicaia poate fi salvat oricnd prin generarea de standard; n caz de eroare se poate readuce n ultima stare salvat extensibilitate fiind separat de Generator, ea poate fi modificat odat cu acesta sau separat prin diverse opiuni de editare suplimentare mentenabilitatea defectele se pot detecta n cadrul aplicaiei la nivelul fiecrei operaii oferite pe baza standardului generat compatibilitate cu un numr mare de platforme portabilitate posibilitatea de a fi folosit pe orice mediu ce suport un browser posibilitatea de executare n cazul unor resurse limitate aplicaia prezint un nivel minim de operaii de creeare/editare Cerine ne-funcionale particulare: Independena scopul componente este generarea de standard specific Generatorului aplicaia funcioneaz fr necesitatea unei alte componente; datorit calitii generatorului de perpetual beta, pstrarea aceluiai standard n cadrul editorului nu va creea probleme n procesul generator. Mentenabilitatea site-ul este uor de modificat de ctre proprietar fie prin o nou generare, fie prin editare a fiierelor particulare Inter-operabilitate aplicaia nu este legat de celelalte componente dar este interoperabil cu aplicaiile Web 2.0 folosite Conformitate aplicaia trebuie s fie conform stadiului existent sau unui stadiu anterior de standard a componentei Generator Extensibilitate componentele se pot modifica fr ca utilizatorul s cunoasc, principiu legat de perpetual beta Web 2.0 34
Capitolul 4 4.2.3.3 Cerine specifice domeniului problemei Acest tip de cerine sunt legate de domeniul editoarelor web. n general, ele sunt legate de intrrile utilizatorului, n special cele de codificare: aplicaia trebuie s ofere un set de funcii care permite adugarea de coninut exterior; acesta ar trebui verificat nainte de trimitere ctre Generator editorul ar trebui s ofere o verificare suplimentar a fiierelor externe introduse n cadrul aplicaiei, este recomandat salvarea fiierelor externe n cadrul aplicaiei, n loc de ncrcarea lor prin link Cerinele prezentate la nivelul fiecrei componente se nasc din asumarea obiectivelor prezentate n cadrul Capitolului 2 a prezentei lucrri. Scopul acestor cerine este de a califica funciile sistemului fr a repeta ceea ce s-a menionat anterior.
Capitolul 4 componente refolosiblie componentele pot fi folosite i de alte aplicaii componentele pot fi reutilizate prin folosirea unei sau mai multor funcionaliti creearea/modificarea aplicaiilor prin utilizarea componentelor cere mai puin timp pentru dezvoltare datorit funcionalitiilor cuprinse n interiorul componentei i a interesului lor comun, noua funcionalitate este catalogat n apartenena unei componente; n dezvoltarea noii funcionaliti, aceasta poate apela funcii care prezint un interes comun din intermediul componentei efectul imediat este creterea productivitii timpul de dezvoltare este redus spre deosebire de dezvultarea iterativ, Avantajele specifice proiectului: aplicarea unor concepte cerute n cadrul obeictivelor/cerinelor proiectului exemplu: lightweight programming format folosind arhitectura bazat pe componente este recomnadarea oferit pentru arhitectura aplicaiilor Web 2.0 separarea n componente poate fi exins la separare n aplicaii Dezavantaje generale ale arhitecturii: sensibilitatea la schimbri componentele trebuie gndite n aa fel nct s fie pregtite pentru schimbri control redus asupra strii sistemului dei nu este valabil n cazul proiectului, n cazul n care sistemul, n ansamblul su, pstreaz diferite stri, este foarte greu de creeat o logic de pstrare/ncrcare a strii
Genereaz Site
Capitolul 4 Pe lang scenariul general propus, fiecare aplicaie prezint un scenariu particular format din intrri/ieiri specifice fiecrei funcionaliti. Ele trebuie prezentate i calificate n implementarea arhitecturii. Figura 4.2 prezint funcionalitiile aplicaiiei privite la nivel global.
Editor
creeare pagina/pagini desenare pagina/pagini desenare componente: o text o imagini o exterioare definire elemente semantice generare XML afiare pagini generate salvare arhiva zip pe maina local
Serviciu web
afiez informaii serviciu genereaz site web: o HTML text imagine CSS Semantic Web o PHP Pagini speciale facebook twitter
Genereaz
pagini HTML o text/imagini o Semantic Web pagini PHP o facebook/twitter o pagini speciale imagini standard XML
Capitolul 5
Capitolul 5.
Fiecare implementare prezentat conine soluia unei funcionaliti, motivarea soluiei mpreun cu descrierea tehnologiei folosite. Suplimentar, se precizeaz, dac este cazul, modul n care implementarea afecteaz arhitectura proiectului. Prezentarea implementrii ncepe cu nivelul global, adic maparea arhitecturii cu tehnologiile invocate, urmat de prezentarea implementrii fiecrei componente.
Trimite XML
Site Web HTML/php Figura 5.1 Schema general a aplicaiei; procesul tipic de generare Intrarea de la utilizator const n editarea unor elemente HTML n cadrul aplicaiei editor. Utilizatorul adaug coninut elementelor stabilite de editor, urmnd ca aplicaia s verifice coninutul generat. La sfritul procesului creator, editorul proceseaz intrrile utilizatorului i formeaz fiierul de tipul XML specific intrrii Serviciului de generare. Componenta Editor apeleaz, prin aritectura de tipul Web Service, Generatorul. Acesta primete fiierul i transform intrarea n Site-ul Web 3.0. Produsul final este arhivat i ntors ctre utilizator spre vizualizare. Utilizatorul are de ales ntre vizualizarea coninutului generat n interiorul Editorului sau preluarea coninutului spre testare particular. Schema prezentat n figura 5.1 prezint modulul general de funcionare.
Capitolul 5 astfel operaiile efectuate nu conteaz. Totui, pentru a respecta conceptul Web X.0, informaiile legate de procesul de generare sunt oferite la cerere. Astfel, componenta Editor i pstreaz calitatea de aplicaie de tipul Front End, operaiile Back End sunt predate spre componenta Generator. O alt observaie leagt de Editor, identific trei tipuri de funcionaliti: operaii folosite n modelarea Site-ului; operaii de vizualizare; operaii de comunicare Generator/Editor Aceast observaie se dovedete a fi util n implementarea aplicaei. Fiecre set de operaii se dezvolt individual, economisind timp de dezvoltare. Editorul urmeaz s fie partajat n dou aplicaii interdependente, n funcie de setul de operaii realizat. Aplicaia Flash se ocup de ntaia parte a procesului creator, modelarea Site-ului. Ea ofer un set de operaii de adugare/editare coninut Web, asemntor unui mediu CAD. A doua aplicaie, JSP, se ocup de ultima parte a procesului creator verificarea produsului generat. Tot a doua aplicaie va conine logica de comunicare datorit legturii intime cu procesul de verificare.
Capitolul 5 Structura mediului de dezvoltare conine trei entiti principale. Prima entitate se numete scen i permite creearea unor elemente vizuale. Aici se pot adauga/defini elemente text, video, imagini prin operaii de tipul drag and drop sau desenare. Aceast parte nu necesit cunoaterea vreunui limbaj de programare, Flash joac rolul unei aplicaii de editare de imagini. A doua component se numete Timeline i permite animarea scenei create n entitatea anterioar. Bazat pe frame-uri, Flash se aseamn unui editor video care red un numr de imagini pe secunda (fps). Ultima component se intituleaz aciuni. n aceast entitate se definesc elementele desenate n scene, mpreun cu comportamentul acestora, folosind limbajul de programare ActionScript. Cele trei entiti sunt legate ntre ele, existnd posibilitatea creeri unor operaii complexe, prin manipularea evenimentelor/componentelor n diferite frame-uri/scene. Selecia platformei Flash pentru dezvoltarea aplicaiei Editor se motiveaz pe avantajele oferite n dezvoltrea unei aplicaii de tipul CAD, mpreun cu cteva avantaje generale ale platformei. Aceste motive vor fi prezentate mpreun cu conceptul/cerina care o respect: dezvoltarea unei aplicaii bogate web conceptul Web 2.0 o procesarea elementelor vizuale (butoane, imagini, text, etc) o definirea unor funcii bazate pe interactivitate o ncrcare/salvare fiiere aplicaii SVG Web 3.0; aplicaia Flash Player, folosit n redarea coninutului Flash, este gratuit i se gsete oricnd, pentru instalare, pe site-ul oficial accesibilitate; formatul flash poate fi accesat att prin intermediul unui browser, cat i stand alone disponibilitate; compatibilitate cu un numr mare de platforme; portabilitate, aplicaiile flash ruleaz pe mai multe medii concept Web 2.0; posibilitatea de executare n cazul unor resurse limitate Flash Lite Player ofer posibilitatea creearii unor operaii complexe n funcie de evenimente diferite; permite adugare de diferite standarde specifice formatului HTML; exemplu: imagini, video, sunet, etc; ofer posibilitatea dezvoltrii unui mediu mai usor de folosit useability; 5.2.1.2 ablon de proiectare Problema implementrii componentei Flash este realizat folosind design-pattern-ul Model-View-Controler. Aceast descriere permite separarea operaiilor specifice elementelor vizuale de operaiile de procesare. Patternul MVC conine trei componente: Model descrie operaiile efectuate prin interactionarea cu elementul visual, reine starea aplicaiei; View descrie elementele vizuale, poziia lor, contextul, etc; Controlor interpreteaz intrrile oferite n componenta View i notific Modelul ce operaii s execute; Controlorul trimite intrrile ctre Model spre procesare. Acest design patern prezint o serie de avantaje: claritate n design: separarea operaiilor dup scopul lor; eficien prin modularizare: permite modificarea/adaugarea/stergerea componentelor cu uurint; multitudine de componente vizuale; uurina de manipulare a componentelor vizuale; 40
Capitolul 5 uurina n adugarea de funcionaliti noi; O abordare simplist a modului de funcionare a Patternului MVC este oferit n figura 5.2. Modelul este nucleul aplicaiei. Cand exist schimbri n Model, se notific View. Controlerul reprezint modalitatea de interaciune cu Modelul a utilizatorului. View afieaz informaiile oferite de Model. User vede utilizeaz
View
Controler
update Model
manipuleaz
Figura 5.2 Prezentarea paternului MVC Acest pattern a fost ales datorit avantajelor care le prezint la dezvoltarea implementrii ct i datorit tipicitii aplicaiei (de tipul CAD). 5.2.1.3 Elemente generale ale implementrii nainte de prezentarea implementrii componentelor paternului, se va prezenta modul de organizare a codului n interiorul aplicaiei. Scena este mprit pe nivele denumite layer. Acestea sunt poziionate asemntor paginilor ntr-o carte, una deasupra celeilalte. Nivelele pot fi grupate n directoare (folders). Codul fiecrei componente este separat n mai multe nivele, dar toate sunt adugate n cadrul aceluiai folder. Astfel Folderul View conine mai multe layere, specifice fiecrui caz de vizualizare, modelul va conine mai multe layere specifice anumitor operaii, etc. Denumirea acestor layere va cuprinde tipul de component a paternului urmat de o denumire generic a operaiilor/intei. Exemplu: ModelImage layer care aparine de model i inta operaiilor sunt cele de prelucrare imagine. Aplicaia ruleaz ntr-un singur cadru (frame), astfel fiecare layer va conine pe respectivul frame o seciune de cod ActionScript. Un alt element general al implementrii reprezint modul de reprezentare a coninutului Site-ului generat n interiorul Modelului. Se vor folosi clasele ActionScript descrise n tabelul 5.1. Toate pre-condiiile i post-condiiile sunt menionate n prezentul capitol, impreuna cu operaia pe care o valideaz, dar sunt prezentate n capitolul dedicat testrii/validrii. Implem Nume clas Extinde Atribute Metode eteaz
-id* : int -titlu* : String -scop : String -componente : Array +w : int +h : int +constructor +setter/getter +addComponenta +deleteCompone nta
Pagina
MovieClip
41
Extinde
Pagina
Implem eteaz
-
Atribute
-x : int -y : int -relatiePagina : String -nume* : String -h : int -w : int -continut:TextField -relevanta : String -text : String -font : String -marime : String -align : String -hyperlinks : Array -relevanta : String -alt : String -lnk : String -src : String -loader : Loader -imageData : ByteArray -continut : TextField -continut : TextField -linkTo : String -continut : TextField -continut : TextField -continut : TextField -beginInt :int -endInt : int -link : String -descriere : String
Metode
+constructor +constructor +setter/getter +clone +consturctor +setter/getter +addHyperLink +removeHyperLi nk +clone
ComponentaPagina
Clonable
ComponentaText
Componenta Pagina
Clonable
ComponentaImage
Componenta Pagina
Clonable
+constructor +setter/getter +clone +constructor +setter/getter +clone +constructor +setter/getter +clone +constructor +setter/getter +clone +constructor +setter/getter +clone +constructor +setter/getter +clone +consturctor +setter/getter
ComponentaExternaFB
Componenta Pagina
ComponentaExternaOth Componenta er Pagina ComponentaFBHistoryI nput ComponentaFBInput ComponentaFBPicture Componenta Pagina Componenta Pagina Componenta Pagina -
HyperLinkPage
Tabelul 5.1: Clasele utilizate n dezvoltarea aplicaiei Dup cum se observ din citirea tabelului, fiecare clas deine un constructor, settere/gettere (mutatori) i operaia de clonare. Constructorul fiecrei clase primete parametrii atributele definite de clas. Metoda de clonare nu are pre-condiie; post-condiia este fcut prin verificarea egalitii ntre obiecte. ActionScript3.0 nu cunoate interfaa de clonare, astfel aceasta trebuie definit, apoi fiecare clas trebuie s prezinte o implementare a acestuia. 42
Capitolul 5 Mutatori sunt folosii n setarea/ntoarcerea valorii unei variabile private. Pre-condiiile i post-condiiile sunt tipice unor mutatori. Clasa principal a aplicaiei este cea de tipul Pagina. Ea corespunde unei pagini generate. Atributele acestei clase se rezum la un numr de identificare id; denumirea paginii titlu; relevana fa de coninutul site-ului, semantic Web scop; elementele html/facebook/twitter componente; nalime h; lungime w; atribute primite de la superclasa: x,y : pozitia fa de colul stnga al aplicaiei Operaiile de adaugare/deleteComponenta adaug sau terg o component din atributul de tipul Array, primesc un singur paramentru de tipul ComponentaPagina. Pre-condiia adaugrii este validitatea elementului adugat: prin existena acestuia (diferit de null), s nu existe n componente i s fie de tipul corespunztor. Post-condiia adugrii se rezum la o verificare dac elementul a fost adaugat corect. Pre-condiia tergerii: existena elementului n list, s nu fie null, post-condiia tergerii const n verificarea array-ului dup tergere. Aceeai condiii se aplic i n cadrul operaiilor de add/removeHyperLink ale clasei ComponentaText. Clasa ComponentaExterioara definete o componenta de tipul facebook sau twitter. Ea este tratat n mod asemntor unei pagini datorit condiiilor speciale de editre ale acestei componente. Ele se comporta ca pagini la nivel vizual, dar rezultatul lor este refolosit sub forma de ComponentPagina. Motivarea acestui fapt este fcut dup prezentarea elementelor vizuale. Clasa ComponentaPagina reprezint elementul HTML/facebook/twitter. Atributele acestei clase sunt generale oricrui tip de componente. Metodele sunt creeate n mod asemntor cu cele prezentate mai sus. Clasele ComponentaText, ComponentaImage, CoponentaExternaFB, ComponentaExternaOther extind clasa ComponentaPagina i reprezint particularizarea clasei ComponentaPagina. Fiecare din aceste sub-clase conin parametrii specifici elementului care l reprezint, iar toate sunt vazute de ctre Pagina ca fiind ComponentePagina - polimorfism. Ultimul set de clase reprezint clasele care pot fi adugate doar n contextul unei ComponenteExterioara. Clasele ComponentaFBHistoryInput, ComponentaFBInput, ComponentaFBPicture, definesc elemente ale unei componente FB. Ele vor fi adaogate dac utilizatorul dorete acest lucru.
43
Capitolul 5
Pagina Componenta Exterioara
ComponentaPagina
Componenta Image
Componenta Text
Componenta ExternaFB
ComponentaExterna Other
HyperLinkPage
ComponentaFB Input
ComponentaFB HistoryInput
ComponentaFB Input
Figura 5.3 Diagrama de clase Clasa HyperLinkPage conine informaii referitoare la un hyperlink in interiorul unei componente text. El pstreaz informaii legate de poziia de nceput i sfrit a linkului impreun cu pagina ctre care se face linkul. n cazul n care se face link ctre o pagin n interiorul siteului, linkul va conine un prefix : SITE: mpreun cu denumirea paginii. O informaie suplimentar oferit de tabelul 5.1 este unicitatea anumitor parametrii n diferite colecii n care poate s apar. Fiecare atribut care trebuie s fie unic i este ataat simbolul *. 5.2.1.4 View Componenta View reprezint elementul vizual al aplicaiei. Aici sunt definite totalitatea elementelor care urmeaz a fi afiate. Aceste elemente primesc, dac este cazul, o referin spre operaiile, din Controler, apelate n cazul anumitor evenimente. Un eveniment const ntr-o aciune efectuat asupra unui element vizual, de ctre utilizator. Aciunile se rezum la operaii provenite fie de la tastatur fie de la mouse. Exemplu 5.1: componentaView.addEventListener(event,funcieControler) n exemplul 5.1, se arat modul de atribuire a unei funcii Controler: funcieControler la elementul view: componentaView, n cazul evenimentului event. Acest exemplu este scris n limbajul ActionScript3.0. 5.2.1.4.1 Elementele Vizuale Tipurile de elementele vizuale ale Aplicaiei Flash: a. forme geometrice b. desen fundal 44
Capitolul 5 c. text label/input d. butoane e. liste f. comboBox g. Loader Toate elementele prezentate sunt adugate n scena aplicaiei. Flash descrie scena sub forma unei implementri a clasei MovieClip, denumit stage. n interiorul acestuia se pot aduga variante ale clasei DisplayObject. Toate elementele enumerate mai sus extind clasa DiplayObject, dar nu direct. Flash conine o ierarhie de clase specializate pentru fiecare form vizual care se poate defini n spaiul tridimensional. Adugarea unui element se realizeaz folosind operaia addChild(DisplayObject). n cazul n care se dorete adugarea unui elemend la o anumit adncime, se utilizeaz operaia addChildAt(DisplayObject, depth). Eliminarea unui element de pe scen se realizeaz folosind operaia removeChild(DisplayObject). Exist o alt metod de ascundere a elementelor aflate pe scen. Fiecare obiect de tipul DisplayObject conine atributul visible. n cazul n care nu se dorete eliminarea obiectului de pe scen, dar se dorete ascunderea lui, se seteaz parametrul visible de tipul false. n cazul n care visible estre true, se afieaz elementul. Descrierea elementelor viuzale folosite de Aplicaia Flash: a. Formele geometrice conin majoritatea figurilor geometrice elementare. Ele sunt definite n pachetul flash.display, oferind o serie de operaii de desenare i adaugare n scen. Ele sunt folosite la desenarea de coninut dinamic prin intermediul ActionScript3.0. n cadrul implementrii, ele sunt folosite n operaiile de generare de coninut. Forma geometric desenat joac rolul unei umbre temporare a viitoarei componente. Exemplu: n clipa n care se cere adugarea uni element text, sistemul ateapt poziionarea i desenarea respectivului element. Pn n momentul finalizrii desenului, se va afia o form dreptunghiular, apoi se va afia elementul Text. Metodele apelate pentru generarea formelor geometrice n limbajul ActionScript sunt n formatul drawX(), unde x este denumirea formei n limba englez. Parametrii difer de la figur la figur. Obiectele generate sunt adugate ntr-un container de tipul Shape. Acest container permite poziionarea, redimensionarea ct i definirea unui comportament n cazul evenimentelor. b. Elementul Desen Fundal reprezint fundalul static al aplicaiei. Acesta nu se modific pe parcursul rulrii aplicaiei. Fie c el face parte din scena principal, fie din butoane, acest component are un scop pur vizual i nu funcional. c. Text label reprezint un element text care nu poate fi modificat. Acestea sunt adugate n scen pentru a oferi informaie ctre utilizator. Elementele label, n limbajul ActionScript 3.0, sunt de tipul TextField. Operaiile asupra acestor elemente sunt cele generale ale unui TextField. Text input reprezint un element text a crui coninut se poate modifica. Scopul acestor elemente este de a prelua informaii de utilizator in format text. n limbajul ActionScript 3.0, aceste elemente sunt de tipul TextField. Operaiile principale, oferite de ctre limbajul ActionScript3.0, asupra unui TextField sunt: 45
Capitolul 5 poziionare TextField, prin setarea atributelor publice: +x, +y, +width, +height; valori ntregi modificare text prin setarea atributului public +text; setare de format text: se folosete o clas TextFormat care primete atribute legate de mrime, font, align, etc. Operaia de atribuire TextFormat implic mai multe etape Pe lang cazurile expuse mai sus, elementul Text input/label se mai folosete i n cazul definirii unui element al site-ului. Aceste operaii sunt acoperite n domeniul Modelului. d. Butoanele reprezint o particularizare a clasei MovieClip. Clasa SimpleButton definete trei frame-uri, fiecare avnd un scop specific n raport cu evenimentele realizate cu mouse-ul. Frame-ul Up reprezint comportamentul aplicaiei n cazul n care nu exist contact cu mouse-ul. Over reprezint frame-ul care este activat n momentul n care mouse-ul este deasupra butonului. Down reprezint frame-ul activat n momentul n care se face click. Din punct de vedere al evenimentelor pe care le poate interpreta un buton, cele mai importatne sunt MouseDown eveniment definit de momentul de apsare a butonului stanga a mouse-ului, MouseMove eveniment definit de micarea mouse-ului in scena deasupra butonului, MuseUp eveniment definit de momentul n care se las butonul stanga al mouse-ului, MouseClick eveniment definit de momentul n care s-a efectuat o operaie de click. Fiecare buton deine o serie de parametrii de poziionare : +x:int, +y:int ct i parametrii care ofer lungimea/limea butonului, +width/+height. Implementarea comportamentului de buton este realizat n Controler n mai multe operaii. e. Listele sunt elemente predefinite care afieaz o serie de opiuni, urmnd ca utilizatorul s selecteze una. Lista este o extensie a clasei DislayObject, astfel nct poate fi adugat n scen, conine atribute folosite n poziionare i permite adugarea de comportament n cazul evenimentelor. Citirea elementului unei liste se realizeaz folosind operaia getSelectedLabel(). Aceasta ntoarce indexul elementului selectat, urmnd ca denumirea elementului selectat din list s fie returnat de operaia getLabelAt(index). f. ComboBox sunt asemntoare listelor, singura diferen const n modul de afiare a coninutului. n cadrul elementelor ComboBox, se afieaz doar elementul selectat. Dac se dorete modificarea elementului, se va face click pe sgeata din partea stng. Elementul ComboBox va afia opiunile posibile, apoi utilizatorul alege opiunea dorit. Implementarea acestui element se face n mod asemntor cu elementul List. g. Loader element grafic care poate conine orice imagine sub form de bitmap. Este folosit n diverse cazuri care cer afiarea de figuri geometrice sau imagini. Elementul loader prezint o serie de metode de adugare de coninut, exemplu adugare de imagine: loadByteArray(), load() , etc. 5.2.1.4.2 Tipuri de componente Aplicaia Flash conine dou tipuri de componente View. Clasificarea este realizat dup criteriul importanei elementelor n dezvoltarea site-urilor. Cele dou tipuri sunt: componente care sunt pstrate vizibile fie permanent, fie o perioad ndelungat; denumite generic : elemente vizuale permanente 46
Capitolul 5 componente care sunt folosite doar n cazul unui anumit eveniment; elemente vizuale temporare
I. Elementele vizuale permanente sunt desenate la nceputul dezvoltrii aplicaiei. Ele sunt vizibile pe parcursul dezvoltrii aplicaiei, astfel, legtura dintre componenta view i model, n cazul acestor elemente, este una minim. Acestea nu sunt generate n limbajul ActionScript. Singura caracteristic descris n limbajul ActionScript a acestor elemente const n operaia de atribuire a unui comportament n cazul unui eveniment. Elementele vizuale permanente ale Componenta Editor prezint dou stri: adugare componenta text/imaginie i adugare componenta FB. Figura 5.4 prezint elementele vizuale permanente specifice strii de adugare elemente imagine/text. Comportamentul acestor elemente este descris n Tabelul 5.2 Figura 5.5 descrie elementele vizuale n cazul adugrii unei componente FB, iar Tabelul 5.3 este o continuare a Tabelului 5.2.
Meniu Hyperlink
Figura 5.4 Componenta Editor n cazul de utilizare adugare text Lista elementelor vizuale permanente i comportamentul lor:
Denumire Element Elemente Text Image Pagina Generate Load Text Options Font FontComboBox Size Tip Label Buton Buton Buton Buton Buton Label Label ComboBox Label Comportament Adaug un TextField in site Adaug o imagine in Site Creeaz o pagin nou Genereaz XML unde dorete utilizatorul ncarc XML exterior Permite alegerea unui tip de font -
47
Capitolul 5
SizeText Align AlignLeft AlignRight AlignCenter AlignJustified Color Bold Italic Underline Hyperlink Tab Pagina 1..6 - X Site Map Index* Descriere Legatura Descriere Legatura Hyperlink Hyperlink Create Create Custom FB Component Create Other Component Add Fb Component Input Label Buton Buton Buton Buton ColorPicker Buton Buton Buton Buton Label Buton Buton Buton Label Input Label Input Buton Buton Buton Buton Valoarea introdus reprezint mrimea fontului textului Seteaz align la text Seteaz align la text Seteaz align la text Seteaz align la text Seteaz culoarea Selecia din text devine boldata Selecia din text devine inclinat Selecia din text devine subliniat Seteaz selecia ca fiind hyperlink Afieaz paginile nr x*7-(x+1)*7 Afieaz meniu Site Map Afieaz pagina Index pe scen Descrie legtura ntr-un mod semantic Conine site-ul ctre care se face link Adauga un hyperlink n zona selectat ctre Hyperlink Input Creeaz o nou component FB Creeaz o nou component Other Adaug o component fb definit
Elemente Componenta FB
Scena Componenta FB
FBPicture Buton Adugare componenta imagine utilizator FB FB Input Text Buton Adugare componenta input utilizator FB FB History Input Buton Adugare componenta istoric utilizatori FB Tabel 5.3 Comportamentul elementelor vizuale permanente 48
Capitolul 5 Implementarea componentelor vizuale premanente se rezum la desenarea fiecrei componente n parte, apoi atribuirea unui comportament fiecrui element vizual . II. Elementele vizuale temporare sunt creeate folosind metode de generare a componentelor vizuale. Ele au un caracter temporar, dar nu sunt eliminate din scen. Acest abordare este motivat de caracterul repetitiv al operaiilor asociate cu elementele temporare. Iniializarea elementelor vizuale temporare este realizat n componenta View. Ele sunt generate de ctre Model folosind metodele GenerezaX, unde X este tipul de component care urmeaz s fie generat. Logica de generare este cuprins n Model. Modelul general de creeare a unei componente: Var componenta: TipComponenta = GenerateTipComponenta(parametrii). Lisa de elemente vizuale temporare este pstrat n Anex. 5.2.1.5 Controlorul (Controller) Controlorul verific informaiile trimise de ctre utilizator, iar dac acestea sunt corecte, apeleaz modelul spre modificarea strii de view i efectuarea operaiilor. n cazul unei intrri formate greit, controlerul trimite spre afiarea erorii ntampinate. Fiecare operaie de verificare conine o descriere a tuturor verificrilor care se cer nainte de apelarea Modelului mpreun cu funciile apelate, sursa din View care apeleaz la acest comportament mpreun cu, dac este cazul, particulariti ale implementrii. OpC1: Afiarea erorilor. Pe parcursul prezentrii tuturor operaiilor se vor descrie cazurile n care se trimite ctre model o execuie i cazurile n care se trimite ctre Model afiarea unei erori. La notificarea modelului, el va dispune afiarea dialogului specific erorii, mpreun cu un buton OK pentru ntoarcere la pagina anterioar. Dialogul specific errori va afia Erroare: TextEroare, unde TextEroare este un Label care notific utilizatorul ceea ce a completat greit. Acest text este generat de ctre Model n funcie de tipul erorii notificate de ctre controler prin apelarea metodei doErrorNo. Aceasta funcie specific i comportamentul butonului OK. Aceast comportament mpreun cu detalii suplimentare legate de operaiile Modelului sunt parcurse n operaia OpM17. OpC2:Verificarea operaiei de adugare pagin. La efectuarea unui click pe butonul Pagin, controlorul trimite ctre model operaia de curare scena: clearStage(); apoi se iniializeaz procedura de creeare a unei noi pagini showNewPageDialog(). Se va deschide un dialog care va cere introducerea unor informaii legate de noua pagin care urmeaz creat. La efectuarea unui click pe butonul OK se va verifica dac informaiile sunt introduse corect, apoi se vor trimite ctre model parametrii folosii n creearea unei noi pagini, mpreun cu operaia de setFocusOnNewPage(), care afieaz elementele ultimei pagini create. Observaie: mai exist o metod care afieaz o pagin specific, ea se numete setFocusOnPage(pagina), care afieaz o pagin specific. n cazul n care exist intrri care nu sunt completate corect se va apela modelul prin doErrorNo(1,MesajEroare), unde 1 reprezint codul erorii i Mesaj Eroare reprezint ytextul care urmeaz s fie afiat. Dac se efectueaz click pe butonul Cancel, se va trimite ctre model operaia de redesenare a scenei: redrawStage(). Implementarea acestei componente se realizeaz prin verificarea urmtoarelor cerine: Campul Denumire s fie completat cu o valoare unica; nu pot exista dou pagini cu aceeai denumire 49
Capitolul 5 Campul Relevan s fie completat cu o valoare diferit de irul gol OpC3: Verificarea operaiei de desenare. Aceast operaie apare n cadrul oricrei adugri de elemente n pagin. Dup nceperea operaiei, se ateapt efectuarea unui click de ctre utilizator n interiorul scenei. n cazul n care se efectueaz click n afara scenei nu se ntpl nimic. Mrimea scenei variaz n funcie de pagina pe care se deseneaz. n cazul n care se vorbete despre o component exterioar, exemplu Facebook, Twitter, etc, mrimea scenei este definit de ctre poziia x,y, lungime, lime a paginii. Cordonatele paginii sunt preluate din model: getCurentPageZ(), unde Z este coordonata cerut. n cazul n care se vorbete despre o pagin normal, parametrii paginii sunt prestabilii. Dac click-ul este realizat n scen i butonul stnga a mouse-ului este apsat, se trimite ctre model deseneazaComponentaTemporara(). Cnd butonul stnga a mouse-ului este lsat, se va desena componenta cerut de ctre utilizator. Componenta temporar principal este un dreptunghi de culoare 0x999999. n cazul adugrii unei imagini, componenta temporara desenat este imaginea care urmeaz a fi introdus. n cazul n care coordonatele mouse-ului ies din scen, se procedeaz la setarea parametriilor n limita scenei. Implementarea acestei verificri se realizeaz folosind o serie de instruciuni IF care verific dac a fost depit scena. Exemplu:
if (x<minScena) x = minScena; if (x>maxScena) x = maxScena:
Limitele elementelor adugate n scen: Pagina normala: o X [220,920]; o Y [80,605]; Component exterioar: o X [getCurentPageX() , getCurentPageX()+getCurentPageW()]; o Y [getCurentPageY() , getCurentPageY()+ getCurentPageH()]; OpC4: Verificarea operaiei de adugare component text. Componenta text este adugat n dou etape. Prima etap ncepe n momentul efecturii operaiei de click pe butonul Text. Acum se ateapt operaia de desenare a componentei text. Controlorul asigur desenarea textului pe scen prin operaia OpC3. Dup desenarea elementului text, se trimite ctre model afiarea dialogului pentru noua component. Acum se ateapt introducerea unor informaii legate de noua component creeat. La efectuarea unui click pe butonul OK, controlorul va verifica dac informaiile sunt introduse corect, dac nu va afia o eroare, codul erorii este 3. n cazul n care informaiile sunt afiate corect se va trimite ctre model operaia de adugareComponentaText mpreun cu parametrii citii de la utilizator. Verificrile realizate de controler: Controlerul verific poziia mouse-ului, dac n momentul nceperii desenrii componentei, Unicitatea campului denumire Valoarea campului relevan s fie diferit de valoarea nul.
50
Capitolul 5 OpC5: Verificarea operaiei de adugare component imagine. Spre deosebire de componenta anterioar, la efectaurea operaiei de click pe butonul Image, se va cere destinaia imaginii, mpreun cu cteva informaii legate de imagine. Dup efectuarea unui click pe butonul OK se va verifica dac informaiile introduse sunt corecte, apoi se va trimite ctre model instruciunea de nceput de operaie de desenare. n cazul n care o informaie este introdus greit se va afia eroarea numrul 4. La sfritul operaiei de desenare, se va aduga componenta cerut prin notificarea modelului prin metoda adaugaComponentaImagine. Urmtorul pas este redesenarea scenei redrawStage(). OpC6: Verificarea operaiei de creeare component facebook. Elementele facebook i twitter sunt Componente Exterioare. Ele urmeaz s fie adugate n interiorul unei pagini, n structura definit de ctre utilizator. Dar nainte de adugare, ele trebuie s fie definite. Operaia de definire ncepe prin desenarea mrimii componentei. Dup desenare, scena este limitat la zona desenat anterior. Se va afia un dialog care va cere introducerea unei denumiri. Dac denumirea este unic, controlorul va dispune, ctre Model, de creearea unei pagini component facebook denumit FB_X, unde X este denumirea introdus. Controlorul va notifica Modelul de existena unei scene a unei pagini Component Exterioar. Aceeai implementare este folosit i n cazul operaiei de creeare component twitter(OpC7), dar este rescris specific acestei componente. OpC8: Verificarea operaiei de adugare component facebook. Componenta facebook poate fi desenat doar n interiorul unei pagini, astfel dup efecturea unui click pe butonul Add FB Component, se va verifica dac se afl pe o pagin normal. Aceast operaie este realizat de metoda verifyOnPage(). n cazul n care ntoarce true, se va proceda la afiarea dialogului de adugare, altfel nu se va executa nimic. Controlorul poate primi de la model, n orice moment, instana paginii care este afiat pe scen folosind operaia getCurrentPage() a Modelului. Controlorul verific dac acest obiect este de tipul Component Exterioar, n caz afirmativ raspunsul este false, altfel True. Aceast abordare pare ciudat, dar ComponentaExterioar extinde Pagin, astfel, verificarea dac obiectul este de tipul Pagin este inutil, Flash poate recunoate ComponentExterioar ca fiind de tipul Pagin. O alt verificare efectuat de ctre Controlor este unicitatea unui tip de component pe pagin. O pagin poate conine o singur component facebook. Dialogul afiat va prezenta, ntr-o list, toate componentele disponibile. Utilizatorul alege componenta, apoi, dup efectuarea unui click pe butonul OK, va desena zona care s conin componenta. Aceast o a doua desenare se dovedete a fi util datorit posibilitii de reutilizare a componentei n diferite contexte. Dup operaia de desenare, se trimite ctre model addComponentaFacebook, mpreun cu parametrii generai pn acum. n cazul verificrii operaiei de adugare component twitter, se procedeaz la o implementare asemntoare, doar clasele instaniate difer. (OpC9). OpC9: Verificarea adugrii componentelor FBInput, FBHistory, FBPicture, TWInput, TWHistory, TWPicture. Toate verificrile efectuate asupra acestor componente sunt realizate n acelai mod cu adugarea unei componente text, singurul lucru care difer ntre componente sunt clasele instaniate i coninutul TextField-ului care le reprezint. OpC10: Verificarea operaiei de adugare component other. n momentul efecturii unui click pe Add Componenta Other se va apela metoda showAddOtherDialog(). Aceast metod va afia dialogul de creeare a unei alte componente, dect cele descrise pn acum. n cadrul acestui dialog, se va introduce codul care urmeaz s fie adugat direct n pagin. 51
Capitolul 5 Dup efectuarea unui click pe butonul OK, se va desena locul ocupat de ctre component n pagin. La sfritul desenului se va trimite ctre model addComponentOther mpreun cu parametrii cerui de aceast metod. n cazul acestui dialog, se poate impune o verificare a coninutului nscris. OpC11: Verificarea operaiei de stergere pagina. n momentul n care se dorete o tergere de pagin, se efectueaz operaia de click dreapta n aplicaie. Se va afia meniul Flash mpreun cu dou opiuni: Modific/Sterge Pagin sau Modific/Sterge Component. n cazul seleciei Modific/Sterge Pagin, se va trimite ctre model showModificaStergePagina(). Se va afisa un dialog care va conine dou liste: Prima list conine operaia aleas, a doua list va conine paginile asupra croroa se executa operaia. Dup alegerea operaiei/ paginii, se verific i celelalte intrri i n cazul unei erori se afieaz eroarea cu codul 2, dac nu se vor efectua intruciunile descrise prin notificarea modelului a alegerii fcute. OpC12: Verificarea operaiei de stergere componenta. Se realizeaz n mod asemntor cu OpC11, difer doar condiiile descrise de input-ul disponibil acestui tip de operaie. Codul de eroare este 6. OpC13: Verificarea operaiei specifice butonului Site Map. La efectuarea unui click pe butonul Site-map, se vor afia dou componente. Prima component prezint link-urile descrise n o pagin aleas de ctre utilizator. De aici ele pot fi terse, la nevoie. Pagina aleas va fi prezentat ntr-o list n partea stng a componentei, linkurile disponibile n partea dreapt. Toate aceste informaii sunt afiate prin apelarea funciei showSiteMap() a Modelului. A doua component a dialogului ofer posibilitatea setrii unei publicitii a paginilor creeate. Dac o pagin este public, ea poate fi afiat oricnd. Dac o pagin este privat, ea este disponibil doar administratorului, iar dac este setat ca fiind logat, coninutul poate fi vizionat doar de ctre utilizatorilor logai pe o reea de socializare. Dac aceast opiune este activat, toate paginile sunt de tipul php. Operaia de setare a publicitii este realizat n model folosind operaia setAccesPage(). Aceast metod primete ca parametrii numele paginii i opiunea aleas. OpC14: Verificarea operaiei de setare a textului. n cadrul acestei operaii sunt introduse toate funciile care verific orice opiuni legate de particularizarea elementelor text. Aceste verificri sunt realizate prin citirea poziiei de nceput i sfrit a selecie textului, apoi notificarea Modelului a schimbrilor realizate. Ele sunt descrise n Tabelul 5.4. Denumire Buton B I U AlignCenter AlignLeft AlignRight AlignCenter ColorPicker Atribut al textului Bold Italic Underline Align:center Align:left Align:right Align:center Color Metoda apelat Model setBold(start, end) setItalic(start, end) setUnderline(start, end) setAlign(center) setAlign(left) setAlign(right) setAlign(center) setColor(color,begin,end) Informaii suplimentare Align influeeaz tot textul Align influeeaz tot textul Align influeeaz tot textul Align influeeaz tot textul 52
Capitolul 5 Create Hyperlink setHyperlink(linkTo,begin,end) Tabelul 5.4 Elementele componentei Text Seteaz un hyperlink
n cazul elementelor hyperlink, dup ce sunt adugate, controlorul asigur existena hyperlinkului, pn n clipa n care tot textul linkul-ui este ters. Aceasta se realizeaz prin o metod a controlorului care se activeaz de fiecare dat cnd o tast este apsat. Dac se adaug caractere n hyperlink, acesta va crete n lungime, dac se terg acesta va fi sczut pn nu va mai conine nici un caracter. n cazul unei introduceri greite a informaiilor legate de hyperlink, se efectueaz eroarea 5. OpC15: Verificarea operaiei de drag. Dac se efectueaz o operaie de CTRL+CLICK pe orice element al oricrei pagini, se ncepe operaia de drag a componentei. Controlerul notific Modelul de existena unui startDrag(). Componenta este modificat, la nivelul obiectului care l reprezint, abia dup finalul operaiei de desenare, folosind metoda updatePositionElement(). Pe parcursul repoziionrii, se vor respecta condiiile impuse n cadrul operaiei OpC2. OpC16: Verificarea operaiei de resize. Aceast operaie este valabil asupra oricrei element n oricare tip de pagin. Ea este realizat n momentul execuiei unei operaii de tipul SHIFT+CLICK n colul dreapta jos a unei componente. Implementarea acestor operaii se realizeaz ntr-un mod asemntor cu OpC15, diferena const n existena unei limite de redimensionare. Metoda apelat de ctre controler la sfritul operaiei de desenare : updateResizeElement(); OpC17: Operaiile de Generare XML/LoadXML. Operaia oferit de ctre controlor este una minimal, se trimite ctre Model poziia de unde se ncarc/salveaz fiierul XML. Fiecare element al paginii va conine un set de EventListener, specific tipului su. Controlerul reprezint totalitatea de funcii care sunt apelate n cazul, unui Event, el transmite mai departe ctre Model ce trebuie schimbat n scen, sau ce operaii trebuie realizate, dup cum ablonul Model-View-Controler cere. Nu exist pre condiii legate de editare, fiecare intrare este verificat de platforma Flash, nu se pot trimite obiecte null ctre Controlor. Post-condiiile controler-ului se refer la totalitatea de schimbri realizate de controler. 5.2.1.6 Modelul Aplicaia implementeaz o serie de funcionaliti prevzute n capitolul de analiz. Acestea sunt puse n practic prin intermediul unor operaii. Operaiile implementate de ctre aplicaia Flash sunt: Adaugare/eliminare componente text Adaugare/eliminare componente imagine Adaugare/eliminare componente exterioare Adaugare/eliminare pagini 5.2.1.6.1 Operaii legate de pagini Site-ul conine un numr maxim de 42 de pagini. Aceast constrngere este aleatoare, mrirea numrului maxim de pagini se poate realiza oricnd prin modificarea unei singure variabile. Variabila se numete nMaxPagini:int, variabil global. Mrirea numrului maxim de pagini atrage o problem la nivelul elementelor vizuale. Butoanele tab nu sunt suficiente pentru 53
Capitolul 5 acoperirea afirii tuturor paginilor, se poate creea o list care nlocuiete butoanele tab, si cuprinde toate paginile aplicaiei. OpM1: Opeaia de adugare pagina. Fiecare pagin adugat va primi o denumire, mpreun cu o relevan fa de ntregul site. Dup definire, atributele paginii pot fi modificate printr-o funcie special. Implementarea acestei operaii primete o abordare simpl. Controlerul a verificat consistena valorilor trimise, acum urmeaz operaia de creeare a unei noi pagini folosind clasa Pagina. Obiectul nou creat este adugat n Array-ul dedicat tuturor paginilor, intitulat pagini. Dup adugare, pagina nou creat va primi focus, adic va fi n prim plan, prin setarea variabilei paginaSelectata = paginaNoua. Variabila paginaSelectat pstreaz obiectul de tipul Pagina specific paginii afiate pe ecran. Benificile acestei abordri sunt motivate n momentul adugrii elementelor n pagin. n loc s se execute o cutare la fiecare adugare, se pstreaz obiectul i este prelucrat direct. OpM2: Clonarea Paginilor. O opiune important n creeare paginilor este posibilitatea de clonare a unei pagini deja existente. Cand se creeaz o nou pagin, exist o opiune care permite clonarea unei pagini din rndul de pagini existente. Rezultatul va fi o pagin care va conine clone ale elementelor din pagina surs. Fiecare obiect de tipul Pagin ofer o metod de clonare. n clipa generrii unei noi pagini, pagina nou va fi refereniat ctre clona obiectului Pagina, apoi se vor modifica parametrii obiectului clon conform informaiilor oferite de utilizator. Urmtoarele etape sunt aceai cu operaia de adugare pagin. OpM3: Adaugare/stergere pagini. Paginile pot fi adugate/terse la cerere, cu excepia paginii index. Stergerea unei pagini nu afecteaz logica aplicaiei. Singurul impediment care poate aprea n o operaie de tergere este de consisten linkurilor paginilor exterioare ctre pagina care urmeaz a fi tears. Utilizatorul trebuie s verifice coninutul fiecrei pagini n parte, dac exist vreo legtur. Aceast verificare poate fi realizat n mod automat, tergerea find de asemenea automat. Implementarea operaiei de tergere pagin este realizat prin eliminarea paginii din Array-ul pagini. Dup verificarea existenei paginii de ctre controler, ea va fi trimis spre eliminare n model. 5.2.1.6.2 Operaii legate de componente Fiecare pagin va conine componente text, imagine i componente exterioare. Acestea sunt adugate n pagin prin poziionarea lor de ctre utilizator. Ele pot fi editate, repoziionate sau redimensionate. Controlorul verific dac aceste operaii sunt realizate corect, dar logica de modificare a elementelor paginii este descris n model. OpM4: Operaia de poziionare/ adugare element text este realizat n mai multe etape: dup selectarea operaiei se alege poziia din colul stnga sus al elementului text n timp ce mouse-ul este apsat se deseneaz un dreptunghi care simbolizeaz aspectul viitoarei componente n pagin la lsarea click-ului se va deschide un meniu care va cere introducerea unor informaii legate de noua component la selectarea butonului OK se trimite spre generare noua component
54
Capitolul 5 Generarea noii componente este fcut n model folosind metoda generateText. Dup generearea obiectului de tipul ComponentaText, el este adugat n componentele paginii selectate folosind instrunciunea: paginaSelectata.addComponenta(newComponentaText). Operaiile de verificare a poziionrii corespunztoare a componentei text este realizat de ctre Controler: OpC2 Operaia de desen a dreptunghiului este realizat la cererea Controlerului. OpM5: Modelul conine doar operaia de generare/modificare a dreptunghiului. Aceast operaie se realizeaz folosind o variabil global drawDreptunghi. Aceasta este redesenat de ctre model, de fiecare dat cnd Controlerul o cere. Modelul cunoate doar de existena dreptunghiului i desenarea acestuia, nu ce face utilizatorul. Implementarea acestei operaii este realizat n mai multe etape. Iniial se elimin dreptunghiul din scen folosind operaia removeChild(drawDreptunghi). Acesta este regenerat folosind parametrii trimis de ctre Controler, apoi adugat n scen folosind addChild(). OpM6: Operaia de poziionare/ adugare element imagine este realizat n mai multe etape: spre deosebire de operaia anterioar, informaiile legate de imaginea selectat sunt cerute nainte de adugare dup specificarea informaiilor, imaginea este ncrcat in model, urmnd s se repete operaia de desenare a imaginii intr-un mod asemntor componentei text; n loc de dreptunghi se va afia imaginea dup desenare imaginea rmne pe scen. Adugarea componentei de tipul ComponentaImage se realizez la sfritul operaiei de desen. Implementarea adugrii ComponentaImagine n paginaSelectat este la fel. OpM7: Operaia de ncrcare a unei imagini este realizat n mai multe etape. Aceste etape vor conine i informaii legate de codul de adugare: Imaginea este ncrcat folosind operaia de load() a unei instane a clasei FileReference. Aceast operaie cere utilizatorului s aleag un fiier, apoi ncarc informaia n formatul de tipul ByteArray. Dup ncrcare, informaia este introdus ntr-o instan a obiectului Loader. n procesul de desenare a elementului de imagine, se va afia imaginea desenat, redimensionat n funcie de preferinele utilizatorului. Dup finalizarea procesului de desenare se creeaz o nou instan a clasei ComponentaImage,se adaug componenta Loader n obiectul de tipul ComponentaImage, se seteaz parametrii imaginii, apoi este adugat n arrayul de componente a paginii Parametrii componentei Loader sunt ncrcaii folosind un addEventListener n cazul evenimentului de iniializare. Aceast abordare este considerat standard n implementriile care conin loader. OpM8: Editarea textului, operaia de setare font, marime, align, bold, italic, underline i culoare. Fiecare component text poate fi modificat de ctre utilizator. Modelul primete de la Controlor prin operaia OpC14 ce dorete s fie modificat n scen. Metodele oferite de ctre Model sunt introduse n Tabelul 5.4. Aici sunt descrise care metode se apeleaz i parametrii trimii. Implementarea acestor operaii este realizat folosind setTextFormat(myFormat), unde myFormat este un obiect de tipul TextFormat, care conine toate tipurile de atribute specifice unui TextField. Aceast metod poate fi folosit la nivelul ntregului text, sau doar n zone specificate de utilizator. 55
Capitolul 5 Pre-condiii: nu exist, selecia este trimis de ctre Flash. Dac nu a fost efectuat o selecie, opiunea se aplic pe tot textul. Post-Condiii: Textul s fie modificat. OpM9: Adugare de link-uri. Operaia de adugare de linkuri conine dou etape. Prima etap creeaz un obiect de tipul Hyperlink i l insereaz n irul de obiecte Hyperlink a ComponenteiText. A doua etap deseneaz textul s se asemene unui hyperlink specific HTML. Post-condiii: creearea unui obiect valid Hyperlink, post-condiiile de la OpM9. OpM10: Operaia de tipul drag a componentelor. Controlorul trimite ctre Model operaia de update n cadrul OpC15, folosind metoda updatePositionElement(). Aceast metod va schimba coordonatele x,y a obiectului de tipul ComponentaX, unde X este tipul de element. Implementarea acestei operaii se bazeaz pe parametrii trimii de ctre Controlor. Metoda updatePositionElementTemp() primete trei parametrii: x,y:int repezint poziia elementului n sistemul cartezian Oxy, i elementul care urmeaz s fie modificat. Aceast metod schimba valoarea xy a elementului vizual. Modelul schimb valoarea xy a obiectului ComponentaX la sfritul operaiei de desenare, cnd este apelat metoda updatePositionElement(). Pre-condiii:nu exist, controlorul este verificat de post-condiii. Post-Condii: Elementul s aib noua valoare xy diferit de vechea valoare, noua valoare s corespund elementului vizual, iar celelate s rmn la fel. OpM11: Operaia de tipul resize a componentelor. Aceast operaie se aseamn cu cea de tipul drag, elementele schimbate sunt w i h, adic lungime(w) i nlime(h). Metoda se denumete updateResizeElement()/upateResizeElementTemp(), iar operaia din Controlor care apelez metoda este OpC16. Valorile noi sunt transmise de ctre Controlor. Pre/post-condiiile sunt cele de la OpM10. OpM12: Adugarea de component exterioar facebook.com. Controlorul trimite ctre model metoda addComponentaFB(). Aceast metod adaug n pagina afiat, paginaSelectata, noua component. Adugarea este fcut prin instanarea unui obiect de tipul ComponentaExternaFB, i adugarea acesteia la pagin folosind instruciunea addComponent. Legtura dintre ComponentaExternaFB i pagina de tipul Componenta Exterioara este fcut prin valoarea unui atribut comun nume. Obs: nu se poate aduga mai mult de un tip de componentFB n pagin. Post-condiii: componenta exterioar s fie inserat n pagin. OpM13: Adugarea de component twitter.com. Implementarea este realizat n acelai fel ca n cazul OpM12. Aceeai post-condiie ca OpM12. OpM14: Adugarea de component other. Cotrolorul trimite ctre Model, prin operaia OpC10, textul care urmeaz s fie adugat n pagin. Modelul creeaz un nou obiect de tipul ComponentaExterioaraOther i atributul coninut primete valoarea trimis de Controlor. n urmtorul pas, Modelul adaug componenta n paginaSelectat apoi deseneaz componenta pe scen. Componenta desenat va fi de tipul TextField, iar marimea acesteia este definit de ctre Controler. Post-condiii: obiectul de tipul ComponentaExterioaraOther s nu fie null; obiectul s fie desenat pe scen. OpM15: Stergerea unei componente. Implementarea operaiei de tergere se realizeaz prin eliminarea obiectului component din obiectul de tipul Pagin, folosind metoda removeComponent. Eleminarea obiectului din scena aplicaiei se realizeaz prin apelarea funciei redrawStage, care redeseneaz paginaSelectat.
56
Capitolul 5 5.2.1.6.3 Operaii speciale OpM16: Generare SiteMap. Aceast operaie prezint o serie de etape. Prima etap este de update. Acum se ncarc listele paginilor i a linkurilor. La cererea Controlorului, se face operaia de update list link folosind metoda updateListLink(pagina). Acest lucru se realizeaz prin parcurgerea tuturor componentelor paginii, iar n cazul componentelor text, se va afia linkul i pagina ctre care face referire. A doua etap reprezint setarea publicitii site-ului. Aceast operaie este acoperit de OpM16. Nu avem post-condiii. OpM17: Publicitatea site-ului. Operaia de publicitate este realizat prin afiarea/modificarea accesului la o pagin. Controlorul apeleaz Modelul prin operaia OpC13. Implementarea acestei operaii se realizeaz prin setarea atributului access a obiectului de tipul Pagina a crui nume este trimis de ctre Controlor. Se parcurge tabloul pagini, iar n cazul n care atributul nume a unui obiect Pagina este egal cu cel oferit de Controlor, atributul acces a acestui obiect primete valoarea trimis de ctre Controlor. Pre-condiii:nu exist, parametrii sunt verificai de post-condiia Controlorului. Postcondiii: s fie modificat valoarea. OpM18: Logica de afiare a erorilor generate de Controler. Afiarea dialogului de eroare este realizat prin funcia showErrorNo. Aceast funcie afieaz textul erorii primite de la Controler i atribuie butonului OK un comportament. Numrul fiecrei erori a fost specificat n cadrul Controlorului. Selecia dialog-ului care urmeaz a fi afiat se realizeaz prin operaia case asupra variabilei care conine eroarea. Post-condiii: Verificarea operaiei de tergere prin parcurgearea tabloului pagini. OpM19: Operaia de generare XML. Aceast operaie transform obiectele de tipul Pagina n formatul XML. Implementarea este realizat prin parcurgerea tuturor paginilor din tabloul uni-dimensional. n cadrul fiecrei pagini se vor aduga componentele n variabila de tipul String XML . Coninutul imaginilor jpg este adugat ntr-o alt variabil. La sfritul parcurgerii se transforma XML n formatul byte i este adugat n variabila result. n urmtorul pas se adaug coninutul imaginilor n result. Rezultatul este scris ntr-un fiier n locaia trimis de ctre Controlor. OpM20:Operaia de ncrcare XML este asemntoare cu cea de ncrcare XML a aplicaiei Generator. Se parcurge tot fiierul, se transform tablul citit n String. Descrierea transformrii din String n obiecte de tipul Pagin este fcut n acelai mod ca operaia OpG3. Toate operaiile dein o post-condiie comun: afiarea dialogului/scenei n mod corespunztor.
Capitolul 5
<obiectX> <atribut>valoare1 </atribut> <atribut2>valoare2</atribut2> </obiectX> Oiectul ObiectX are dou atribute, iar fiecare atribut are are valoarea descris n interior.
Respectnd modelul de clase definit anterior n Figura 5.3, se va defini un tag principal denumit XML, iar n interiorul acestuia se vor defini obiectele de tipul Pagina. Un exemplu tipic al schemei generale a standarduluil XML:
<XML v=1 info="Site Generator Format"> <Pagina1> <atribut1>valoareAtribut1</atribut1> <atribut2>valoareAtribut2</atribut2> <atribut3> <atribut3.1>valoareAtribut3.1</atribut3.1> <atribut3.2>valoareAtribut3.2</atribut3.2> </atribut3> </Pagina1> <Pagina2> < atribut1> < atribut1.1>valoareAtribut1.1</ atribut1.1> < atribut1.2>valoareAtribut1.2</ atribut1.2> </ atribut1> <atribut2>valoareAtribut2</atribut2> </Pagina2> <ComponentaExterioara> <atribut1>valoareAtribut1</atribut1> <atribut2> < atribut2.1>valoareAtribut2.1</ atribut2.1> < atribut2.2>valoareAtribut2.2</ atribut2.2> </ atribut2> </ComponentaExterioara> </XML>
Din acest exemplu se poate vedea modul de organizare a standardului XML prin introducerea ca elemente a tag-ului <XML> a paginilor Pagina1, Pagina2, ComponentaEterioar. Acest fiier mai conine o serie de tag-uri. Aceastea sunt de tipul <jpg> i conin dou elemente. Primul este intitulat <end> i conine lungimea coninutului elementului, urmat de coninutul fiierului jpg n formatul tablou unidimensional de tipul byte. Tag-urile <jpg> sunt adugate la sfritul fiierului, n ordinea invocrii lor n descrierea paginilor web. Fiierul nu trebuie codificat, o codificare ar schimba coninutul fiierului jpg prin reorganizarea informaiei. Orice aplicaie care va citi fiierul trebuie s il citeasc ca un ir de byte, nu ca un ir de caractere. Exemplu: transformarea fiierului n caracrere unicode nu va permite afiarea imaginilor.
58
Capitolul 5
Aceast abordare afieaz coninutul Flash, fr s verifice dac aplicaia Flash Player este instalat. Aceast ipotez este rezolvat prin adugarea unui element de tipul div n care se va aduga urmtorul cod HTML:
<div> <h1>Alternative content</h1> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p> </div>
Acesta afieaz butonul pentru instalare a aplicaiei Flash Player. Pe lng acest coninut, se adaug elementele de fundal mpreun cu cteva informaii text. II. A doua pagin este cea de generare, generate.JSP. n cadrul acestei pagini se ncarc fiierul XML trimis i se trimite ctre Generatorul Web. Dup returnarea rezultatului se va rencrca pagina, oferind dou opiuni: a. Vizualizare Rezultat b. Download Fiier ZIP 59
Capitolul 5 Opiunea de vizualizare va trimite ctre ultima pagin a aplicaiei. A doua opiune va downloada fiierul pe maina local. Pagina generate.JSP va conine dou stri. Prima stare reprezint starea iniial n care se va afia dialogul de ncrcare fiier. A doua stare va afia dialogul cu opiunile prezentate mai sus, mpreun cu dialogul afiat n prima stare. Pagina se va pstra n aceast stare pn la ntampinarea unei erori, cnd se va rentoare n starea iniial prin afiarea unui mesaj de eroare, sau cnd se consoder conexiunea cu utilizatorul terminat. Starea afiat este definit de o variabil de tipul boolean n logica de operaii a paginii JSP afiseazaDialogDownload. Dac valoarea este false, se va afia doar dialogul specific strii iniiale. Dac valoare este true, se va afia i dialogul pentru download/vizualizare. n caz de eroare la citire/trimitere, se va afia un mesaj de eroare pe pagina Erori.JSP, apoi se va face redirect ctre generate.JSP n starea iniial. Tot aceast pagin prezint logica de conexiune ctre un serviciu Web. Aplicaia JSP cunoate de existena Generatorului mpreun cu fiierul WSDL al Generatorului. Generate.JSP trebuie s se conecteze la servici, s trimit fiierul XML. Rezultatul oferit de ctre serviciu este trimis napoi ctre Generate.JSP n formatul ZIP. Conexiunea este realizat folosind Clientul Web Service oferit de ctre NetBeans. Acest client implemeneaz codul cerut pentru transmitere/recepie mesaje de tipul SOAP. Singurul pas n realizarea de transmisie/primire este realizat de ctre urmtoarea porinue de cod:
try { servici.GeneratorWS_Service service = new servici.GeneratorWS_Service(); servici.GeneratorWS port = service.getGeneratorWSPort(); byte[] XML = XMLInputStream; result = port.generate (XML); out.println("S-a realizat generarea "); } catch (Exception ex) { out.println("exception" + ex); }
Obiectul Array de tipul Byte result va conine arhiva zip a site-ului. Fiierul XML trebuie codificat n forma de tipul Array de Byte. Motivul folosirii coleciilor array de tipul byte este dat de necesitatea unei lipse de codificare, care s permit re-generarea diferitelor tipuri de fiiere incluse. Array Byte este un tip primitiv care nu codific coninutul n nici o form. III. Ultima pagin afieaz coninutul generat afisare.JSP. Operaia de afiare este realizat n interiorul unui internal frame. Astfel, orice operaie realizat n interiorul frame-ului nu va influena funcionarea Aplicaiei JSP. Prima etap este decodificarea fiierului de tipul ZIP. Java ofer o librarie de arhivare/dezarhivare a fiierului de tipul ZIP denumit java.util.zip. Prin dezarhivare, Aplicaia va genera fiierele cerute n interiorul aplicaiei jsp. Urmtoarea etap afieaz coninutul generat de ctre aplicaie n internal frame-ul paginii afisare.JSP. Se va afia pagina index.html.
60
Capitolul 5
61
Capitolul 5 Dup generare, pagina va conine o serie de elemente HTML input, care conin elementele din pagin. Administratorul va vedea doar o list de elemente ale paginii mpreun cu coninutul lor. Dup finalizarea editrii elementelor, va folosi metoda de update care va modifica coninutul paginii. Coninutul este modificat folosind operaia de rescriere a fiierului. Implementarea funciilor de citire i de scriere se realizeaz folosind file_get_contents/file_write_contents. Pre-Condiii: s nu existe limbaj html n pagin. Post-Condiii: creearea unui fiier HTML. OpS5:Operaia de Eliminare a unei pagini se realizeaz prin tergerea ei folsind umtorul cod: $fisier = locatie.php; unlink($fisier); Metoda unlink () terge fiierul i returneaz true dac fiierul a fost ters cu succes, false dac nu. Robusteea aplicaiei este asigurat prin folosirea instruciunii try-catch asupra operaiei de tergere, dei accesul ctre fiierul care urmeaz a fi ters este garantat. Post-Condiie: operaie realizat cu succes. OpS6:Operaia de download fiier XML ofer posibilitatea de download a copiei n formatul standard a Generatorului. Implementarea operaiei este realizat prin citirea fiierului backup.XML, apoi este scris acolo unde dorete utilizatorul. Metodele folosite n citirea/scrierea fiierului sunt aceleai ca n cazul operaiei de adugare pagin. Post-Condiie: operaie realizat cu succes.
Implementarea Semantic web este asigurat folosind o logic RDF. Documentul asociat paginii se va denumi NUME.rdf i va conine logica de argumentare a legturii dintre pagin i componenta text. Un exemplu RDF:
<?xml version="1.0"?>
62
Capitolul 5
<rdf:RDF> <rdf:Description rdf:about=paginaCareConineElementulText> <contine>denumireElementText</contine> <relevanta >relevantaFataDePagina</relevanta> </rdf:Description> </rdf:RDF>
n acest exemplu se stabilesc dou fapte legate de pagina nou creat. Subiectul la amndou este paginaCareConineElementulText. Predicatul primei propoziii este: conine, obiectul este: denumireElementText. Propoziia format n limbaj natural este: paginaCareConineElementulText conine denumireElementText. A doua propoziie format: Relevana elementului fa de paginaCareConineElementulText este relevantaFataDePagina. mpreun formeaz urmtoarea fraz: Pagina paginaCareConineElementulText conine denumireElementText a crui relevan fa de paginaCareConineElementulText este relevantaFataDePagina. Aceai abordare este folosit n cadrul implementrii tuturor elementelor n pagin. Singurul lucru care poate fi diferit ntre tipurile de elemente sunt predicatele asociate legturii de tipul RDF. Elementul imagine este adugat folosind parametrul <img>. Src este sursa imagini, paramterii alt, link sunt introdui de ctre utilizator. Poziionarea n pagin ct i nlimea/lungimea sunt oferite prin folosirea CSS. Exemplu CSS:
.clasa{ Position=absolute; Left = x; Top = y; Width = w; Height = h; }
n cadrul definirii fiecrui element, se va preciza class=clasa, astfel elementul adugat va respecta regula CSS stabilit pentru clas. Aceeai abordare este folosit i n cazul celorlalte elemente ale paginii. Asemntor cu componenta anterioar, denumirea imaginii se va pstra prin adugarea unui tag nainte de inserarea imaginii, astfel imaginea este atribuir n formatul CSS folosind denumirea din TAG. Elementele exterioare sunt adugate dup tip. n cazul Componentei Exterioare Other se va aduga codul direct n pagin. Acest lucru poate s creeze erori n pagin, dar sintaxa codului este verificat de ctre Editor. n cazul n care nu funcioneaz componenta, browserul va afia simbolul broken, administratorul poate rescrie/elimina componenta din pagina de administrare. Adugarea n pagina HTML este realizat n mod asemntor cu celelalte elemente prin tagul special. Tag-ul va fi de forma: <ComponentaOther>. Componenta Facebook este adugat n site folosind codul oferit de ctre Graph API de pe site-ul facebook developers. Pentru a putea folosi Graph API n interiorul unui site, este nevoie de un Facebook App, aplicaie n care utilizatorii i dau consimmntul asupra procesului de primire/prelucrare informaii primite de la facebook. Graph API ofer informaiile cerute de utilizator prin folosirea linkului https://graph.facebook.com mpreun cu o serie de parametrii. Spre exemplu: https://graph.facebook.com/me/friends?access_token=XXX va ntoarce lista de prieteni a unui utilizator cu access_token = XXX. Lista parametriilor i modul lor de funcionare sunt descrise n linkul numrul [55]. 63
Capitolul 5 Folosind un Facebook App, utilizatorul facebook permite acces de citire i adugare de informaii componentei Site, din interiorul unui app. Acest acces este concretizat prin setarea unui privilegiu ctre access_token-ul Facebook App. Site-ul se poate conecta la facebook i poate cere informaii, exemplu: poza, nume, wall, like, etc, sau poate trimite informaii, exemplu :publicare pe wall, publicare pe o pagin, etc. Aceast component cunoate dou stri: login i logedin. Starea de login va afia butonul de logare folosind facebook. Operaia de afiare buton logare mpreun cu operaia de logare sunt standarde oferite de facebook.com. Acestea sunt definite n linkul [56] i se folosesc n acelai mod n cadrul oricrei aplicaii care permite logare prin facebook. Implementarea va conine doar o copie a acestul cod. Odat realizat logarea, pagina va fi renprosptat trecnd n starea logedIn. Acum utilizatorul vede componenta desenat de ctre Administrator. Aici utilizatorul poate s adauge coninut sub forma de comment Facebook n Facebook App, rezultatul fiind vizibil doar pe paginia Site-ului. Implementarea acestei funcionaliti este realizat folosind Graph API, iar paginile afiate vor parcurge rezultatul primit de la graph.facebook.com, urmnd s afieze doar infromaia relevant la pagin. Pagina de social dashboard se comport n acelai fel ca paginile de logare, difer doar operaiile apelate. Componenta twitter.com are un alt comportament fa de Componenta Facebook. Comunicarea cu aplicaia twitter este realizat folosind un serviciu web de tipul REST. Modul de conectare, mpreun operaiile utilizate n implementare sunt prezentate n linkul [57]. Implementarea componentei twitter.com ofer dou stri: logIn i logedIn. Prima prezint un buton care permite logarea folosind contul de twitter. Acest buton este implementat de ctre cei de la twitter, inserarea lui n pagin se face parcurgnd o serie de etape, linkul [58]. A doua stare este desenat de ctre utilizator, iar logica de adugare tweet pe pagin este realizat prin arhitectura de tipul REST.
Capitolul 5
Social Source & Action adugare de coninut scurt tweets , logare n diferite site-uri; posibilitate de citire/modificare din exterior Social Entity twitter.com/ developers.twitter.com Social Type socializare prin citirea coninutului afiat de un target de utilizatori
Analiza scurt descris mai sus prezint o serie de concluzii: 1. aplicaiile permit adugarea de coninut n interiorul altor pagini, fapt urmrit de ctre aplicaie 2. existena unei ramuri de developers care descrie, n detaliu, modul de conectare la aplicaii 3. adugarea este menionat n interiorul aplicaiilor web 2.0, consecin benefic prin prezentare coninutului i n cadrul platformelor 4. ambele permit logarea n diferite site-uri se poate urmrii cine adaug coninut i cand; elimin necesitatea creeari unei logici de logare, ea este implementat de aplicaiile Web 2.0 5. posibilitatea de control a aplicaiilor Web 2.0 din exterior Aceste cinci avantaje reprezint motivul seleciei celor dou aplicaii n implementarea ramurii de Social Dashboard. Ramura social dashboard permite citirea coninutului aplicaiilor Web 2.0, apoi permite adugarea de coninut n interiorul aplicaiei. Citirea este fcut prin afiarea elementelor de wall i a notificaiilor. Scrierea se face prin adugarea coninut pe wall. Implementarea operaiilor de citire din aplicaii Web 2.0/scriere n aplicaii Web 2.0 se realizeaz folosind metodele oferite de platforme Web 2.0. Legturile ctre metode au fost prezentate n subcapitolul 5.3.2. Metodele apelate de ctre Site: login afiare poz afiare adugare comment/tweet adaug comment/tweet
Capitolul 5 scrierea n formatul String va schimba codificarea fiierelor JPG, ele nu pot fi citite dup conversia n UTF-8 , specific Java String. Soluia aparent este folosirea unui conversii spre Base64String; elementele jpg vor fi afiate, dar alte elemente, exemplu video, nu vor funciona.
Pre-condiii: XML s fie n formatul cerut. Post-condiii: fiierul arhivat s fie de tipul ZIP. Clasa care implementeaz operaiile efectuate se numete Operaii i este prezentat individual.
66
Capitolul 5
Implementarea este realizat folosind o serie de condiii, rezolvate folosind instruciunea if, care se ocup de logica apartenenei unui caracter la o component. Nu este folosit instruciunea case datorit lungimii variabile a denumirilor. Exemplu <jpg> - 5 caractere, <image> - 7 caractere. Logica de nceput de adugare, notific nceputul procesului de creearea unui obiect text prin atribuirea variabilei obiectText cu o valoare nou. Se vor citi parametrii componentei tot n aceast parcurgere, iar n cadrul logicii de atribuire text, obiectul obiectText va fi adugat n componentele paginii folosind instruciunea addComponent. n urmtorul pas, obiectText va primi valoarea null, s nu mai conin referina spre obiectul creat, adugat n array-ul de componente a paginii. Aceast operaie este realizat de ctre metoda static transformXmlToPages() a clasei Operaii. Pre-condiii: nu exist, a fost verificat de ctre metoda generateSite a clasei GeneratorWS; Post-condiii: Fiecare element a rezultatului s nu conin valori nule sau 0. OpG4: Dup creearea structurii pagini, genernd paginile codificate. generateCode() i primete ca parametru unidimensional de tipul String; fiecare parcurgere privit funcional: necesare generrii, se ncepe o parcurgere a fiecrei Aceast operaie este realizat de ctre metoda paginile generate anterior, oferind ca rezultat un tablou String corespunde unei pagini codificate. Metoda de
For each (pagina:ComponentaPagina in pagini){ String body =<body>\n; //iniializarea elementului body String head= <html>\n <head>\n // iniializarea elementului head For each (componenta in pagina.getComponente()){ If (if component aparine de head)
67
Capitolul 5
Head = head + logica generare component Else Body = body + logic de adugare elemente body logic generare element semantic web } Body = body + <\body>\n Head = head + <\head>\n Return head + body + <\html> }
Pre-condiii: nu exist, verificarea a fost realizat de operaia anterioar; Post-condiii: rezultatul s fie valid XML. OpG5: Urmtoarea operaie transpune imaginile n formatul byte[]. Dup cum a fost definit standardul XML, aceast operaie citete din fiierul XML valoarea informaiei imaginii JPG. Parcurgerea imaginii se realizeaz folosind instruciunea for, unde indicele pleac de la 15, lungimea minim a unui XML, pn la lungimea fiierului. Pentru o parcurgere optim, fiierul XML conine un tag specific fiecrei imagini n care se reine numrul de byte a imaginii. Astfel, aplicaia nu citete tot fiierul, ci doar poziia din fiier unde ncepe i unde se termin imaginea, urmnd ca indicele ciclului for s fie mrit cu lungimea imaginii. Aceast operaie este realizat de ctre metoda: transformXmlToComponents(). Implementarea este asemntoare parcurgerii XML pentru definirea obiectelor specifice paginii, cu diferena c se verific alte tag-uri. Pre-conditii: nu exist, XML este deja verificat; Post-condiii: rezultatul s nu conin elemente null. OpG6: Adugarea de pagini specifice fiecrui site. Aceste pagini se ocup de setul de funcionalitii, descrise n subcapitolul 4.2.1, specifice operaiilor de logare, stergere pagina, adugare pagin i dashboard. Acestea sunt scrise n limbajul php. Toate aceste fiiere sunt adugate ntr-un folder n interiorul serverului JSP. Generatorul copiaz toate fiierele din folder i le adaug n arhiva ZIP. Aceast abordare este folosit datorit posibilitii de modificare/adugare/tergere a fiierelor, fr ca generatorul s fie modificat. Paginile sunt returnate la apelarea metordi generatePhpFiles() din interiorul clasei Operaii. Implementarea acestei clase prezint o citire a directorului unde se afl filierele i o scriere n formatul byte a rezultatului. Aceste pagini sunt detaliate individual n subcapitolul 5.3.1. Pre-condiii: nu exist. Post-condiii: rezultatul s nu fie null. OpG7: Convertirea fiierelor formate n arhiva ZIP. Toate paginile sunt adugate n variabila String[] de pagini. Acestea sunt adugate n colecia de fiiere de tipul Byte[]. n aceast etap se adaug fiierele n cadrul aceluiai array, urmnd s fie scrise ntr-un byte[]. Pentru creearea unei arhive n formatul ZIP sunt necesare dou tablouri unidimensionale: unul care informaia care urmeaz adugat n fiecare fiier i un al doi-lea tablou care conine denumirea fiecrui fiier. Dup definirea acestor elemente, se adaug individual n elemente de tipul ZipEntry. Fiecare element de tipul ZipEntry este introdus ntr-un OutputStream, iar rezultatul final este transformat n byteArray. Acest rezultat este trimis ctre instana clasei GeneratorWS, apoi ctre clientul care a cerut site-ul web. Pre-condiii: nu exist. Post-condiii:rezultatul s nu fie null. 68
Capitolul 6
Capitolul 6.
Testare i validare
Acest capitol va prezenta variantele de testare ale aplicaiei. Asemntor capitolului anterior, se vor prezenta metodele de testare specifice proiectului n ansamblu, apoi metodele de testare/validare specifice fiecrei componente. Testarea tuturor componentelor este efectuat manual. Testarea automat este realizat pe baza pre/post condiiilor stabilite n capitolul dedicat implementrii, capitolul 5. Fiecare condiie este motivat acolo. Validarea va fi extecutat fie automat, fie manual in funcie de componente.
Capitolul 6 arhivei, se va opri parcurgerea i se va afia erroarea. Prin aceast abordare se asigur verificarea oricrei inconsistene a fiierului trimis spre vizualizare.
6.2.Editor
Verificrile/testele realizate n cadrul Aplicaiei Flash, sunt realizate manual. Adobe ActionScript 3.0, folosit n dezvoltarea Aplicaiei Flash, permite un singur mod de verificare a variabilelor/intrrilor/ieirilor, instruciunea trace(). Aceast intruciune afieaz n terminalul Flash mesajul trimis ca parametru. Testarea tuturor funciilor (intrri/ieiri) este realizat prin trimiterea unor intrri care pot cauza erori dar care verific pre-condiiile, apoi se verific dac ieirea respect post-condiiile. n cazul n care nu se repsect o precondiie, nu se va mai executa operaia i se va afia mesajul tipic erorii att n terminalul Flash ct i sub forma unei Erori generate de ctre Model. Dac nu este respectat o postcondiie, se va proceda la afiarea erorii n terminalul Flash, se va dispune la afiarea erorii de ctre Model i se vor retrage modificrile realizate de ctre metod. Implementarea verificriilor asupra precondiiilor se realizeaz prin inserarea unor instruciuni if n interiorul metodei invocate, nainte de logica de executare a metodei. n cazul n care se gsete o pre-condiie fals, se va afia n terminal folosind instruciunea trace(Eroare Pre-Conditie: + textEroare), apoi se va afia eroarea de ctre Model - doErrorPreCon(). Dup aceste dou instruciuni se va realiza instruciunea break;. Operaia de verificare asupra post-condiiilor se realizeaz ntr-un mod asemntor cu verificarea pre-condiiilor. Post condiiile const n o serie de verificri realizate folosind instruciunea if, poziionate la sfritul metodei, dup logica de executare. n cazul n care o condiie nu este verificat, se va afia n terminal, se va executa eroarea doErrorPostCon(), se vor schimba toate variabilele/atributele la valorile iniiale, apoi se va executa operaia de break;. Exemplu:
function f(param1,param2){ if (cond1){ trace(Mesaj Eroare); doErrorPreCon(); break; } //declarare variabile auxiliare specific variabilelor care urmeaz s fie modificate //logica functie f if (cond2){ //logic de schimbare variabile la valorile iniiale trace(Mesaj Eroare); doErrorPostCon(); break; } }
Rezultatele sunt positive, nu s-a reclamat existena unei erori n utilizarea fireasc a aplicaiei; nu s-a afiat nici un mesaj de eroare n terminalul aplicaiei flash. Valorile trimise greit ca pre condiie au produs erori, dar nu au existat erori de post-condiii.
70
Capitolul 6
6.3. Generator
Testarea realizat n cadrul generatorului se dezvolt folosind JUnit. Se va creea o nou clas de tipul JUnit n care se vor verificata toate metodele clasei Operaii. Fiecare metod, a clase Operaii, cuprinde o serie de pre-condiii i post-condiii. Acestea sunt verificate de ctre metodele unei clase JUnit, iar n cazul unor erori se va folosi metoda AssertFalse, mpreun cu un mesaj care specific ce condiie nu este verificat. Implementarea acestei verificri se realizeaz folosind pre-condiiile i post-condiiile definite n cadrul capitolului 5. Metodele de test sunt scrise folosind o clas JUnit, generat de pe baza clasei Operaii. Variabilele trimise ca parametrii vor primi valori specifice, fie null, i sunt verificate cu ce valoare ar trebui s primeasc. Exemplu:
@Test public void testZipBytes() throws Exception { System.out.println("zipBytes"); int nrComponents = 0; String[] filenames = null; byte[][] input = null; byte[] result = Operatii.zipBytes(nrComponents, filenames, input); assertTrue(result != null); }
n exemplul prezentat, chiar dac valorile trimise sunt null, se va ntoarce o arhiva goal. S-a testat fiecare metod, prin trimiterea diverselor valori ca parametrii i s-a verificat dac valorile oferite rspuns sunt corecte; parametrii trimii variaz n funcie de metoda apelat. Rezultatele testelor arat c aplicaia genereaz i creeaz elementele corespunztor.
6.4. Site
Funcionarea corespunztoare a paginilor din site este garantat de ctre Generatorul Web. Codul generat trebuie s funcioneze n orice medii. Din acest motiv, nu trebuie s existe o testare a codului produs, ci doar a modului de generare. Site-urile personalizate generate de ctre utilizator conin limbaj HTML, Semantic, componente other i componente facebook/twitter. Corectitudinea codului HTML i Semantic este verificat de ctre Editor i Generator, corectitudinea componentelor facebook/twitter este realizat de ctre aplicaiile Web 2.0 specifice. Implementrile tuturor verificrilor au fost descrise n capitolul 5. Singura problem care poate s apar este la nivelul componentei other. Aceasta poate fi supus unor verificri asemntoare cu cea realizat asupra componentei XML. Paginile specifice fiecrui site sunt verificate n etapa de dezvoltare. Implemenatarea verificrilor se realizeaz prin testarea rezultatelor paginilor n diferite cazuri. Fiecare set de instruciuni, specifice unei pagini, au fost testate manual prin introducerea unor date care pot cauza erori. Datorit folosirii instruciunii try-catch, nu au fost ntampinate cazuri care provocau o eroare de sistem. Validarea tuturor paginilor a fost realizat folosind validatorul RDF i HTML oferit de ctre W3C. Rezultatele validrii sunt pozitive, fiierele sunt realizate corect.
71
Capitolul 7
Capitolul 7.
Prezentarea manualului de instalare/utilizare este realizat la nivelul fiecrei componente ale proiectului. Se vor preciza adresele URL unde se afl manualul de instalare/utilizare a platformelor pe care s-a dezvoltat aplicaia mpreun cu o descriere a modului de folosin a aplicaiei.
7.1.1 Editorul
Componenta editor este lansat pe un server JSP n paralel cu un server apache/PHP. Serverul php este folosit doar pentru afiarea paginilor speciale generate. Pe lng cele dou servere, este nevoie de aplicaia Adobe Flash Player/Adobe Flash. Acestea vor fi prezentate mpreun cu linkul unde se afl manualul de utilizare oficial. Java JDK o trebuie instalat mpreun cu Java EE portul 8080 o folosit pentru afiarea/dezvoltarea paginilor JSP o Manual: http://docs.oracle.com/javase/7/docs/webnotes/install/index.html NetBeans o trebuie instalat versiunea care conine implementarea pentru Java EE o folosit pentru dezvoltarea aplicaiei o Manual: http://netbeans.org/community/releases/69/install.html Adobe Flash CS5 o compatibil cu orice versiunea de la CS5 n sus o folosit n dezvoltarea Aplicaiei Flash o Manual: http://helpx.adobe.com/download-install.html Adobe Flash Player o compatibil cu versiunea 10 sau orice versiune ulterioar o folosit n afiarea Aplicaiei Flash o Manual: http://get.adobe.com/flashplayer/ Server HTTP Apache 2.2 o Instalarea se realizeaz pe portul 80 o Folosit n afiarea paginilor HTML o Manual: http://httpd.apache.org/docs/2.2/ Server PHP o folosit n afiarea paginilor speciale ale Site-ului/componentele facebook o Manual: http://php.net/manual/en/install.php Browser web o Orice browser web: Internet Explorer, Mozilla Firefox, Google Chrome, etc. 72
Capitolul 7 Componenta Editor este accesat prin intermediul Internetului, astfel nu necesit instalare. Fiierele componentei Editor sunt: Aplicaia Flash: o AplicaieFlash.swf Aplicaia JSP: o Afisare.jsp o Download.jsp o SendTo.jsp o Generate.jsp Toate aceste fiiere se poziioneaz ntr-un folder n interiorul serverului.
7.1.2 Generatorul
Componenta generator este rulat n interiorul unui browser, fr s fie nevoie de instalarea unei alte aplicaii. Generatorul este dezvoltat pe platforma NetBeans sub forma unei aplicaii web Java; manualul de instalare este specificat n subcapitolul 7.1.1. Fiierele componentei Generator: Index.jsp Operatii.java Fiierele claselor java folosite n generarea paginilor web o Componenta.java o ComponentaExterioara.java o ComponentaExternaFB.java o ComponentaExternaOther.java o ComponentaFBHistoryInput.java o ComponentaFBInput.java o ComponentaFBPicture.java o ComponentaImagine.java o ComponentaText.java o Hyperlink.java o Pagina.java Paginile sunt adugate n interiorul unui proiect Web Application oferit de NetBeans. Se creeaz un proiect folosind surse existene, apoi se ncarc sursele din proiectul Generator. Urmtorul pas este rularea proiectului. Surse proiectului Generator se afl pe discul aplicaiei.
7.1.3 Site
Componenta site nu necesit s fie instalat, ea epoate fi vizualizat fr instalare. Pentru viuzalizarea Site-ului este necesar un browser web, un server php(doar pentru paginile speciale) i aplicaia WinZIP. WinZip o folosit n dezarhivarea site-ului generat o manual: http://kb.winzip.com/kb/5/ Fiierele Site-ului se afl n arhiva ZIP generat. Pentru rularea aplicaiei, se copiaz toate fiierele n interiorul unui server, apoi sunt accesate prin intermediul unui browser.
73
Capitolul 7
7.2.1 Editorul
Aplicaia Flash conine o serie de butoane care efectueaz diverse operaii. Titlul fiecrei operaii va corespunde funcionalitii realizate de ctre editor. I. 1. 2. 3. 4. 5. 6. 7. 8. II. 1. 2. 3. 4. 5. Creeare pagin: click pe butonul Pagina completare cmpuri dialog Informaii Generale Pagin Nou selecteaz opiunea de clonare click pe butonul OK,n cazul unei erori treci la pasul 5, dac nu la pasul 8 se afieaz o eroare specific cmpului neselectat, click pe butonul OK completare camp cu valoare nou click pe butonul OK, n caz de eroare se trece la pasul 5 pagina nou a fost creeat dup parametrii introdui tergere pagin: click dreapta scen click pe Rename/Delete Pagin se selecteaz opiunea tergere se selecteaz pagina din meniul din partea dreapt click OK, n cazul unei erori se va face selecia pe campul cerut
Butoane
Scen
74
Capitolul 7 III. 1. 2. 3. 4. 5. 6. IV. 1. 2. 3. 4. 5. 6. V. Redenumire pagin: click dreapta scen click pe Rename/Delete Pagin se selecteaz opiunea Rename se selecteaz pagina din meniul din partea dreapt se completeaz camp Denumire click OK, n cazul unei erori se va face selecia pe campul cerut Modific elemente pagin click dreapta scen click pe Rename/Delete Pagin se selecteaz opiunea Modific Elemente se selecteaz pagina din meniul din partea dreapt se completeaz camp Denumire/Scop click OK, n cazul unei erori se va face selecia pe campul cerut
Adugare component text: 1. click pe butonul Text 2. deseneaz elementul: a. click pe scen n locul care urmeaz s devin colul stnga sus al textului b. se ine click-ul apsat i se deseneaz mrimea componentei text c. se las click-ul 3. completare dialog 4. click OK, n cazul unei erori, se va modifica campul notificat prin eroare
Figura 7.2 stnga Operaia de desenare; dreapta Dialogul de afiare; componentele Exterioare Activate VI. Modificare element text 1. Click pe elementul care urmeaz a fi modificat 2. Se pot face una din urmtoarele opiuni: a. adugare/tergere caractere 75
Capitolul 7 b. setare text bold i. se selecteaz textul care urmeaz a fi schimbat ii. se efectueaz click pe butonul B c. setare text italic i. se selecteaz textul care urmeaz a fi schimbat ii. se efectueaz click pe butonul I d. setare text underline i. se selecteaz textul care urmeaz a fi schimbat ii. se efectueaz click pe butonul U e. setare align i. se selecteaz unul dintre butoanele align, efectul este la nivelul componentei f. setare font i. se alege un tip de font; selecia este la nivelul componentei g. setare mrime i. se scrie o mrime n campul Size, mrimea este la nivelul componentei h. setare culoare text i. se selecteaz textul care urmeaz s fie colorat ii. se alege o culoare din colormixerul afiat i. setare hyperlink i. se alege texult care va conine un hyperlink ii. se efectueaz click pe butonul Hyperlink iii. se alege din lista de linkuri un link, dac este n interiorul site-ului se trece la pasul v. iv. se completeaz campul Hyperlink cu locaia ctre care se face redirecionarea v. se efectueaz click pe Create j. stergere hyperlink i. se sterg toate caracterele care aparin n hyperlink
Capitolul 7 VII. 1. 2. 3. 4. 5. VIII. 1. 2. 3. 4. 5. 6. IX. 1. 2. 3. 4. 5. tergere component text: click dreapta scen click pe Rename/Delete Component se selecteaz opiunea terge se selecteaz componenta din meniul din partea dreapt click OK, n cazul unei erori se va face selecia pe campul cerut Adugare imagine: click pe butonul Image completare campuri dialog click browse se selecteaz imaginea de pe discul local click OK, n cazul unei erori se va schimba campul completat greit deseneaz elementul (V.2.) tergere imagine: click dreapta scen click pe Rename/Delete Component se selecteaz opiunea terge se selecteaz componenta din meniul din partea dreapt click OK, n cazul unei erori se va face selecia pe campul cerut
Figura 7.4 Dialog Redenumire/tergere pagin X. Creeare component Facebook. 1. se efectueaz click pe opiunea Facebook 2. se efectueaz click pe butonul Create Custom FB Component 3. se deseneaz zona componentei 77
Capitolul 7 4. se completeaz dialogul cu o valoare unic 5. se efectueaz click pe butonul OK 6. se pot aduga componente FBInput; FBInput Text; FBPicture n mod asemntor cu o component text XI. 1. 2. 3. 4. XII. 1. 2. 3. 4. XIII. Adugare component Facebook se efectueaz click pe butonul Add FB Component se selecteaz componenta care urmeaz s fie adugat se efectueaz click pe butonul OK se deseneaz componenta Adugare component Other Se efectueaz click pe opiunea Other Se efectueaz click pe butonul Create Other Component Se scrie codul care urmeaz a fi inserat Se efectueaz click pe butonul OK.
Generare XML 1. se selecteaz locul unde va fi salvat fiierul 2. se efectueaz click pe save ncrcare XML 1. se selecteaz fiierul care urmeaz a fi ncrcat 2. se efectueaz click pe save 1. 2. 3. 4. Opiuni Site-Map schimb acces la pagin se efectueaz click pe butonul Site Map se selecteaz pagina se selecteaz accesul se efectueaz click pe butonul Set.
XIV.
XV.
7.2.2 Generatorul
Pentru afiarea generatorului se va accesa pagina indexGenerator.jsp. Acolo se vor afia informaiile legate de serviciul web. Toi utilizatorii vor gsi acolo o opiune de download WSDL i generare Site.
Capitolul 7 I. Download WSDL 1. se efectueaz click pe butonul download WSDL 2. se alege locaia/nuleme fiierului 3. se efectueaz click pe butonul OK Upload XML 1. se efectueaz click pe butonul Generate Site 2. se alege locaia/nuleme fiierului 3. se efectueaz click pe butonul Ok Download ZIP 1. se efectueaz click pe butonul download ZIP 2. se alege locaia/nuleme fiierului 3. se efectueaz click pe butonul OK
II.
III.
7.2.3 Site
Fiecare site generat conine un meniu. Acest meniu ofer accesul n interiorul paginilor generate. Pentru accesarea paginilor speciale, specifice fiecrui site, este nevoie de accesarea paginii login.php. Dup introducerea numelui i parolei contului de administrator (user/parol implicit admin/admin), se vor afia opiunile de schimbare a structurii site-ului:
Figura 7.6 Meniu Administrator tergerea unei pagini se efectueaz click pe butonul terge pagin n noua pagin se selecteaz pagina care urmeaz s fie tears se efectueaz click pe butonul ok se va afia un dialog care noptific dac operaia a fost realizat cu succes II. Modificarea unei pagini 1. se efectueaz click pe butonul de modificare pagin 2. se modific coninutul elementului care se dorete a fi modificat 3. se efectueaz click pe butonul Salvare III. Adugarea unei pagini 1. 2. 3. 4. 79 I.
Capitolul 7 1. 2. 3. 4. 5. IV. 1. 2. 3. 4. 5. V. 1. se efectueaz click pe butonul adaugare pagin se selecteaz modelul de pagin dup care se dorete efectuarea unei clone se efectueaz click pe butonul OK se modific coninutul elementului care se dorete a fi modificat se efectueaz click pe butonul Adaug Schimbare parol se efectueaz click pe butonul Schimbare Parol se introduce vechea parol n cmpul parol veche se introduce noua parol n cmpul parol nou se introduce noua parol n cmpul repetare parol nou se efectueaz click pe butonul Schimba Parol Delogare Se efectueaz click pe butonul Logout
80
Capitolul 8
Capitolul 8.
Concluzii
Aplicaia ndeplinete obiectivele generale propuse. Generatorul creeaz un site Web 3.0 funcional, care poate fi folosit oricnd de ctre utilizator. Editorul ajut utilizatorul n dezvoltarea unui site, oferind un set de operaii de tipul CAD. Site-ul generat este personalizat dup preferinele utilizatorului. De asemenea, aplicaia respect majoritatea cerinelor prezentate n capitolul dedicat analizei, capitolul 4. Totui exist anumite aspecte care trebuie nbuntite, reevaluate sau modificate.
Video
Da
Uurin n utilizare Acces de oriunde Release-cycle Reele de socializare Adugare de coninut de ctre utilizator
Uor Nu Da Nu
Da
Nu
Capitolul 8 Partial trebuie definit de utilizator Partial trebuie Da definit de utilizator Aspecte Generale Partial trebuie definit de utilizator Nu
Semantic Web
Da
SVG
Editare Parial Da componente Inserare cod Parial Da server-side component other Modificare cod Nu Da pagin Complexitate Redus Foarte Ridicat opiuni disponibile Pagini speciale Da Nu Optimizare Mediu Performant Resurse utilizate Minim Mediu/Avansat de ctre client Arhivare ZIP Da Nu Elemente grafice Minimal Bogat Tabelul 8.1 Comparaie Proiect/Dreamweaver/Amaya
Avantajele Aplicaiei Generator Web 3.0: Proiectul permite o dezvoltare mai uoar i complet a caracteristicilor Web 2.0/3.0 dect celelalte dou aplicaii. Uurina n utilizare se datoreaz i uurinei de manipulare a aplicaiei. Fr s fie suprancrcat cu diverse opiuni, utilizatorul completeaz doar elementele cele mai importante ale paginii. Procesul de generare necesit o serie de citiri/scrieri repetate. Acestea pot ocupa foarte mult din memorie/timp de execuie. Aplicaia conine o serie de constrngeri i citiri speciale care duce la executarea optim a operaiilor. Aplicaia folosete mai puine resurse ca oricare dintre celelate dou aplicaii. Dezavantajele Aplicaiei: Proiectul nu prezint o posibilitate de modificare a codului HTML care urmeaz a fi generat. Acest dezavantaj nu prezint o importan deosebit, aplicaia este destinat celor care nu au cunotiine de programare. Un alt dezavantaj al aplicaiei este legat de elementele grafice ale componentelor. Aplicaia conine un nivel minimal de elemente grafice. Proiectul este centrat pe funcionalitate, nu pe elemente grafice. Ele pot fi adugate oricnd n aplicaie, logica din spatele fiecrei componente rmne la fel. Pe baza Tabelului 8.1, mpreun cu avantajele prezentate de ctre Aplicaia Generator Web 3.0, se poate observa un probabil nivel ridicat de competivitate cu celelalte dou aplicaii. Aceast competivitate se reflect fa de inta de utilizatori urmrit de aplicaie.
82
Capitolul 8 n cazul utilizatorilor experimentai, este nevoie de dezvoltarea unor funcionaliti care s permit modificarea codului HTML din interiorul Editorului. Aceste cerine, mpreun cu cteva nbuntiri, fac obiectul subcapitolului dedicat dezvoltrii/nbuntirii - 8.2.
Posibile dezvoltri/nbuntiri
Fiecare component poate fi nbuntit fie prin adugarea de funcionaliti, fie prin nbuntirea unor funcionaliti deja existente, fie prin rezolvarea unor probleme care au aprut n etapa de testare. Este util o prezentare a unor nbuntirilor generale, urmate de nbuntirile propuse la nivelul fiecrei componente n parte. Prin aceast abordare se evit repetarea unor cerine specifice mai multor componente.
8.2.2 Editor
Componenta Editor necesit cele mai multe dezvoltri/nbuntiri. Aceast afirmaie se bazeaz pe calitatea de component Front End al proiectului. Dac se dorete includerea utilizatorilor experimentai n targetul de utilizatori ai aplicaiei, este necesar dezvoltarea unei alternative vizuale, dedicat utilizatorilor expert. Acest alternativ va trebui s conin opiuni complexe de editare a codului, mpreun cu opiuni de particularizare a elementelor inserate n pagin. Forma normal, dedicat utilizatorilor necunosctori de programare, trebuie nbuntit prin adugarea unor opiuni generale de editare HTML. Aceste opiuni mpreun cu opiunile formei alternative se rezum la: adugare elemente grafice n cadrul aplicaiei JSP adugare elemente grafice n cadrul aplicaiei Flash mai multe opiuni de vizualizare/verificare 83
Capitolul 8
validator a paginilor HTML generate creearea posibilitii de salvare template posibilitate de scriere/modificare cod HTML mai multe opiuni legate de elementele HTML nbuntiri 8.2.1
8.2.3 Generator
Modificrile realizate n interiorul generatorului sunt minimale. Ele se rezum la adugarea unor tag-uri la citire i scriere. Fiecare component/element/atribut adugat n interiorul fiierului XML trebuie manipulat de ctre Generator. O potenial modificare a generatorului const n includerea aplicaiei Flash n interiorul Generatorului. Componenta generator va conine o metod care ntoarce, n formatul byte[], fiierul swf. Exist mai multe avantaje ale acestei abordri: nu mai trebuie salvat Aplicaia Flash n interiorul unui site, modificarea ulterioar a Aplicaiei Flash este realizat la toi clienii Generatorului; dar i o serie de dezavantaje: suprancrcarea Generatorului cu cereri, componentele Editor i Generator nu mai sunt independente. Alegerea rmne la nivelul dezvoltatorului. Pe lng aceaste nbuntiri, se mai poate aduga cteva opiuni suplimentare: posibilitatea accesrii pe baza unei arhitecturi REST XML-ul format greit s fie reconstruit nbuntiri 8.2.1
8.2.4 Site
Modificrile componentei Site izvoresc din modificrile Generatorului i Editorului. Orice opiune adugat n aceste dou componente este vizibil n site-ul generat. O alt potenial modificare const n adugarea de cod javaScript, folosit n redimensionarea paginii. n cazul n care se va face resize la browser, acest cod s repoziioneze i s miceasc/mreasc elementele paginilor, n funcie de mrimea ferestrei browserului. Cteva nbuntiri ulterioare care pot fi adugate: adugarea unei logici de resize a paginilor mai multe pagini specifice fiecrui site, care ndeplinesc diferite sarcini elemente grafice n paginile specifice fiecrui site nbuntiri 8.2.1
84
Anexa
Anex
Prezenta anex conine o serie de informaii legate unele particulariti ale aplicaiei. Fiecare component fi prezentat individual.
A1 Editor
Anexa prezint elementele vizuale i funciile realizate de componenta editor.
Nume okBtnPage cancelBtnPage okBtnError okBtnRightPage cancelBtnRightPage okBtnRightComponent cancelBtnRightComponen t okBtnNewTextFieldPage cancelBtnNewTextFieldP age cancelBtnNewImage okBtnNewImage browseBtnNewImage okBtnSiteMap okBtnCreateCustomFBCo mponent cancelBtnCreateCustomF BComponent setAccessBtnPage
Tip SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton SimpleButton
Nume fundalPagina fundalEroare paginaLabel denumirePaginaLabel denumirePaginaInput scopPaginaLabel scopPaginaInput clonaPaginaLabel listPagina eroarePaginaLabel paginaRenameDeleteLab el paginaRenameDeleteLab elOperatie paginaRenameDeleteLab elPagina listOperatiiPagina listaComponentePagina paginaRenameDeleteLab
Tip Shape Shape TextField TextField TextField TextField TextField TextField TextField TextField TextField TextField TextField List List TextField 87
Anexa elDenumire paginaRenameDeleteLab elDenumireInput paginaRenameDeleteLab elDenumireInput paginaRenameDeleteLab elScop paginaRenameDeleteLab elScopInput scopNewTextFieldInput newImageLabel denumireNewImageLabe l denumireNewImageInput relevantaNewImageLabel relevantaNewImageInput altNewImageLabel altNewImageInput linkNewImageLabel siteMapDenumireLabel
okBtnAddFBComponent cancelBtnAddFBCompon ent okBtnAddOtherCompone nt cancelBtnAddOtherComp onent componentLabelDelete componentRenameDelete Label listaComponente componenteRenameDelet eLabel componenteRenameDelet eInput paginaRenameDeleteLabe l newTextFieldPaginaLabel denumireNewTextFieldLa bel denumireNewTextFieldIn put scopNewTextFieldLabel
SimpleButton SimpleButton SimpleButton SimpleButton TextField TextField List TextField TextField TextField TextField TextField TextField TextField
TextField TextField TextField TextField TextField TextField TextField TextField TextField TextField TextField TextField TextField TextField
A1.2 Controlerul
Orice element vizual prezint un comportament. Exemplu de adugare comportament:
sizeInpuInstance.addEventListener(Event.CHANGE,setSizeTextField); sizeInpuInstance.addEventListener(FocusEvent.FOCUS_OUT,setSizeTextFieldDefault); sizeInpuInstance.border = true; setSizeTextField(e:Event):void{ selectedTextField.setMarime(int(e.target.text)); updateChangedTextField(); } setSizeTextFieldDefault(e:Event):void{ if (e.target.text == "") { selectedTextField.setMarime(32); } }
88
Anexa
A1.3 Modelul
Componenta model conine un numr de funcii care ndeplinesc anumite funcionaliti. Un exemplu de funcie:
createNewExteriorPage(x:int,y:int,w:int,h:int,titlu:String,scop:String):ComponentaExterioara{ var pagina = new ComponentaExterioara(x,y,w,h,titlu,scop); pagina.setID(pagini.length); var paginaAux:Pagina = Pagina(pagina); pagini.push(paginaAux); return pagina; }
Antet funcie GenerateButton(textVar,culoare,w,h): SimpleButton GenerateLabel(textVal,x,y,w,h) : TextField GenerateInput(x,y,w,h): TextField GenerateList(x,y,w,h) : List GenerateTextArea(textVar,x,y,w,h) : TextArea GenerareFundalDialog(culoare, x, y, w, h, eW, eH):Shape GenerateInputSite(x,y,w,h): TextField updateListaPagina():void updateListaOperatiiPagina():void updateListaComponentePagina():void updateListaComponente():void errorMessege(messege:String):void updateAfisarePagini():void updateTextBtnPagina(denumirePagina:String,noulText:Stri ng):void createNewPage(titlu:String,scop:String):Pagina createNewExteriorPage(x:int,y:int,w:int,h:int,titlu:String,sc op:String):ComponentaExterioara createBtnPagina():void setFocusOnPagina(pagina:Pagina):void textFieldStartDrag() addTextField(x:int,y:int,x2:int,y2:int,denumireGenerica:Stri ng,relevanta:String):void updateTextFieldForm()
Funcionalitate Genereaz un buton Genereaz un label Genereaz un input Genereaz o list Genereaz un text Area Genereaz un fundal Genereaz un Input Realizeaz un update a listei paginilor Realizeaz un update a listei Operaii Pagin Realizeaz un update a listei Componente Pagin Realizeaz un update a listei deComponente a paginii vizualizate Creeaz o eroare Realizeaz un update a paginilor afiate Realizeaz un update a butonului unei pagini Creeaz o pagin nou Creeaz o pagin nou exterioar Creeaz o un buton a unei Pagini Afieaz o pagin n scen Iniializeaz nceputul operaiei de drag Adaug un Element TextField n pagin Realizeaz operaia de sincronizare ntre obiect i 89
Anexa Antet funcie updateStringFromTextFieldDown() Funcionalitate elementul vizual Realizeaz operaia de sincronizare ntre obiect i elementul vizual n cazul unei taste apsate Realizeaz operaia de sincronizare ntre obiect i elementul vizual n cazul unei taste eliberate Afieaz dialogul de opiuni a unui text Iniializeaz o posibil operaie de drag a unei componente Text Concluzioneaz operaia de drag a unei componente text Iniializeaz operaia de drag a unei componente Text Operaia de drag a unei componente Text Concluzioneaz operaia de drag a unei componente Text Deseneaz un dreptunghi folosit n desenarea unei componente Elibereaz scena de componentele paginii Insereaz n scen componentele paginii Genereaz pagina de index terge o pagin Schimb scopul unei pagini Iniializeaz operaia de drag a unei componente Imagine Realizeaz operaia de sincronizare ntre componenta Text i elementul vizual TextField n urma operaiei de resize Creaz un nou obiect de tipul TextFormat care 90
updateStringFromTextFieldUp()
showTextOptionsDialog():void initPossibleDragText(e):void disablePossibleDragText():void strtDragTextField():void dragTextField():void stpDragTextField():void drawContinousShape() clearStage() redrawStage() generateIndexPage() deletePagina(denumirePagina:String):void schimbaScop(denumirePagina:String, scopNou:String) imageFieldStartDrag():void updateResizedTextFiled(textField:TextField)
newFormatBIU(fontType:String,size:int,align:String):TextF
Anexa Antet funcie ormat loadXML() onFileSelected1() onFileComplete1() onInitBitmapLoad():void strtDragBitmap():void dragBitmap():void stpDragBitmap():void onInitBitmap():void initPossibleResize() initPosibleDrag():void disablePosibleDrag() addBitmapToScene(x:int,y:int,h:int,w:int,alt:String,link:Stri ng,location:String,denumire:String, relevanta:String) drawTemporalBitMap(x:int,y:int,h:int,w:int) onInitBitmap2():void Tabelul A2: Funciile realizate de Model Funcionalitate conine elementele de Bold Italic i Underline ncarc XML n scen Operaia realizat la selecia unei imagini Operaia realizat la ncrcarea unei imagini Operaia realizat dup adugarea unei imagini n Loader Iniializeaz operaia de drag a unei componente Imagine Operaia de drag a unei componente Imagine Concluzioneaz operaia de drag a unei componente Imagine Operaia realizat dup adugarea unei imagini n scen Iniializeaz o posibil operaie de resize unei componente Imagine Iniializeaz o posibil operaie de drag unei componente Imagine Concluzioneaz operaia de drag a unei componente Imagine Adaug o imagine n scen Deseneaz o imagine temporar Operaie realizat asupra imaginii temporare
A2. Generator
Componenta Generator conine o clas Operaii care realizeaz toate operaiile specifice generatorului. Ele sunt prezentate n tabelul A3. Funcia de transformare a fiierului XML n arhiva ZIP:
public static byte[] transform(byte[] XML){ Pagina[] pagini = Operatii.transformXmlToPages(XML); byte[][] componenteFisiere = null;
91
Anexa
try { componenteFisiere = transformXmlToComponents(XML); } catch (IOException ex) { Logger.getLogger(Operatii.class.getName()).log(Level.SEVERE, null, ex); } String[] paginiHTML = generateCode(pagini); return generateZip(pagini, paginiHTML,componenteFisiere,XML); }
Antet Funcie public static byte[] generateZip(Pagina[] pagini, String[] paginiHTML, byte[][] componenteFisiere,byte[] XML) public static String fbInputCode() public static String fbPictureCode() public static String fbHistoryCode() public static String[] generateCode(Pagina[] pagini) private static byte[][] generatePhpFiles() public static Pagina[] transformXmlToPages(byte[] XML) public static byte[][] transformXmlToComponents(byte[] XML) public static byte[] zipBytes(int nrComponents, String[] filenames, byte[][] input) Tabelul A3: Funciile Generatorului
Funcionalitate Creeaz tipurile de obiecte necesare unei arhivri, apoi trimite ctre operaia zipBytes spre arhivare. Fiierul arhivat este oferit ca rezultat al funciei Genereaz codul componentei facebook input Genereaz codul componentei facebook picture Genereaz codul componentei facebook history input Genereaz codul HTML pe baza obiectelor Pagina Genereaz codul paginilor specifice oricrui site Transform fiierul XML n obiecte de tipul Pagin Transform imaginile din interiorul fiierului XML n elemente de tipul byte. Arhiveaz paginile generate
92
Anexa
A3. Site
Site-ul generat conine paginile desenate de ctre utilizator i un set de pagini specifice oricrui site. Acestea sunt prezentate n taelul A4. Pagina Funcionalitate adaugare_pagina Adauga o pagin cloneaza Cloneaza o pagin existent dashboard Pagina de social dashboard downloadXML Pagina de download a fiierului XML sterge_pagina Sterge o pagin login Logare ca administrator Menu Meniul administatorului logout Delogare schimbare_parola Schimb parola administratorului modifica_pagina Modific o pagin existent Tabelul A4: Paginile specifice oricrui site
93