This shows you the differences between two versions of the page.
poo-ca-cd:teme:proiect:etapa1 [2023/11/05 22:30] florian_luis.micu |
poo-ca-cd:teme:proiect:etapa1 [2023/11/24 21:25] (current) andrei.otetea [Proiect GlobalWaves - Etapa 1 - Audio Player] |
||
---|---|---|---|
Line 7: | Line 7: | ||
* **Colaboratori:** [[sorinabuf@gmail.com | Sorina-Anamaria Buf]], [[stefancocioran@gmail.com | Ștefan Cocioran]], [[miculuis1@gmail.com | Florian-Luis Micu]] | * **Colaboratori:** [[sorinabuf@gmail.com | Sorina-Anamaria Buf]], [[stefancocioran@gmail.com | Ștefan Cocioran]], [[miculuis1@gmail.com | Florian-Luis Micu]] | ||
* **Data publicarii: ** 05.11.2023, ora 23:00 | * **Data publicarii: ** 05.11.2023, ora 23:00 | ||
- | * **Deadline HARD: ** 20.11.2023, ora 23:59 | + | * **Deadline HARD: ** 25.11.2023, ora 7:59 |
- | * **Ultima modificare a cerinței: ** 05.11.2023, ora 23:00 | + | * **Ultima modificare a cerinței: ** 14.11.2023, ora 19:00 (clarificari extra next) |
- | * **Ultima modificare a scheletului: ** 05.11.2023, ora 23:00 | + | * **Ultima modificare a scheletului: ** 07.11.2023, ora 17:27 (am adaugat un comentariu de TODO ca sa stiti de unde incepe implementarea) |
+ | * **Ultima modificare a testelor: ** 14.11.2023, ora 10:30 (cateva ref-uri modificate minimal testele 16, 17) | ||
* ** Schelet: ** [[https://github.com/oop-pub/oop-project-2023/tree/main/etapa1]] | * ** Schelet: ** [[https://github.com/oop-pub/oop-project-2023/tree/main/etapa1]] | ||
+ | |||
+ | |||
+ | * ** Atentie! ** Pentru partea de citire / afisare nu este necesara folosirea adnotarilor din libraria Jackson. Puteti utiliza o metoda similara cu cea prezentata de noi in schelet, si anume sa va folositi de clasa ObjectMapper. **Nu exista o metoda corecta sau gresita de a lucra cu input-ul / output-ul.** Scopul nostru in cadrul acestui proiect nu este sa va testam abilitatea de a lucra cu fisierele, ci sa va testam atat intelegerea cunostintelor de baza dobandite in cadrul cursurilor si a laboratoarelor, cat si modul de gandire intr-un limbaj de programare orientat obiect. | ||
====== Obiective ====== | ====== Obiective ====== | ||
Line 128: | Line 132: | ||
* by name -> se verifica dacă numele melodiei incepe cu textul specificat in filtru | * by name -> se verifica dacă numele melodiei incepe cu textul specificat in filtru | ||
* by album -> se da tot numele albmului si trebuie verificat daca melodia face parte din acel album | * by album -> se da tot numele albmului si trebuie verificat daca melodia face parte din acel album | ||
- | * by tags -> se va da o lista cu tag-uri si trebuie ca unul sau mai multe dintre tag-uri sa fie prezente in melodie | + | * by tags -> se va da o lista cu tag-uri si trebuie ca melodia sa aiba toate tag-urile specificate |
* by lyrics -> se va da un cuvant sau o fraza; melodia trebuie sa contina respectivul sir ce caractere | * by lyrics -> se va da un cuvant sau o fraza; melodia trebuie sa contina respectivul sir ce caractere | ||
* by genre -> se va specifica un gen muzical; se verifică dacă melodia face parte din acel gen muzical | * by genre -> se va specifica un gen muzical; se verifică dacă melodia face parte din acel gen muzical | ||
Line 164: | Line 168: | ||
====Timestamp==== | ====Timestamp==== | ||
- | Pentru a simula caracterul real al alpicatiei, comenzile au un camp numit "timestamp", care precizeaza la ce secunda s-au exececutat fata de inceputul testului (momentul t0). Fiecare comandă este executată instantaneu într-un moment de timp. Timpul este comun pentru toți utilizatorii, si trece constant, indiferent de comenzile primite. Astfel, nu vom putea avea o comanda cu timestamp-ul "30" pentru "user1", urmata de o comanda cu timestamp-ul "20" pentru "user2" (o comanda cu timestampul "t" marcheaza faptul ca toti utilizatorii se afla la momentul de timp "t"). De asemenea, trebuie simulat ce se întâmplă între momentele de timp, în cazul nostru, starea în care se află player-ul utilizatorului curent (la ce track a ajuns, dacă s-a oprit rularea etc.). | + | Pentru a simula caracterul real al alpicatiei, comenzile au un camp numit "timestamp", care precizeaza la ce secunda s-au executat fata de inceputul testului (momentul t0). Fiecare comandă este executată instantaneu într-un moment de timp. Timpul este comun pentru toți utilizatorii, si trece constant, indiferent de comenzile primite. Astfel, nu vom putea avea o comanda cu timestamp-ul "30" pentru "user1", urmata de o comanda cu timestamp-ul "20" pentru "user2" (o comanda cu timestampul "t" marcheaza faptul ca toti utilizatorii se afla la momentul de timp "t"). De asemenea, trebuie simulat ce se întâmplă între momentele de timp, în cazul nostru, starea în care se află player-ul utilizatorului curent (la ce track a ajuns, dacă s-a oprit rularea etc.). |
Line 176: | Line 180: | ||
De asemenea, căutarea se face din perspectiva utilizatorului, ceea ce înseamnă că 2 utilizatori pot avea rezultate diferite atunci când caută ceva. | De asemenea, căutarea se face din perspectiva utilizatorului, ceea ce înseamnă că 2 utilizatori pot avea rezultate diferite atunci când caută ceva. | ||
+ | <note important> | ||
+ | |||
+ | Cand se ruleaza acesta comanda, se scoate sursa care era incarcata in player. Astfel, dupa un search, indiferent de rezultatul returnat de acesta, player-ul nu mai ruleaza nimic. | ||
+ | |||
+ | </note> | ||
Line 573: | Line 582: | ||
Această comandă poate fi rulată doar după ce utilizatorul a dat comanda load. | Această comandă poate fi rulată doar după ce utilizatorul a dat comanda load. | ||
+ | |||
+ | </note> | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Dacă după ce dați next nu mai aveți niciun track de rulat, se dă mesajul: **Please load a source before skipping to the next track.**. | ||
</note> | </note> | ||
Line 678: | Line 693: | ||
Această comandă poate fi rulată doar după ce utilizatorul a dat comanda load. | Această comandă poate fi rulată doar după ce utilizatorul a dat comanda load. | ||
+ | |||
+ | </note> | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Garantam ca aceasta comanda nu va fi rulata de un utilizator pe un playlist pe care il are incarcat in player. | ||
</note> | </note> | ||
Line 967: | Line 988: | ||
<note warning> | <note warning> | ||
- | * După ce clonați repo-ul de pe GitHub, vă rugăm să vă faceți un repository propriu privat în care să vă puneți doar conținutul folder-ului **"tema"** de pe repo-ul echipei de POO. Dacă nu puneți folder-ul cu tema la alta cale, **nu o să puteți** să faceți schimbări in Git, deoarece vă aflați în rădăcina repository-ului echipei de POO. | + | * După ce clonați repo-ul de pe GitHub, vă rugăm să vă faceți un repository propriu privat în care să vă puneți doar conținutul folder-ului **"etapa1"** de pe repo-ul echipei de POO. Dacă nu puneți folder-ul cu tema la alta cale, **nu o să puteți** să faceți schimbări in Git, deoarece vă aflați în rădăcina repository-ului echipei de POO. |
* Pentru ca checker-ul să funcționeze trebuie să deschideți tema din Intellij la calea unde se află folderele **"src"**, **"lib"**, **"ref"**, **"input"**. Aveți folder-ul **.idea** pregenerat ca să vă ajute in acest sens. De asemenea, fișier-ul **.iml** contine calea către bibliotecile Jackson. Dacă aveți probleme stergeți folder-ul .idea si fișierul .iml si generațile voi din nou din Intellij. | * Pentru ca checker-ul să funcționeze trebuie să deschideți tema din Intellij la calea unde se află folderele **"src"**, **"lib"**, **"ref"**, **"input"**. Aveți folder-ul **.idea** pregenerat ca să vă ajute in acest sens. De asemenea, fișier-ul **.iml** contine calea către bibliotecile Jackson. Dacă aveți probleme stergeți folder-ul .idea si fișierul .iml si generațile voi din nou din Intellij. | ||
* **Citirea comenzilor si afisarea rezultatelor trebuie facuta de voi!!!** | * **Citirea comenzilor si afisarea rezultatelor trebuie facuta de voi!!!** |