Skip to content

PrEaDiVviN/WordGames

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Tehnologii folosite

  1. Spring Boot + REST API
  2. Swagger
  3. Jaunt
  4. Free Marker
  5. MySql Connector JDBK
  6. HikariCP connection Pool
  7. JavaFx + SceneBuilder

Elemente deosebite din punct de vedere al programarii

Scrapping

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Proxy HTTP verifier

  • 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.

Swagger

  • Am introdus in proiect swagger pentru a avea o reprezentare html a controller-lor si pentru a accesa rutele disponibile in proiect.

Free marker

  • 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.

Javafx

  1. Jocul care foloseste serviciile implementate este spanzuratoarea.
  2. Pentru a realiza interfata grafica am utilizat javafx si un scene-builder pentru acesta.
  3. Jocul contine 3 scene: Login, Register, Jocul propriu zis. Fiecare scena are propriul sau controller.

Rest Template

  1. Am integrat serviciile REST in joc utilizand REST TEMPLATE.
  2. Operatiile de obtinerea unui cuvant din baza de date, obtinerea sinonimului acestui cuvant utilizeaza serviciile REST API create de noi.

REST API

  1. UsersController - ofera servicii de: logare, inregistrare, obtinerea unui user pe baza unui id, obtinerea scorului pe baza username-ului, modificarea scorului pe username-ului.
  2. 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
  3. 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.

Daos

  1. UsersDao - operatii asupra modelului user in baza de date
  2. WordsDao - operatii asupra modelului word in baza de date
  3. SynonymDao - operatii asupra modelului synonym in baza de date
  4. Clasa care gestioneaza conectarea la baza de date implementeaza design pettern Singleton astfel incat se realizeaza o singura conexiune.
  5. Alta clasa ce gestioneaza conexiunea la baza de date foloseste tehnologia HIKARICP pentru un connection pool.

Exceptions

    Au fost create exceptii custom pentru a ilustra probleme la nivelul serviciile API

  1. InvalidConfigurationException
  2. InvalidDataException
  3. InvalidRangeException
  4. NoAvaibleProxyException
  5. NoSynonymException
  6. NoWordException

Databases - Tables

  1. Database: wordgames_database
  2. Tables: cuvinte 85158 entries, sinonime, users.
  3. Exportul bazei de date este in format sql pentru mysql.

Contributii

Am lucrat impreuna in majoritatea timpului (intalniri pe DISCORD/ZOOM/FIZICE) si nu putem atribui un element unei singure persoane.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published