Property Management
Un gestore di appartamenti riceve richieste di intervento dai proprietari e le assegna a professionisti idonei.
La classe principale si chiama PropertyManager; tutte le classi si trovano nel package managingProperties.
La classe Example presenta esempi di uso dei metodi principali.
La JDK documentation si trova sul
server locale.
R1: Buildings, apartments and owners
I metodi seguenti permettono di registrare nel sistema gli edifici, ciascuno con il n. di appartamenti e gli utenti.
Il metodo addBuilding() riceve l'id (univoco) dell'edificio (es. "b1") e il n. dei suoi appartamenti e li registra.
Lancia un'eccezione se l'id è già stato inserito o se il n. di appartamenti non è compreso tra 1 e 100.
Il metodo addOwner() riceve l'id (univoco) del proprietario e l'elenco dei suoi appartamenti e li registra.
Un appartamento è indicato da una stringa contenente l'id dell'edificio e il n. dell'appartamento separati da :
(es. "b1:10").
Lancia un'eccezione se l'id del proprietario è già stato inserito, l'id del building non esiste,
il n. non corrisponde ad un appartamento, l'appartamento ha già un owner.
Il metodo getBuildings()
restituisce una mappa che raggruppa per numero crescente di appartamenti le liste ordinate alfabeticamente degli id degli edifici.
R2: Professionals
Il metodo addProfessionals() riceve il nome della professione e l'elenco degli id dei professionisti relativi.
Le professioni usate negli esempi sono elettricista, idraulico, muratore (electrician, plumber, mason).
Lancia un'eccezione se la stessa professione compare in una precedente chiamata dello stesso metodo,
o se lo stesso id compare in più elenchi (ogni professionista svolge un'unica professione).
Il metodo getProfessions() dà il n. di professionisti per le professioni in ordine alfabetico.
R3: Maintenance requests
Il metodo addRequest() riceve l'id del proprietario, l'id dell'appartamento (es. "b1:10") e
il nome della professione, e genera una nuova richiesta nello stato pending; dà il numero della richiesta. Le richieste hanno
un numero progressivo a partire da 1.
Lancia un'eccezione se il proprietario o l'appartamento
o la professione non esistono o se il proprietario non possiede quell'appartamento.
Il metodo assign() assegna la richiesta (di cui è dato il numero) al professionista e cambia la stato della
richiesta in assigned.
Lancia un'eccezione se il professionista non svolge la professione indicata nella richiesta o la richiesta è inesistente
o non è più nello stato pending.
Il metodo getAssignedRequests() dà l'elenco dei n. delle richieste assegnate in ordine crescente.
R4: Charges
Per addebitare una manutenzione si usa il metodo charge() che riceve il n. della richiesta e l'importo (n. intero).
Il metodo cambia lo stato della richiesta in completed.
Lancia un'eccezione se la richiesta non esiste o non è nello stato assigned o l'importo non è compreso tra 0 e 1000.
Il metodo getCompletedRequests() dà l'elenco dei n. delle richieste completate in ordine crescente.
R5: Statistics
Il metodo getCharges() dà le spese per proprietario; i proprietari compaiono in ordine alfabetico.
Le spese di un proprietario sono date dalla
somma degli importi delle richieste completate che ha presentato. Solo i proprietari con spese non nulle sono considerati.
Il metodo getChargesOfBuildings() dà le spese per edificio; gli edifici compaiono in ordine alfabetico.
Le spese sono date per professione in ordine alfabetico
e risultano dalla somma degli importi delle richieste completate relative ad appartamenti dell'edificio e alla professione.
Sono considerati solo edifici e professioni con spese non nulle.