Sukurkite JAVA aplikaciją kurioje galėtumėme saugoti baidarių užimtumą vieno plaukimo metu.

Sukurkite klasę Kayak kurioje būtų saugomi šie duomenys:
id,
number, - integer, baidarės numeris
places, - integer, kiek iš viso vietų yra baidarėje
occupiedPlaces, integer, kiek vietų jau yra užimta
occupied - boolean, ar baidarė pilnai užimta ar ne

Sukurkite KayakDAO interfeisą ir KayakDAO klasės realizaciją (metodų nerealizuokite, juos gausite perimti su Mockito. Klasė privalo turėti realizuotus visus CRUD metodus:
int create(Kayak)
Kayak read(int)
int update(Kayak)
boolean delete(int)

Sukurkite service klasę skirtą dirbti su baidarėmis. Ji turi naudotis KayakDAO klase duomenims išsaugoti/pasiimti ir trinti duomenų bazėje. Šioje klasėje Jūs turėsite turėti šiuos metodus:

Kayak getKayak(id) - grąžina baidarę, pagal paduotą ID, taip pat gali gražinti null reikšmę jei baidarė nerasta, gali išmesti SQLExceptioną (jei nesame prisijungę prie DB).

Kayak addKayak(Kayak) - išsaugo paduotą baidarės objektą į duomenų bazę, sugražina baidarės objektą. Gali išmesti SQLException klaidą, gali išmesti IllegalArgumentException jei paduotas tarkime užimtų vietų skaičius yra didesnis nei iš viso yra vietų.

boolean addPersons(id, count) - turi pasiimti iš duomenų bazės baidarę pagal jos ID ir patikrinus ar laisvų vietų kiekis yra pakankamas turi pakoreguoti objektą (pridėti papildomą kiekį) ir išsaugoti į DB. Jei viskas įvyko sėkmingai metodas turi grąžinti true, jei vietų nepakako metodas turi grąžinti false ir nieko nesaugoti į DB, metodas taip pat gali išmesti klaidą SQLException.

boolean updateKayak(Kayak) - turi pakeisti duomenis duomenų bazėje. Pirmiausia turi pasiimti baidarę iš DB (nepamirškite jog metodas getKayak gali gražinti null reikšmę arba SQLException). Tuomet patikrinti ar paduota baidarė turi tinkamai aprašytus kintamuosius (nėra užimta daugiau vietų nei yra baidarėje, jei ne metodas turi išmesti IllegalArgumentException). Jei viskas tvarkoje, metodas turi išsaugoti objektą į DB pasinaudojant DAO klasės metodu update.

boolen delete(Kayak) - turi ištrinti baidarę iš DB pagal jos id. Gali išmesti SQL exception.

Sukurkite testus, DAO klasė turi būti realizuota pasinaudojant Mockito. Patikrinkite padengiamuma, jis turi būti 100%.