C.V.

 
 

       9.4 Implementarea partii de administrare a magazinului virtual "adi"

       9.4.1 Mod de acces

       Pentru administrare se acceseaza pagina web: http://localhost:8080/adi/login.html Aici i se cere utilizatorului sa-si prezinte identitate furnizand un nume de cont si o parola. Daca accesul se realizeaza cu Apache atunci pagina este http://localhost/adi/login.html.

       9.4.2 Roluri de utilizatori

       Pentru administrarea magazinului au fost creati initial trei utilizatori cu roluri specifice: Operator - aceste se conecteaza cu numele de cont "operator" si cu parola "operator"; rolul sau este acela de a adauga produse noi in magazinul virtual, in subcategoriile specifice, de a sterge produse care nu mai exista in stocul real si de a face modificari in campurile produselor (de exemplu modificarea pretului in raport cu inflatia sau modificarea pozitiei produsului pentru a-l scoate in evidenta).Vanzator - acesta se conecteaza cu numele de cont "vanzator" si parola "vanzator". Rolul sau este de a urmari comenzile primite de la clienti, de a verifica datele clientului si la sfarsit sa schimbe stare unei comenzi accesate cu una din variantele: "Noi", "Vazute", "In curs", "Realizate" si "Anulate".Administrator - acesta are drepturi complete asupra tuturor operatiilor care se efectueaza in cadrul magazinului; el poate avea rolul operatorului, cel al vanzatorului si, suplimentar poate adauga, modifica sau sterge subcategorii.

       9.4.3 Structura arborescenta a elementelor statice si dinamice pentru partea de administrare, pana la roluri

Fgura 9.4.3

       9.4.4 Structura arborescenta a elementelor dinamice pentru partea de administrare, pentru rolul de operator

Fgura 9.4.4

       9.4.5 Structura arborescenta a elementelor dinamice pentru partea de administrare, pentru rolul de vanzator

Fgura 9.4.5

       9.4.6 Structura arborescenta a elementelor dinamice pentru partea de administrare, categorii

Fgura 9.4.6

       9.4.7 Explicarea roului elementelor statice(.html) si dinamice(.java) folosite

- login.html

       Pagina web de primire pentru intrarea in partea de administrare a magazinului virtual. Este compusa dintr-o nota informativa si doua casute de tip text pentru introducerea datelor utilizatorului.

- login.java

       Este servletul catre care pointeaza pagina login.html. Rolul sau principal este acela de a crea o conexiune la baza de date Mysql, cu parametrii preluati din contextul aplicatiei, ca parametri initiali, si de a verifica existenta utilizatorului cu numele de cont si cu parola furnizate ca parametri de catre formularul din pagina login.html. Daca nu exista utilizatorul specificat in baza de date atunci se returneaza mesajul:
nume-log - Nu este un utilizator al acestei baze de date
       Daca a fost gasit utilizatorul cu numele de cont si parola primite atunci, functie de rolul sau, este apelat unul dintre servlet-urile "admin" - pentru administrare, "opert" pentru operator, "vanz" pentru vanzator. Tot aici sunt salvate in sesiune rolul si numele de cont ale utilizatorului.

- admin.java

       Acest servlet este apelat atunci cand utilizatorul are rolul de administrator. Sarcina sa este de a furniza trei butoane de optiuni pentru a se lucra asupra produselor din baza de date, asupra subcategoriilor sau asupra comenziilor. Servlet-urile catre care pointeaza aceste butoane sunt: comen.java, opert.java si categ.java.

- opert.java

       Numele de cont al utilizatorului apare in partea de sus a paginii realizate de opert.java.
       Daca utilizatorul este "administrator" atunci servlet-ul va raspunde utilizatorului cu o pagina web avand in coltul stanga sus un buton "Administrare" care, la apasare, trimite utilizatorul inapoi la pagina in care alege varianta de lucru, ca administrator, generata de servlet-ul admin.java.
       Daca utilizatorul este "operator" cererea lui este directionata direct catre acest servlet. Conexiunea la baza de date Mysql nu mai este realizata inca o data ea fiind preluata ca starea a sesiunii curente. Acest servlet interogheaza baza de date si afiseaza toate subcategoriile, in ordinea categoriilor din care fac parte. Deasemenea pune utilizatorul sa aleaga o subcategorie prin selectarea butonului radio afisat la dreapta acesteia. La un moment dat o singura subcategorie poate fi selectata. Butonul radio din dreptul fiecarei subcategorii are numele subcat si valoarea numarul\codul subcategoriei. Pentru a merge in pagina urmatoare utilizatorul trebuie sa leaga deasemenea o operatie, tot prin selectarea unui buton radio:
out.println("<input type=radio name=subcat value=" + rs.getString(2) + "> ");
Cererea realizata prin intermediul acestei pagini web, generate de servlet-ul opert.java, este directionata catre servlet-ul opalt.java.

- opalt.java

       Servlet-ul opalt.java primeste de la utilizator selectia operatiei si a categoriei in care va avea loc aceasta operatie; el la randul sau deleaga unul din servlet-urile carora li se adreaseaza cererea, conform cu operatia ceruta. Deasemenea daca cheama servlet-ul admin daca utilizatorul are rolul de administrator si doreste sa revina la pagina principala(in care alege modul de lucru). In functie de operatire cererea utilizatorului este delegata catre unul din servlet-urile: insed, sterg sau modif.

- insed.java

       Daca operatia solicitata de utilizator este cea de inserare atunci parametrii cererii sunt trimisi la servlet-ul inser. Acesta ii ofera utilizatorului posibilitatea de a se intoarce la alegerea unei subcategorii si a unei operatii sau sa valideze datele pe care le introduce. Utilizatorul poate completa simultan pana la 3 produse noi, carora le poate pune aceeasi imagine sau imagini diferite (upload). Suma in ko a dimensiunilor imaginilor luate in ansamblu nu trebuie sa depaseasca 15ko. Campurile care pot fi completate sunt: denumire, unitate de masura, pret unitar, explicatii, pozitie, si imaginea produsului. Numarul produsului in subcategorie precum si codul produsului, cheie primara in baza de date, se completeaza automat, prin program. Pozitia produsului in lista de produse din aceeasi subcategorie este implicit pusa de la 1 la 3, in ordinea celor trei inregistrari posibile. Pozitia 1, 2, sau 3 semnifica faptul ca la vizualizare produsul va fi in prima pagina vazuta de client, intre primele trei. Pentru a fi validata o introducere este necesar si obligatoriu ca sa fie completat campul "denumire". Dupa completarea datelor, utilizatorul, la apasarea butonului "validare", apeleaza servlet-ul iner.java.

- inser.java

       Acest servlet este apelat de catre servlet-ul insed.java pentru a introduce datele completate de utilizator in baza de date. Fisierele imagine atasate nu sunt salvate in baza de date ci in directorul cu denumirea "/adi/imagini/alimente/cxx" unde xx este numarul subcategoriei in care se insereaza produsele. Deoarece se pot face upload-uri multiple, pana la trei produse in acelasi timp, fisierele imagine se salveaza la inceput sub forma 1.tip_1, 2.tip_2, 3.tip_3, pentru a nu se sterge sau modifica numele pentru cazul in care cele trei (sau 2) fisiere au aceeasi denumire. Chiar daca imaginea este aceeasi se considera astefel ca sunt fisiere distincte. Atunci cand se citesc parametrii upload-ului si se salveaza in baza de date, daca nu s-a completat campul denumire produs atunci fisierul atasat, daca exista, se sterge. Daca campul denumire este completat atunci fisierul atasat, daca exista, este redenumit din x.tip_x in codp.tip_x unde x este de la 1 la 3 iar codp este codul produsului. Exemplu de fisier upload-at:
10183927312.jpg
unde 10183927312 este codul produsului iar jpg este tipul fisierului.

- modif.java

       Daca operatorul a ales ca operatie modificarea unor produse dintr-o categorie atunci acest servlet va afisa catre utilizator o lista cu produsele existente in baza de date, pentru categoria solicitata. Deasemenea i se vor pune la dispozitie doua butoane, next si prev, pentru deplasarea in pagini daca sunt mai multe. Folosind butoanele radio utilizatorului i se permite sa aleaga la un moment dat un singur produs. Dupa selectia produsului dorit editarea modificari acestuia este delegata catre servlet-ul opmod.java.

- opmod.java

       Acest servlet se comporta ca un demultiplexor, in functie de cererea utilizatorului delegand executia sarcinilor fie la servlet-ul "modif", cand s-a apasat unul dintre butoanele next sau prev, fie la lista cu subcategorii, pentru alegerea unei alte operatii si a unei alte subcategorii, fie la servlet-ul "mdpro", atunci cand se valideaza modificarile facute.

- mdpro.java

       La fel ca la operatia de inserare este necesara editarea modificarilor. Acesta ii ofera utilizatorului posibilitatea de a se intoarce la alegerea unei subcategori si a unei operatii sau sa valideze datele pe care le introduce. Utilizatorul poate modifica inclusiv imaginea de produsului, de o dimensiune mai mica de 15ko. Campurile care pot fi completate sunt: denumire, unitate de masura, pret unitar, explicatii, pozitie, si imaginea produsului. Numarul produsului in subcategorie precum si codul produsului, cheie primara in baza de date, se completeaza automat, prin program. Pentru a fi validata o introducere este necesar si obligatoriu ca sa fie completat campul "denumire", sa nu fie sters din greseala. Dupa modificarea datelor, utilizatorul, la apasarea butonului "validare", apeleaza servlet-ul execm.java pentru executia modificarii.

- execm.java

       Rolul servlet-ului execm este acelasi cu al servletului inser.java cu deosebirea ca acum se face o operatie "update". Daca pozitia produsului ramane neschimbata atunci operatie este una singura: se modifica prin "update" campurile dorite de utilizator. Daca insa pozitia, se pune la inceput produsul in pozitia 0 (observatie- nu se vor face doua modificari in acelasi timp in baza de date) si se scade cu o unitate pozitia tuturor produselor de deasupra pozitiei vechi a produsului ( se astupa gaura lasata prin mutarea prodului in alta pozitie), iar daca pozitia noua nu este ultima pozitie + 1 atunci se muta toate produsele din noua pozitie in sus cu o unitate pe "a face loc" mutarii produsului. Campurile produsului se vor schimba prin update, inclusiv campul pozitie.

- sterg.java

       Acest servlet este apelat pentru a se sterge produse dintr-o subcategorie. El permite utilizatorului cautarea in pagini a produselor pe care doreste sa le stearga, prin folosirea butoanelor "next" si "prev". Selectarea produselor care vor fi sterse se face prin checkbox-uri. Se poate anula selectia prin butonul "Anulare". Deasemenea utilizatorul poate reveni in pagina in care alege operatia dorita, generata de opert.java.

- opste.java

       Acest servlet functioneaza ca un demultiplexor, delegand executia operatiilor cerute de utilizator catre servlet-urile sterg, stsel si opert, in functie de butoanele apasate.

- stsel.java

       Acest servlet executa stergerea produselor selectate in pagina generata de servlet-ul sterg. Dupa stergere se apeleaza din nou servlet-ul sterg, pentru a se selecta alte prduse ce vor fi sterse. Atunci cand un produs este sters pozitia produselor de "deasupra" sa este scazuta cu o unitate, pentru a umple golul lasat prin stergere.

- comen.java

       Acest servlet listeaza comenzile realizate de catre clienti pentru o anumita zi. La inceput, cand nu este selectata ziua, utilizatorul are la dispozitie trei casute de editare pentru a specifica anul, luna si ziua comenzilor pe care doreste sa le vada. El mai poate sa aleaga deasemenea tipul\starea comenzzilor care vor fi afisate. Comenzile pot fi in una din urmatoarele grupe: "Noi", "Vazute", "In curs", "Realizate", "Anulate". Comenziile sunt listate incepand cu campul codc, care este in acelasi timp buton de selectie al comenzii. Urmeaza contul utilizatorului, cerintele de realizare in limita a treizeci de caractere si timpul la care a fost efectuata comanda de catre client.

- opcom.java

       Acest servlet are rol de demultiplexor trimitand cereintele catre servlet-urile admin.java, comcl.java sau comen.java.

- comcl.java

       Acet servlet afiseaza comanda aleasa. In primul rand utilizatorul poate sa schimbe starea comenzii. Sunt listate datele comenzii(codc, data, cerinte), datele clientului complete, lista de produse din comanda.

- stcom.java

       Servlet-ul acesta schimba starea comenzii punand-o intr-una din grupele: "Noi", "Vazute", "In curs", "Realizate", "Anulate". Apeleaza apoi servlet-ul comen.java.

- categ.java

       Acest servlet este apelat de utilizatorii cu rol de administrator sau de vanzator. El listeaza toate categoriile si permite alegerea unei singure, la un moment dat, prin folosirea de butoane radio. Utilizatorul trebuie deasemenea sa aleaga o operatie: stergere, modificare sau adaugare. In cazul in care utilizatorul are rol de administrator atunci el se poate intoarce la pagina generata de servlet-ul admin.java.

- opcat.java

       Este un demultiplexor pentru cererea utilizatorului delegand executia sarcinilor catre servlet-urile: edcat.java, stect.java sau malct.java.

- edcat.java

       Pentru a se introduce noi subcategorii intr-o categorie existenta este apelat acest servlet. El genereaza o casuta de editare in care se trece denumirea subcategoriei care se creaza, si doua butoane, unul pentru validare si celalalt pentru revenire a la pagina cu categorii.

- insct.java

       Daca s-a validat subcategoria introdusa in pagina generata de servlet-ul edcat.java atunci ea este introdusa in baza de date si se revine din nou in pagina de editare.

- stect.java

       Daca s-a selectat operatia de stergere acest servlet fuenizeaza o lista cu subcategoriile din categoria selectata, asociindu-le un buton radio pentru selectia subcategoriei care se va sterge. Nu se pot sterge subcategorii care contin inca produse. Pentru a le sterge mai intai trebuie sterse produsele din subcategorie. Utilizatorul poate sa aleaga optiunea de stergere sau sa se intoarca din nou la pagina cu categorii.

- stsct.java

       Acest servlet est apelat pentru a duce la indeplinire operatia de stergere a subcategoriei selectate in pagina generata de servlet-ul stect.java. El face trimiterea apoi, din nou, la servlet-ul stect.java.

- malct.java

       Daca optiunea aleasa a fost operatia de modificare a unei subcategorii existente atunci acest servlet listeaza subcategoriile din categoria aleasa, impreuna cu butoane radio pentru selectia subcategoriei care se modifica. Utilizatorul poate sa se intoarca inapoi la pagina cu categorii sau sa ceara modificare subcategoriei alese.

- medct.java

       Dupa ce a ales subcategoria pe care vrea s-o modifice utilizatorul are la dispozitie o casuta de editare pentru a face modificarea dorita. Deasemenea el poate reveni la pagina de categorii.

- msbct.java

       Sarcina efectuarii denumirii subcategoriei este realizata de acest servlet. Dupa executia sarcinii el deleaga din nou servlet-ul malct.java pentru alte modificari.


 
 
C.V.
 
Hosted by www.Geocities.ws

1