Frontend
Che cos'è Vaddin?
Vaadin è una piattaforma di sviluppo di applicazioni Web open source per Java. Vaadin include una serie di componenti Web, un framework Web Java e una serie di strumenti che consentono agli sviluppatori di implementare le moderne interfacce utente grafiche (GUI) Web utilizzando solo Java (invece di HTML e JavaScript).
La classe Application è il punto di ingresso dell'applicazione. Tale classe andrà a creare un'istanza della classe MainLayout che per prima cosa andrà a richiamare la classe Home che verificherà se tale utente ha già effettuato un'autenticazione. In caso positivo viene creata la home dell'utente che si è loggato in caso negativo invece, si viene reindirizzati alla pagina di login in cui l'utente potrà autenticarsi.
Suddivisione dei package
All'interno del package frontend, in particolare, nel package views abbiamo implementato le varie classi della vista, al cui interno c'è un'ulteriore suddivisione di package e delle classi.
I package sono:
- aziendaIdrica in cui sono state sviluppate le classi per visualizzare le varie richieste idriche effettuate da un'azienda agricola verso un'azienda idrica. Inoltre per chi effettua l'accesso come operatore idrico c'è la possibilità di accettare o rifiutare le eventuali richieste. Mentre per chi effettua l'accesso come operatore agricolo c'è la possibilità di inviare una nuova richiesta ad una certa azienda idrica e di visualizzare le caratteristiche delle aziende idriche a cui inviare tale richiesta.
- campi in cui sono state sviluppate le classi per permettere la visualizzazione delle coltivazioni agli operatore agricoli. Inoltre e possibile visualizzare i sensori (con i dati raccolti), gli attuatori, le caratteristiche del campo e le irrigazioni effettuate.
- home in cui è stata sviluppata la classe per visualizzare la schermata di presentazione diversa a seconda di chi effettua l'accesso.
- login in cui è stata sviluppata la classe per la visualizzazione della schermata di login.
- richieste in cui è possibile visualizzare da parte di un operatore agricolo le richieste d'acqua fatte dalla propria azienda con la possibilità di inviare anche una nuova richiesta d'acqua.
Divisione GUI a seconda dell'utente
Per far ciò abbiamo utilizzato l'annotazione @RolesAllowed che viene utilizzata per limitare l'accesso a metodi o risorse in base ai ruoli degli utenti autenticati.
I ruoli che abbiamo utilizzato sono quattro:
- ROLE_USER per gli utenti che stanno facendo l'accesso alla pagina iniziale dopo essersi loggati e devono ancora essere indirizzati verso la pagina home appropriata.
- ROLE_AGRICOLA per gli utenti di aziende agricole.
- ROLE_IDRICA per gli utenti di aziende idriche.
- ROLE_SCONOSCIUTO per gli utenti che non sono riconosciuti né come utenti di aziende agricole né come utenti di aziende idriche, in particolare tali utenti non hanno accesso a nessuna funzionalità.