Objective Programming Laboratory Project.
Opracuj zestaw klas oraz zaimplementuj odpowiednie algorytmy tak by opracowany program:
- wczytywał pliki z katalogu wskazanego przy uruchamianiu programu (w formatach JSON i HTML),
- umożliwiał wyświetlanie metryki (rubrum) orzeczenia o wybranej sygnaturze; metryka powinna zawierać:
- sygnaturę orzeczenia
- datę wydania orzeczenia
- rodzaj sądu (sąd powszechny, Trybunał Konstytucyjny, Sąd Najwyższy, Krajowa Izba Odwoławcza, Wojewódzki Sąd Administracyjny -- bez uwzględniania miasta, Naczelny Sąd Administracyjny)
- skład (listę sędziów z przypisanymi rolami)
- umożliwiał wyświetlanie uzasadnienia orzeczenia o określonej sygnaturze,
- umożliwiał wyświetlanie rubrum dla kilku podanych sygnatur,
- wyświetlał liczbę orzeczeń dla wybranego sędziego (tzn. liczbę wszystkich orzeczeń, w których dany sędzia jest w składzie orzekającym),
- określał 10 sędziów, którzy wydali największą liczbę orzeczeń,
- określał rozkład statystyczny wyroków ze względu na miesiąc (należy agregować wyroki z różnych lat),
- określał rozkład statystyczny wyroków ze względu na rodzaj sądu (sąd powszechny, TK, SN, etc.)
- określał 10 ustaw (z pominięciem szczegółowej kwalifikacji, tzn. bez
artykułów, punktów, podpunktów, liter, etc.), które są najczęściej przywoływane (sekcja
referencedRegulationslub "Powoływane przepisy") w orzeczeniach. - określał rozkład statystyczny liczby sędziów przypadających na orzeczenie
- przy uruchamianiu programu akceptował opcjonalny argument ścieżki do pliku, w którym będą zapisywane wydawane komendy oraz ich wyniki (wyniki powinny również pojawiać się na ekranie)
- posiadał funkcję
help, która wyświetla listę dostęnych komend:rubrum- wyświetlenie metryki jednego lub wielu orzeczeń, na podstawie sygnatury (pierwsza wartość w polucourtCaseslub ciąg "II SA/OI 472/18" w przypadku orzeczeń sądów administracyjnych)content- wyświetlenie uzasadnienia (czyli treści polatextContentlub treść od słowa "UZASADNIENIE")judge- wyświetlał liczbę orzeczeń dla wybranego sędziegojudges- wyświetla 10 sędziów, którzy wydali najwięcej orzeczeńmonths- wyświetlał liczbę orzeczeń w poszczególnych miesiącach (rozkład statystyczny)courts- wyświetlał liczbę orzeczeń ze względu na typ sądu (rozkład statystyczny)regulations- wyświetlał 10 najczęściej przywoływanych ustawjury- wyświetlał liczbę spraw przypadających na określony skład sędziowski (określoną liczbę sędziów)
- Program powinien działać w trybie interaktywnym, tzn. po uruchomieniu programu (ze wskazaniem miejsca składowania orzeczeń) powinna otwierać się konsola programu, w której można wydawać polecenia z punktu 2.
- Konsola powinna wspierać przeglądanie historii wcześniejszych poleceń oraz edycję poleceń (analogicznie jak konsola w systemie Linux).
- Wydawanie kolejnych poleceń nie powinno prowadzić do wielokrotnego ładowania danych.
- System ma posługiwać się obiektową reprezentacją danych, tzn. niedopuszczalne jest wykorzystywanie "surowych" typów (np. JSONArray) zdefiniowanych w bibliotece do czytania formatu JSON.
- Zadbaj o to by program był odporny na błędy użytkownika, a w przypadku wykrycia błędu informował na czym ten błąd polega i sugerował poprawną formę komendy.