POO Lab Lucrarea 3

De la WikiLabs
Jump to navigationJump to search

Noțiuni și cunoștințe necesare

Cerințe

  1. Realizați o clasă numită ServerConfig care are ca rol citirea dintr-un fișier de configurare a unor parametri, pe care îi vom folosi ulterior în aplicația server. Această clasă trebuie să respecte următoarele constrângeri:
    • Clasa trebuie să dispună de doi constructori:
      1. Unul cu un argument de tip String care va reprezenta fișierul de configurare citit
      2. Unul fără argumente, care va considera implicit fișierul de configurare ca fiind server.conf.
    • Obiectele de tip ServerConfig trebuie să citească fișierul de configurare și apoi să expună parametrii citiți din fișier prin metode.
    • Metodele din clasa ServerConfig trebuie să arunce excepții dacă apar probleme la citirea sau interpretarea fișierului de configurare:
      1. IOException dacă fișierul specificat nu există sau nu se poate citi (această excepție este aruncată de către metodele care aparțin claselor de tip stream, deci nu este necesară decât aruncarea ei mai departe).
      2. InvalidFormatException dacă cel puțin o linie din fișier nu corespunde formatului așteptat (acest tip de excepție nu există și va trebui creat).
      3. UnknownKeyException dacă în fișier există configurată o proprietate necunoscută (acest tip de excepție nu există și va trebui creat).
      4. MissingKeyException dacă din fișier lipsește una din proprietățile așteptate (acest tip de excepție nu există și va trebui creat).
    • Clasa trebuie să fie imutabilă.
  2. Următoarele proprietăți sunt singurele valide, care trebuie să existe în fișierul de configurare:
    • TCP_PORT - reprezintă portul TCP pe care server-ul e configurat să accepte conexiuni.
    • MAX_CLIENTS - reprezintă numărul maxim de clienți pe care serverul îl poate deservi.
  3. Realizați un test pentru această clasă (care constă în citirea unui fișier și afișarea pe ecran a valorilor citite) pe care să-l plasați în metoda main din clasa Main.


Fișierul de configurare citit de clasa ServerConfig este un fișier text, format din linii de forma următoare:

PROPERTY=value
  • Orice linie care începe cu caracterul #, precedat sau nu de spații sau caractere "tab", se consideră a fi comentariu și nu se ia în considerare.
  • Liniile din fișier care nu conțin nici un caracter printabil, ci doar spații și/ sau tab-uri, nu se iau în considerare.
  • Nu se iau în considerare spațiile (sau tab-urile) de la începutul sau sfârșitul liniilor.

Un exemplu de fișier de configurare:

#this is a config file for the chat server!
      #   this is made by ME!
MAX_CLIENT=100
       TCP_PORT=9000