This is an old revision of the document!


Activitate de Laborator

aipi2014-lab02-eclipse.zip

aipi2014-lab02-netbeans.zip

Rezolvarea fiecarui exercitiu va fi realizata ca metoda distincta in clasa Bookstore din pachetul ro.cs.pub.aipi.main, denumita exerciseX, unde X reprezinta numarul exercitiului.

Se doreşte proiectarea unei aplicaţii care exploatează o bază de date ce urmează să fie integrată în cadrul unui sistem ERP pentru o librărie care comercializează doar cărţi. Se va porni de la schema conceptuală, respectiv de la structura bazei de date construite în cadrul laboratorului anterior.

  1. [0 puncte] În MySQL Workbench, să se execute script-ul Laborator2l.sql unde se crează structura şi diferite obiecte ale bazei de date libarie.
    În clasa Constants din pachetul ro.pub.cs.aipi.general, să se modifice valoarea constantei DATABASE_PASSWORD cu cea corespunzătoare sistemului de gestiune pentru baze de date instalat pe maşina proprie.
  2. [10 puncte] În clasa DataBaseWrapperImplementation din pachetul ro.pub.cs.aipi.dataaccess, să se implementeze metoda getTableNumberOfRows() care determină numărul de înregistrări al unei tabele identificata prin nume (primit ca parametru).
    public int getTableNumberOfRows(String tableName) throws SQLException;
  3. [20 puncte] Folosind metoda getTableContent(), să se creeaze un fişier books.txt in directorul output care sa contina lista tuturor cărţilor disponibile în librărie (existente pe stoc).
    Pentru fiecare carte în parte se va preciza numele şi prenumele autorilor (in situatia in care o carte nu are un autor, se va preciza sirul de caractere * * *), titlul, editura precum şi anul apariţiei, separate prin TAB.
  4. [10 puncte] Să se introduca în tabela user o înregistrare ale cărei atribute sunt introduse de la tastatură.
    Pentru a citi o valoare de la tastatură în Java, se poate folosi următorul cod sursă:
    Scanner scanner = new Scanner(System.in);  
    value = scanner.nextLine();
    // ...
    scanner.close();
  5. [10 puncte] Pe baza metodei updateRecordsIntoTable(), să se modifice toate comenzile de aprovizionare către editura Harlequin(id = 50, registered_number = 510636670) astfel încât cantităţile să fie crescute cu 20%.
    Modificările nu vor fi operate decât asupra comenzilor care au fost deja livrate (state='delivered').
  6. [20 puncte] În clasa DataBaseWrapperImpl din pachetul ro.pub.cs.aipi.dataaccess, să se implementeze metoda deleteRecordsFromTable() care elimină dintr-o tabelă identificată prin nume (primit ca parametru) acele înregistrări care au anumite valori corespunzătoare unor atribute sau care respectă o anumită condiţie.
    public void deleteRecordsFromTable(String tableName, ArrayList<String> attributes, ArrayList<String> values, String whereClause) throws SQLException, DataBaseException

    Dacă attributes = (attribute1, …, attributen), respectiv values = (value1, …, valuen), atunci vor fi şterse înregistrările pentru care attribute1=value1 AND … AND attributen=valuen sau pentru care este îndeplinită condiţia whereClause. În cazul în care sunt precizate attributes / values, parametrul whereClause va fi ignorat.
    Folosind metoda deleteRecordsFromTable() astfel implementată să se şteargă acele edituri care nu au cărţi comercializate de librarie.

  7. [10 puncte] Folosind procedura stocată calculate_user_total_invoice_value să se determine lista utilizatorilor împreună cu valoarea totala a facturilor asociate fiecăruia. Informatiile vor fi plasate sub forma cod numeric personal TAB valoarea totala a facturilor, cate o informatie pe un rand, in fisierul user_total_invoce_value.txt din directorul output.
  8. [10 puncte] Folosind funcţia stocată calculate_supply_order_value să se determine lista editurilor către care s-au efectuat cele mai mari plăţi. Informatiile vor fi plasate sub forma denumire factura TAB valoarea totala a comenzilor de aprovizionare, cate o informatie pe un rand, in fisierul publishing_house_total_supply_order_value.txt din directorul output, realizandu-se o ordonare descrescatoare in functie de valoarea totala a comenzilor de aprovizionare.
  9. [10 puncte] În clasa DataBaseWrapperImplementation din pachetul ro.pub.cs.aipi.dataaccess, să se implementeze metoda getReferrences() ce determină pentru o tabelă dată prin nume (primit ca parametru) care sunt tabelele pe care le referă, precum şi atributele care fac obiectul constrângerii de tip FOREIGN KEY. Metoda intoarce o lista de obiecte de tip Referrence care contine denumirea tabelei copil si atributul dependent din cadrul acesteia precum si denumirea tabelei parinte si atributul referit din cadrul acesteia.
    Pe baza acestei metode, sa se creeze fisierul foreign_key_constraints.txt in directorul output care contine toate constrangerile de tip cheie straina sub forma tabela_copil/atribut_copil referrences tabela_parinte/atribut_parinte, cate o inregistrare pe un rand.
  10. [10 puncte] Folosind un obiect de tip RowSet deconectat, să se afişeze cărţile comercializate de editură (precizându-se titlul şi preţul lor), numele editurii care le-a publicat, numele colecţiei şi numele domeniului din care fac parte.
  11. [10 puncte] Să se filtreze colecţia de date anterioară astfel încât să conţină numai cărţile având preţul cuprins între 1000 şi 5000.
laboratoare/laborator02.1413788548.txt.gz · Last modified: 2014/10/20 10:02 by Andrei Roșu-Cojocaru
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0