- Spring Boot + REST API
- Swagger
- Jaunt
- Free Marker
- MySql Connector JDBK
- HikariCP connection Pool
- JavaFx + SceneBuilder
- Words scrapping de la referinta rowiktionary folosit pentru a obtine toate cuvintele limbii romane. Pe acestea le-am stocat intr-o baza de date. Timp scrapping: 6ore.
- Definition scrapping de la referinta rowiktionary folosit pentru a obtine definitiile corespunzatoare fiecarui cuvant al limbii romane. Pe acestea le-am stocat intr-o baza de date. Timp scrapping: 30ore.
- Synonym scrapping de la referinta sin0nime folosit pentru a obtine sinonimele corespunzatoare fiecarui cuvant al limbii romane. Pe acestea le-am stocat intr-o baza de date. Timp scrapping: 25ore.
- Definition scrapping de la referinta dexonline folosit pentru a obtine definitiile corespunzatoare fiecarui cuvant al limbii romane. Pe acestea le-am stocat intr-o baza de date. Utilizeaza in spate PROXY-uri pentru mascarea identitatii(problema: aprox 700 request-uri produce un block de la dexonline pe o anumita perioada). Se folosesc REGEX-uri pentru parsarea documentelor html primite.
- Primeste o lista de proxy-uri cu anumite porturi si obtine acele proxy-uri ce sunt valabile pe un anumit link. Foloseste in spate JAUNT.
- Am introdus in proiect swagger pentru a avea o reprezentare html a controller-lor si pentru a accesa rutele disponibile in proiect.
- Am utilizat freemarker pentru a genera dinamic un fisier html care contine cuvinte{definitii, sinonime}. Fisierul este obtinut accesand endpoint-ul /view/query?{params - int: skip, count }. Numarul de cuvinte obtinut este count, iar pozitia in baza de date de start este skip.
- Jocul care foloseste serviciile implementate este spanzuratoarea.
- Pentru a realiza interfata grafica am utilizat javafx si un scene-builder pentru acesta.
- Jocul contine 3 scene: Login, Register, Jocul propriu zis. Fiecare scena are propriul sau controller.
- Am integrat serviciile REST in joc utilizand REST TEMPLATE.
- Operatiile de obtinerea unui cuvant din baza de date, obtinerea sinonimului acestui cuvant utilizeaza serviciile REST API create de noi.
- UsersController - ofera servicii de: logare, inregistrare, obtinerea unui user pe baza unui id, obtinerea scorului pe baza username-ului, modificarea scorului pe username-ului.
- WordsController - ofera servicii de: obtinerea definitiei unui cuvant pe baza numelui/id-ului acestuia (de pe DEXONLINE/RODIKTIONARY), obtinerea definitiilor cuvintelor dintr-un anumit interval atat de pe DEXONLINE/ROWIKTIONARY/AMBELE, verificarea existentei unui cuvant, oferirea tuturor cuvintelor care incep cu un prefix, oferirea tururor cuvintelor care se termina cu un sufix, oferirea tuturor cuvintelor care contin un anumit text
- SynonymController - ofera servicii de: obtinere a listei de sinonime pentru un anumit cuvant de un anumit tip, obtinerea a n-lea sinonim a unui cuvant (de anumit tip(substantiv, verb, prepozitie, etc)), obtinerea tuturor sinonimelor unui cuvant.
- UsersDao - operatii asupra modelului user in baza de date
- WordsDao - operatii asupra modelului word in baza de date
- SynonymDao - operatii asupra modelului synonym in baza de date
- Clasa care gestioneaza conectarea la baza de date implementeaza design pettern Singleton astfel incat se realizeaza o singura conexiune.
- Alta clasa ce gestioneaza conexiunea la baza de date foloseste tehnologia HIKARICP pentru un connection pool.
- InvalidConfigurationException
- InvalidDataException
- InvalidRangeException
- NoAvaibleProxyException
- NoSynonymException
- NoWordException
Au fost create exceptii custom pentru a ilustra probleme la nivelul serviciile API
- Database: wordgames_database
- Tables: cuvinte 85158 entries, sinonime, users.
- Exportul bazei de date este in format sql pentru mysql.
Am lucrat impreuna in majoritatea timpului (intalniri pe DISCORD/ZOOM/FIZICE) si nu putem atribui un element unei singure persoane.