Skip to content

Commit

Permalink
Merge pull request #1 from qb-team/develop
Browse files Browse the repository at this point in the history
Rilascio per RQ
  • Loading branch information
TommasoAzz committed Jun 8, 2020
2 parents 4dc19e8 + cd4384e commit 014fdbe
Show file tree
Hide file tree
Showing 137 changed files with 3,099 additions and 1 deletion.
9 changes: 9 additions & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: 2
mkdocs:
configuration: mkdocs.yml
python:
version: 3.8
install:
- requirements: requirements.txt
# - method: setuptools
# path: lightgallery-markdown
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# Stalker-ManualeManutentore
Repository per il deploy del Manuale Manutentore su Read the Docs del progetto sul capitolato "Stalker" del corso di Ingegneria del Software all'Università di Padova, A.A. 2019/2020, svolta dal gruppo qbteam.
Repository per il deploy del Manuale Manutentore su Read the Docs del progetto sul capitolato "Stalker" del corso di Ingegneria del Software all'Università di Padova, A.A. 2019/2020, svolta dal gruppo qbteam.
Binary file added docs/Immagini/App/AppPackageDiagramm.PNG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/Classi/Authentication.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/Classi/HomeFragment.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/Classi/HomePageActivity.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/Classi/LoginFragment.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/Classi/MainActivity.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/Classi/SignUpFragment.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/ContractPackageDiagramm.PNG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/LDAPConnectionSuccess.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/LoginContract.PNG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/MVP.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/ModelPackageDiagramm.PNG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/PresenterPackageDiagramm.PNG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/ToolPackageDiagramm.PNG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/App/ViewPackageDiagramm.PNG
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/Backend/Classi/AccessAPI.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/Backend/Classi/AccessService.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Immagini/Backend/Classi/FavoriteAPI.png
Binary file added docs/Immagini/Backend/Classi/FavoriteService.png
Binary file added docs/Immagini/Backend/Classi/MovementAPI.png
Binary file added docs/Immagini/Backend/Classi/MovementService.png
Binary file added docs/Immagini/Backend/Classi/OrganizationAPI.png
Binary file added docs/Immagini/Backend/Classi/PlaceAPI.png
Binary file added docs/Immagini/Backend/Classi/PlaceService.png
Binary file added docs/Immagini/Backend/Classi/PresenceAPI.png
Binary file added docs/Immagini/Backend/Classi/PresenceService.png
Binary file added docs/Immagini/Backend/Classi/ReportAPI.png
Binary file added docs/Immagini/Backend/Classi/ReportService.png
Binary file added docs/Immagini/Backend/Requisiti/contenuto.jpg
Binary file added docs/Immagini/Backend/layeredarchitecture.png
Binary file added docs/Immagini/Backend/package/package-api.png
Binary file added docs/Immagini/Backend/package/package-model.png
Binary file added docs/Immagini/Backend/springboot.png
Binary file added docs/Immagini/WebApp/APIPackage.png
Binary file added docs/Immagini/WebApp/AdminManagementPackage.png
Binary file added docs/Immagini/WebApp/Firebase1.png
Binary file added docs/Immagini/WebApp/Firebase2.png
Binary file added docs/Immagini/WebApp/Firebase3.png
Binary file added docs/Immagini/WebApp/MVVMPattern.png
Binary file added docs/Immagini/WebApp/OrgManagement.PNG
Binary file added docs/Immagini/WebApp/OrganizationPackage.png
Binary file added docs/Immagini/WebApp/PDiagram.png
Binary file added docs/Immagini/WebApp/PackageDiagram.png
Binary file added docs/Immagini/WebApp/ServicesPackage.png
Binary file added docs/Immagini/WebApp/Trackingpackage.png
Binary file added docs/Immagini/WebApp/administratorManagement.PNG
Binary file added docs/Immagini/WebApp/anonymousTracking.PNG
Binary file added docs/Immagini/WebApp/authentication.PNG
Binary file added docs/Immagini/WebApp/login.PNG
Binary file added docs/Immagini/WebApp/menubar.PNG
Binary file added docs/Immagini/WebApp/modify admin priv level.PNG
Binary file added docs/Immagini/qbteam.png
37 changes: 37 additions & 0 deletions docs/app/architettura.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# 2.4 Architettura
## 2.4.1 Model View Presenter

È stato scelto di utilizzare come modello architetturale il **Model View Presenter** che è fortemente consigliato per chi sviluppa delle applicazioni per dispositivi Android.
Il MVP Fornisce un modo semplice per mostrare la struttura del prodotto garantendo modularità, testabilità e in generale una base di codice più pulita e gestibile.
Ne deriva quindi l'applicazione del paradigma *separation of concerns*, che separa la responsabilità tra le differenti parti del pattern.

![!MVP](../Immagini/App/MVP.png "MVP Pattern")
<figcaption align="center"> <em> Schema del pattern architetturale MVP </em> </figcaption>

### 2.4.1.1 Model

Il **Model** è la parte che ha la responsabilità di gestione dei dati e rappresenta il layer di persistenza dell'applicazione. La maggior parte delle operazioni e dei controlli vengono svolti al suo interno. Contiene anche i metodi che avviano le connessioni alle API ed interagiscono con esse eseguendo numerose funzionalità. Vi sono, ad esempio, i metodi che
consentono la comunicazione con il backend; parte del modello è costituito dalla lista delle organizzazioni che si ottiene avviando una connessione al server, scaricando i dati in
formato JSON e salvandoli in seguito localmente.

### 2.4.1.2 View

La View ha la responsabilità di passare i dati al Presenter. Essa è implementata da:

* Attività (activity);
* Frammenti (fragment);
* Qualsiasi forma grafica con cui l'utente finale dell'applicazione andrà ad interagire come ad esempio: ProgressBar, TextView, RecyclerView, ecc.

In altre parole la View è la user interface.

### 2.4.1.3 Presenter

Il **Presenter** funge da livello intermedio tra la **View** e il **Model**. Tutta la logica di presentazione appartiene ad esso ed è responsabile dell'interrogazione del modello e l'aggiornamento della vista, reagendo alle interazioni che compie l'utente nella UI. Un valore aggiunto è che il **Presenter** dipende dall'astrazione della **View** e non dalla sua concretizzazione, quindi non conosce la sua implementazione. Tutto ciò favorisce ad una più facile attività di test tramite anche l'utilizzo di mock.

### 2.4.1.4 Contract

Il **Contract**, come suggerisce il nome, può essere visto come un contratto nel quale vengono definiti tutti i metodi che verranno utilizzati dalla **View**, dal **Presenter** e dal **Model**.
Quando si ha intenzione di scrivere una nuova funzionalità, è buona norma scrivere un **Contract** al primo passaggio. Esso descrive la comunicazione tra **View-Presenter** e
**Model-Presenter**, consentendo una progettazione più pulita e diminuire le dipendenze tra le componenti.
Il **Contract** è un'interfaccia utilizzata per ogni fragment presente nell'applicazione e contiene le altre interfacce della **View**, **Presenter** e **Model** per garantire le varie comunicazioni.

272 changes: 272 additions & 0 deletions docs/app/classi.md

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions docs/app/estendibilita.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 2.3 Estendibilità

## 2.3.1 Creazione di un metodo

Tramite l'utilizzo dell'architettura **Model View Presenter** è facile da implementare dei nuovi metodi separandoli con la business logic e la vista ed in seguito creare i rispettivi collegamenti utilizzando il presenter.

## 2.3.2 Creazione di un component

Lo stesso principio lo si applica per la creazione di nuovi component, quindi è opportuno avere una chiara idea di come funziona questa architettura.
26 changes: 26 additions & 0 deletions docs/app/introduzione.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 2.1 Introduzione
Questa parte del prodotto è orientata all'uso da parte degli utenti che voglio essere tracciati dalle organizzazioni utilizzando l'applicazione Android.

## 2.1.1 Scopo del prodotto
L'applicazione Android offre all'utente le seguenti funzionalità:

- **Registrazione**: L'utente ha la possibilità di registrarsi inserendo un e-mail, password e accettando le condizioni d'uso;

- **Login**: L'utente ha la possibilità di autenticarsi inserendo la propria email e password;

- **Scaricamento della lista delle organizzazioni**: L'utente, per poter visualizzare la lista di tutte le organizzazioni disponibili in Stalker, deve prima scaricarla connettendosi al backend. Una volta richiesto lo scaricamento, se dovesse decidere di annullarlo o se venisse a mancare la connessione ad Internet, apparirebbe nella schermata principale un tasto per ritentare il download;

- **Aggiornamento della lista delle organizzazioni**: L'utente può aggiornare la lista delle organizzazioni eseguendo uno *swipe down* nella schermata principale;

- **Drawer**: L'utente può accedere ad una serie di funzionalità utilizzando l'*Hamburger button* riportato in alto a sinistra.
È possibile avviare il tracciamento tramite uno pulsante switch, disattivato di default. Alla prima attivazione del tracciamento compare sulla schermata dell'applicazione un pop-up che invita l'utente ad accettare i permessi necessari per permettere all'applicazione di utilizzare il GPS. Altre funzionalità in questo menu permettono attualmente il logout e l'ordinamento alfabetico della lista delle organizzazioni;

- **Ricerca**: In alto vi è la barra principale dell'applicazione in vi è una sezione di ricerca. Con essa è possibile eseguire delle ricerche testuali per filtrare e visualizzare la lista delle organizzazioni;

- **Visualizzazione pagina organizzazione**: L'utente può entrare nella pagina dedicata di un'organizzazione cliccando l'elemento della lista ad essa appartenente. Al suo interno è possibile visualizzare il nome dell'organizzazione, una descrizione, l'immagine di anteprima, ed un pulsante autenticati se l'organizzazione richiede un'autenticazione aziendale. Se l'organizzazione è aggiunta alla lista MyStalker (lista preferiti), viene visualizzato lo stato "Sei dentro/Sei fuori";

- **Aggiunta organizzazione nella lista MyStalker (lista preferiti)**: L'utente, tenendo premuto su di un elemento della lista delle organizzazione fa apparire un pop-up che permette di aggiungere l'organizzazione selezionata nella lista MyStalker, o più semplicemente visualizzarne il contenuto. Se l'organizzazione richiede un'autenticazione aziendale (tramite LDAP) allora con il pop-up è possibile solamente visualizzarne il contenuto. Una volta avuto accesso alla pagina dedicata dell'organizzazione bisogna autenticarsi tramite credenziali LDAP. Se l'autenticazione avviene con successo, tale organizzazione compare nella lista MyStalker;

- **Eliminazione organizzazione dalla lista MyStalker**: L'utente, tenendo premuto sull'elemento della lista delle organizzazioni MyStalker, fa comparire un pop-up che richiede se si intende rimuovere l'organizzazione da tale lista;

- **Tracciamento**: La funzionalità di tracciamento consente all'utente di tracciare gli ingressi e le uscite presso le organizzazioni e presso i loro luoghi, solamente di quelli presenti nella lista MyStalker. Se l'organizzazione ha richiesto l'autenticazione con credenziali aziendali (LDAP) allora è possibile cambiare, tramite uno switch presente nella pagina dell'organizzazione, la tipologia di tracciamento da anonimo (default) ad autenticato (e viceversa). La modalità autenticato permette alle organizzazioni di visualizzare a posteriori gli accessi (insieme di un ingresso e un'uscita da un'organizzazione o luogo) di coloro che le hanno aggiunte alla lista MyStalker.
38 changes: 38 additions & 0 deletions docs/app/package.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# 2.5 Diagrammi dei package
Vengono presentati qui di seguito i diagrammi UML dei package relativi alla applicazione Android.

## 2.5.1 Visione generale delle dipendenze tra package
Il package principale dell'applicazione è nominato it.qbteam.stalkerapp. Esso contiene le classi di attività HomePageActivity e MainActivity e i vari package dell'architettura Model View Presenter. Nel seguente diagramma UML vengono mostrate tutte le dipendenze che esistono tra i vari package.
![!Dipendenze](/Immagini/App/AppPackageDiagramm.PNG "Diagramma dei package - Visione delle dipendenze")
<figcaption align="center"> <em> Diagramma dei package - Visione delle dipendenze </em> </figcaption>

## 2.5.2 Model
Nel seguente package vengono raggruppati altri package contenenti tutte le classi utilizzate per la business logic. In questa sezione vengono utilizzate le funzionalità di tracking, gestione dati dal server o locali, metodi di connessione ed interazione con il backend, autenticazioni su Firebase o LDAP, struttura delle organizzazioni e dell'utente.
![!Model](/Immagini/App/ModelPackageDiagramm.PNG "Package del Model")
<figcaption align="center"> <em> Diagramma del package - Package del Model </em> </figcaption>

## 2.5.3 View
Nel seguente package vengono raggruppate tutte le classi dedicate alle funzionalità di user interface. Le classi Fragment rappresentano le pagine dell'applicazione e sono collegate con i loro rispettivi file XML che modificano la loro interpretazione grafica.
![!View](/Immagini/App/ViewPackageDiagramm.PNG "Package del View")
<figcaption align="center"> <em> Diagramma del package - Package del View </em> </figcaption>

## 2.5.4 Presenter
Nel seguente package vengono raggruppate tutte le classi dedicate alla comunicazione tra le altre due componenti dell'architettura.
![!Presenter](/Immagini/App/PresenterPackageDiagramm.PNG "Package del Presenter")
<figcaption align="center"> <em> Diagramma del package - Package del Presenter </em> </figcaption>

## 2.5.5 Contract
Nel seguente package vengono raggruppate tutte le interfacce Contract che servono per facilitare la comunicazione tra le varie componenti di MVP. Visto che a loro volta contengono altre interfacce possono essere rappresentate come dei "package".
![!Contract](/Immagini/App/ContractPackageDiagramm.PNG "Package del contract")
<figcaption align="center"> <em> Diagramma del package - Package del Contract </em> </figcaption>

### 2.5.5.1 Esempio di composizione di un Contract
Andando nel dettaglio il seguente "package" raggruppa tutte le interfacce che compongono un contract e questa struttura vale anche per tutti gli altri contract.
![!LoginContract](/Immagini/App/LoginContract.PNG "Esempio diagramma dei package dei contracts")
<figcaption align="center"> <em> Diagramma del package - Package del LoginContract </em> </figcaption>

## 2.5.6 Tool
Nel seguente package vengono raggruppate tutte le classi ed interfacce dedicate alle funzionalità generiche che possono essere usate in base ai contesti per dare supporto ai fragment ed evitare ripetizioni di codice tra le varie classi.
![!Tool](/Immagini/App/ToolPackageDiagramm.PNG "Package del Tool")
<figcaption align="center"> <em> Diagramma del package - Package del Tool </em> </figcaption>

102 changes: 102 additions & 0 deletions docs/app/requisiti.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# 2.2 Requisiti e installazione

## 2.2.1 Requisiti
Per poter sviluppare sul proprio PC l'applicazione del sistema Stalker sono necessari i software e gli strumenti indicati in questa pagina.
I software da installare saranno divisi in base al loro scopo.

Per scaricare il codice sorgente dell'applicazione, è sufficiente andare nella pagina di GitHub che lo ospita, che si trova [qui](https://github.com/qb-team/Stalker-App), cliccare su `Clone or download` e successivamente premere su `Download ZIP`.

Un'alternativa più efficace a questo procedimento è scaricare il progetto tramite Git. Se non si dispone di Git è possibile scaricarlo seguendo quanto indicato in [Source Code Management](#source-code-management). Per scaricare il progetto in questo modo, invocare il seguente comando tramite un terminale o prompt dei comandi nel sistema in uso:
```bash
git clone https://github.com/qb-team/Stalker-App.git
```

<a name="prerequisiti"></a>

## 2.2.2 Prerequisiti hardware e software
Le tecnologie utilizzate per sviluppare l'applicazione Android richiedono parecchie risorse nel loro uso contemporaneo. Si consiglia quindi di avere un computer con processore almeno quad-core e una memoria RAM di almeno 8 GB.

## 2.2.3 Ambiente di sviluppo
### 2.2.3.1 Android Studio
L'applicazione è stata sviluppata utilizzando l'ambiente di sviluppo Android Studio, attualmente alla versione 3.6.1.

#### Installazione di Android Studio su Windows
È possibile scaricare Android Studio su Windows visitando il sito ufficiale riportato in seguito, che inoltre fornisce un'ottima documentazione per lo sviluppo di applicazioni. Il link per la pagina da cui si può scaricare Android Studio si trova cliccando [qui](https://developer.android.com/studio), andando alla sezione *"Android Studio downloads"*.
Per eseguire l'installazione, bisognerà seguire la guida riportata nella sezione **Windows** cliccando nel seguente link [qui](https://developer.android.com/studio/install).

#### Installazione di Android Studio su MacOS
La guida per scaricare Android Studio per MacOS è identica a quella per Windows.
Per eseguire l'installazione, invece, bisognerà seguire la guida riportata nella sezione **Mac** cliccando nel seguente link [qui](https://developer.android.com/studio/install).

#### Installazione di Android Studio su Ubuntu (e derivate, e altri derivati di Debian)
La guida per scaricare Android Studio per Linux è identica a quella per Windows e MacOS.
Per eseguire l'installazione, invece, bisognerà seguire la guida riportata nella sezione **Linux** cliccando nel seguente link [qui](https://developer.android.com/studio/install).

## 2.2.4 Linguaggi utilizzati
### 2.2.4.1 Java
L'applicazione è stata sviluppata utilizzando il linguaggio di programmazione Java, in particolare la sua versione 8 (conosciuta come Java 8).

#### Installazione di Java su Windows
È possibile installare Java su Windows visitando il sito ufficiale dell'azienda che lo produce, Oracle. Il link per la pagina da cui si può scaricare Java si trova cliccando [qui](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html). Il link porta alla pagina del sito Oracle per scaricare il Java Development Kit (JDK) 8. Esso include al suo interno anche il Java Runtime Environment (JRE) 8 per l'esecuzione.
Il pacchetto da scaricare una volta all'interno del sito web è quello sotto la voce *Windows x64*.

#### Installazione di Java su MacOS
L'installazione per MacOS è identica a quella per Windows, ad eccezione del fatto che il pacchetto da scaricare è sotto la voce *macOS x64*.

#### Installazione di Java su Ubuntu (e derivate, e altri derivati di Debian)
È possibile installare Java su sistemi Linux invocando i seguenti comandi sul terminale del sistema:
```bash
sudo apt-get update
sudo apt-get install openjdk-8-jre openjdk-8-jdk
```

### 2.2.4.2 XML
La configurazione dell'applicazione e alcune sue dipendenze sono gestite tramite un file denominato **AndroidManifest.xml**.
Inoltre, lo sviluppo di applicazioni Android richiede una cartella di progetto denominata **res** che contiene file XML per gestire risorse come layout, immagini, menu, stringhe ed altro ancora.
Quindi è richiesta una buona conoscenza del linguaggio XML.

## 2.2.5 Librerie utilizzate
### 2.2.5.1 UnboundID SDK
UnboundID SDK è una libreria Java utilizzata per effettuare l'autenticazione su un server LDAP.
Per poterla utilizzare è necessario aggiungere nel file *build.gradle(:app)* la dipendenza:
```bash
implementation 'com.unboundid:unboundid-ldapsdk:4.0.14'
```
La documentazione viene fornita nel seguente [link](https://github.com/pingidentity/ldapsdk).
Per verificare che è stata eseguita una corretta autenticazione su un server LDAP, sono stati svolti dei test seguendo la guida presente al [link](https://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/).

### 2.2.5.2 Retrofit
Retrofit è una libreria Java e Android che permette di utilizzare e gestire i servizi REST, un tipo di architettura software che utilizza il protocollo HTTP per effettuare richieste al server.
Per poterla utilizzare è necessario aggiungere nel file *build.gradle(:app)* la dipendenza:
```bash
implementation 'com.squareup.retrofit2:retrofit:(2.8.1)'
```
La documentazione viene fornita nel seguente [link](https://square.github.io/retrofit/).

### 2.2.5.3 GSON
Gson è una libreria Java che può essere utilizzata per convertire oggetti Java nella loro rappresentazione JSON o per convertire una stringa JSON in un oggetto Java equivalente.
Per poterla utilizzare è necessario aggiungere nel file *build.gradle(:app)* la dipendenza:
```bash
implementation 'com.google.code.gson:gson:2.8.6'
```
La documentazione viene fornita nel seguente [link](https://github.com/google/gson).

### 2.2.5.4 UrlImageViewHelper
UrlImageViewHelper è una libreria Java che permette di scaricare e gestire automaticamente tutte le immagini Web e ImageView.
Per poterla utilizzare è necessario aggiungere nel file *build.gradle(:app)* la dipendenza:
```bash
implementation files('libs/urlimageviewhelper-1.0.4.jar')
```
E' necessario scaricare e includere il file eseguibile *urlimageviewhelper-1.0.4.jar*.
La documentazione viene fornita nel seguente [link](https://github.com/koush/UrlImageViewHelper).

<a name="source-code-management"></a>
## 2.2.6 Source code management
Per poter effettuare il versionamento del codice sorgente è richiesto di utilizzare Git.
Per poterlo installare è necessario recarsi a [questa pagina](https://git-scm.com/downloads).
Non è strettamente necessario, ma è consigliato per integrare le proprie modifiche nel repository.

## 2.2.7 Build automation
La build automation (ovvero la gestione del processo di build) è affidata a Gradle, integrato e utilizzato in Android Studio.
I file di build sono due: uno per tutto il progetto ed uno per il solo modulo app.
Tramite Gradle il progetto dell'applicazione viene compilato, testato ed eseguito attraverso l'IDE Android Studio.
14 changes: 14 additions & 0 deletions docs/app/sequenza.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# 2.7 Diagramma delle sequenze
## 2.7.1 Diagramma dell'autenticazione al server LDAP

![!Diagramma di sequenza dell'autenticazione a un server LDAP](../Immagini/App/LDAPConnectionSuccess.png "Diagramma di sequenza dell'autenticazione al server LDAP")

Questo diagramma di sequenza rappresenta la serie di azioni svolte dall'applicazione quando viene effettuata l'autenticazione LDAP.

La sequenza inizia con la selezione di una organizzazione autenticata e quindi la creazione del fragment "LDAPOrganizationFragment" tramite il metodo OnCreateView.
Il fragment mostra a schermo una serie di informazioni riguardanti l'organizzazione scelta, l'utente tramite il pulsante "Autenticati" ha la possibilità di autenticarsi inserendo le proprie credenziali e selezionando il pulsante "Accedi".
Cliccando il pulsante Accedi le credenziali saranno passate al presenter LDAPOrganizationPresenter tramite il metodo setLDAP, le credenziali saranno successivamente usate per creare il modello StalkerLDAP.
LDAPOrganizationFragment successivamente procederà alla creazione del bind invocando il metodo del presenter bind e di conseguenza il metodo del modello performBind.
Il metodo performBind crea un oggetto di tipo LDAPConnection passandogli le credenziali, quindi crea un collegamento con il server LDAP.
Una volta che il collegamento al server è stato effettuato il fragment invocherà il metodo del presenter "search" e quindi il metodo del modello performSearch, il quale andrà a verificare se la connessione è stata effettuata con successo.
In caso di esito positivo il modello invoca il metodo del presenter "onSuccess", quindi il metodo del fragment onSuccessLdap che procederà alla creazione di un oggetto Organization nella lista MyStalker.

0 comments on commit 014fdbe

Please sign in to comment.