{"id":28380290,"url":"https://github.com/interes-group/b-vsa-ls22-project1","last_synced_at":"2026-07-16T19:32:31.215Z","repository":{"id":106998185,"uuid":"469946026","full_name":"Interes-Group/b-vsa-ls22-project1","owner":"Interes-Group","description":"B-VSA LS 21/22 Zadanie semestrálneho projektu 1","archived":false,"fork":false,"pushed_at":"2022-06-01T21:28:01.000Z","size":138,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-26T07:57:49.734Z","etag":null,"topics":["b-vsa","java","jpa","sql"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Interes-Group.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-15T00:10:03.000Z","updated_at":"2022-05-21T22:46:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"7b725b1d-c88e-4153-a850-7c73d2cb49ec","html_url":"https://github.com/Interes-Group/b-vsa-ls22-project1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Interes-Group/b-vsa-ls22-project1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interes-Group%2Fb-vsa-ls22-project1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interes-Group%2Fb-vsa-ls22-project1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interes-Group%2Fb-vsa-ls22-project1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interes-Group%2Fb-vsa-ls22-project1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Interes-Group","download_url":"https://codeload.github.com/Interes-Group/b-vsa-ls22-project1/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interes-Group%2Fb-vsa-ls22-project1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35557060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["b-vsa","java","jpa","sql"],"created_at":"2025-05-30T03:08:06.477Z","updated_at":"2026-07-16T19:32:31.209Z","avatar_url":"https://github.com/Interes-Group.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# B-VSA LS 21/22 - Semestrálny projekt 1\n\n![Java 1.8](https://img.shields.io/badge/Java-1.8-blue)\n![EclipseLink 2.7.10](https://img.shields.io/badge/EclipseLink-2.7.10-green)\n[![Public domain](https://img.shields.io/badge/License-Unlicense-lightgray)](https://unlicense.org)\n\nCieľom 1. semestrálneho projektu je naprogramovať aplikáciu rezervačného systému parkovacích domov využívajúcu\ntechnológiu JPA s pripojením na SQL databázu. Aplikácia poskytuje konzolové rozhranie (CLI) pre prácu používateľa.\nRozhranie má byť jednoduché a poskytovať prístup ku všetkým funkcionalitám aplikácie. Môžte sa inšpirovať projektami z\ncvičení.\n\n## Entity\n\nAplikácia musí pracovať s entitami:\n\n- **Parkovací dom** - má atribúty názov, adresa, cena za hodinu parkovania\n- **Poschodie parkovacieho domu** - obsahuje identifikačné označenie poschodia\n- **Parkovacie miesto** - obsahuje identifikačné označenie miesta\n- **Auto** - obsahuje atribúty značka, model, EČV, farba\n- **Zákazník** - obsahuje atribúty meno, priezvisko, email\n\n### Asociácie\n\nMedzi implementovanými entitami musia byť dodržané vzťahy nasledovne:\n\n* Parkovací dom obsahuje viacero poschodí.\n* Poschodie parkovacieho domu obsahuje viacero parkovacích miest.\n* Parkovacie miesto obslúži viacero áut, avšak maximálne jedno pre daný čas.\n* Každé auta má práve jedného vlastníka/zákazníka.\n* Auto môže byť zaparkované iba na jednom parkovacom mieste v danom čase.\n* Ktoré auto je zaparkované na ktorom parkovacom mieste je definované rezerváciou, ktorá obsahuje čas začiatku, čas\n  ukončenia parkovania a celkovú cenu za parkovanie. Maximálna dĺžka parkovania nie je určená. Účtuje sa každá začatá\n  hodina.\n\n## Funkcionalita\n\nAplikácia musí zabezpečiť CRUD operácie nad všetkými entitami spomenuté vyššie. Taktiež musí umožniť používateľovi\nrezervovať si parkovacie miesto pre vlastné auto. Rezervácia môže byť vytvorená iba na špecifický čas. Po odídení z\nparkovacieho miesta sa rezervácia ukončí a zapíše sa čas ukončenia rezervácie a vypočíta sa celková cena za rezerváciu\nparkovacieho miesta.\n\nAplikácia musí umožniť používateľovi zobrazenie zoznamu rezervácií za špecifický deň a parkovacie miesto, zoznam svojich\naktívnych rezervácií a taktiež musí obsahovať možnosť kontroly obsadenosti parkovacieho domu.\n\nPri vymazaní parkovacieho domu musia byť vymazané aj všetky jeho poschodia aj parkovacie miesta. Rovnako ak je vymazaný\nzákazník musia byť vymazané aj jeho autá.\n\n## Doplňujúce kritéria\n\n### Skupina A\n\nVytvorte ďalšiu entitu **Zľavový kupón**, ktorá obsahuje názov a výšku zľavy vyjadrenú v percentách. Zľavový kupón je\nviazaný na zákazníka asociáciou, kde jeden zákazník môže mať viacero kupónov. Pri ukončení rezervácie parkovacieho\nmiesta si používateľ/zákazník môže zvoliť použitie kupónu, po čom sa mu prepočíta nová celková cena s aplikovanou výškou\nzľavy. Každý kupón môže používateľ použiť iba raz. Po použití sa daný kupón stáva pre používateľa neplatný. Použitie\nkupónu musí byť zaznamená v entite rezervácie.\n\n### Skupina B\n\nRozšírte aplikáciu o **typy áut**, ktoré môžu v parkovacom dome parkovať (napr. elektrické, LPG a pod.). Jednotlivé\nparkovacie miesta obsahujú atribút, pre ktorý typ auta sú určené a taktiež každé auto má definovaný typ. Implementujte\nriešenie tak aby typ auta bola samostatná entita. Pri vytvorení rezervácie musí byť implementovaná kontrola, kde iba\nauto rovnakého typu ako je určené v parkovacom mieste na ňom môže parkovať, v opačnom prípade bude rezervácia\nodmietnutá.\n\n### Skupina C\n\nRozšírte aplikáciu tak aby rezervácia uvádzala sviatky, cez ktoré rezervácia parkovacieho miesta trvala. **Sviatok** má\ndefinovaný názov, dátum. Pre každý sviatok je zľava 25% z ceny rezervácie v deň sviatku. Ak dĺžka rezervácie trvá\nviacero dní, rátajte zľavu iba za dni sviatkov nie z celkovej ceny rezervácie. Pre naplnenie tabuľky sviatkov môžte\npoužiť [túto stránku](https://www.vlada.gov.sk/statne-sviatky/).\n\n## Hodnotenie\n\n**Zadanie je hodnotené 20 bodmi. Vypracovanie je nutné odovzdať do 30.3.2022 23:59.**\n\nZadanie si naklonujte z repozitára zadania. Svoje vypracovanie nahrajte do vášho repozitára pre toto zadanie pomocou\nprogramu Git (git commit + git push). Vypracovanie môžete “pusho-vať” priebežne. Pri vypracovaní\npoužite [poskytnutú sadu dát](src/test/resources/test-data.csv) pre otestovanie dodržania zadania.\n\n**Neupravujte pom.xml**, okrem pridania závislosti pre driver databázy podľa vlastného výberu. Povolené SQL databázy:\n\n- MySQL\n- OracleDB\n- Derby\n- PostgreSQL\n- H2 (s databázou do súboru)\n\n**Názov `persistence-unit`** v súbore [persistence.xml](src/main/resources/META-INF/persistence.xml) **nemeňte**. Pre\nspustenie aplikácie použite metódu main v triede [Project1](src/main/java/sk/stuba/fei/uim/vsa/pr1/Project1.java).\nPoužitá databáza sa musí volať **VSA_PR1** a musí mať vytvoreného používateľa s **menom 'vsa' a heslom 'vsa'**. Pre\ntieto účeli môžte využiť súbor [starter.sql](starter.sql).\n\nJednotlivé tabuľky pre entity musia byť uppercase a v anglickom jazyku:\n\n- Parkovací dom = CAR_PARK\n- Poschodie parkovacieho domu = CAR_PARK_FLOOR \n- Parkovacie miesto = PARKING_SPOT\n- Auto = CAR\n- Zákazník = USER\n- Rezervácia = RESERVATION\n\nImplementujte neabstraktnú triedu, ktorá bude dediť od triedy `AbstractCarParkService` a tak implementovať jej\nabstraktné metódy a preťažovať konštruktor. Táto trieda má slúžiť ako API (alebo ako fasáda) pre funkcionality aplikácie\na testy hodnotenia budú využívať jej implementáciu.\n\nHodnotiť sa bude iba master/main branch. Kvôli testom a zrýchleniu opravovania je nutné dodržať pokyny a štruktúru\nprojektu, ako je stanovené v zadaní! Iba kód poslednej verzie vypracovania (t.j. z posledného commitu) do termínu\nodovzdania sa berie do úvahy. Okrem testov sa bude kód a funkcionalita kontrolovať aj manuálne. Hodnotiť sa budú iba\nskompilovateľné a spustiteľné riešenia.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finteres-group%2Fb-vsa-ls22-project1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finteres-group%2Fb-vsa-ls22-project1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finteres-group%2Fb-vsa-ls22-project1/lists"}