Mauro Gentile Matr. 701870 Progetto: Servizio location based per la ricerca di punti di interesse Il progetto consiste nello sviluppo di un servizio che fornisce informazioni relative a punti di interesse (POI) scelti in base alla locazione dell'utente, ai suoi interessi, e al voto medio relativo al gradimento espresso dagli utenti.
Web e DB Per lo svolgimento del progetto è stato adoperato lo spazio presente sul sito web personale del candidato e il proprio servizio di database fornito da Aruba S.p.a., in modo da poter sperimentare anche al meglio le funzionalità del progetto in un caso reale. Il sito web supporta hosting Windows e Linux, con spazio su disco e traffico illimitati, accesso FTP e DB MySQL 5.0.22, supporto per PHP 4.4.7 e XML 4, supporto XSLT usando Sablotron 1.0.2, supporto DomXml versione 20020815. Gestione de POI Per la gestione de punti di interesse è stato creato un servizio di back end che permette di aggiungere, rimuovere o modificare i POI all interno del DB che ne memorizza i dati. L interfaccia è stata implementata adoperando HTML e PHP, in modo da permettere facilmente l integrazione con il database MySQL adoperato e semplificarne l utilizzo. Il servizio si presenta come una lista di POI, ordinati in base al rating medio ricevuto dagli utenti. Cliccando su una delle categorie dei vari POI è possibile riordinarli, raggruppandoli per categoria, in ordine alfabetico. Per ripristinare l ordine in base al rating, basterà cliccare nuovamente su uno dei valori medi presenti nella lista. Selezionando il titolo di uno dei POI presenti è possibile inoltre controllarne l insieme dei dati presenti per quel particolare punto di interesse selezionato. In qualsiasi momento, è sempre possibile scegliere di aggiungere, rimuovere o editare un POI presente nel DB, attraverso comodi collegamenti, che rimandano ai relativi form di modifica. L interfaccia è reperibile all indirizzo http://www.gents.it/mobi_comp/db/ DB e XML Per la gestione dei dati e la comunicazione dei risultati delle queries effettuate dagli utenti è stato adoperato PHP, per effettuare la query e gestire i risultati ottenuti, il DB MySQL, per accedere ai dati dei POI selezionati, XSLT, per effettuare le dovute trasformazioni dai dati semplici ottenuti dal DB ai file XML specifici per ogni differente categoria di device. La query viene costruita in maniera dinamica dal server adoperando le informazioni fornite dal client usando il PHP. Una volta effettuata la query sul DB dei POI, i risultati vengono scritti all interno di un XML adoperando le DomXml API. In seguito vengono effettuate due trasformazioni XSLT sull XML precedentemente elaborato. La prima trasformazione aggiunge la
distanza in metri di ogni POI ricevuto dal DB rispetto all utente, la seconda invece trasforma il file XML in un formato fruibile dal device del client (differenziando tra PC, PDA o Mobile phone). Il codice è interamente contenuto nel file get_pois.php XSLT Nel codice xslt sono state implementate due funzioni che vale la pena osservare. La prima è la funzione adoperata per effettuare il calcolo della distanza. Questa funzione è stata implementata in quanto la versione della libreria presente sul server non permetteva la chiamata di funzioni PHP all interno del codice XSLT, quindi si è dovuto procedere ad una implementazione di una funzione che effettuasse il calcolo della radice quadrata. La seconda funzione è quella che sostituisce al valore medio ottenuto per ciascun POI un numero di stelline equivalenti al rating. Questa funzione ha scopo puramente estetico e viene adoperato nella presentazione della lista dei POI con rating più alto che corrispondono agli interessi espressi dall utente. Queste funzioni sono presenti nei file adddistance.xsl e nei rispettivi format_poi_list_devicetype.xsl Aggiornamento del Rating Nelle varie implementazioni è sempre presente, durante la visualizzazione dei dati relativi ad un particolare POI, la possibilità di esprimere il proprio voto per quel particolare POI e quindi andare a cambiarne il relativo voto medio, aggiungendo il proprio voto a quelli già presenti sul DB. Tutto questo viene effettuato all interno del codice PHP, che effettua una query, che va a modificare i dati relativi allo specifico POI di cui si ha intenzione di cambiare il punteggio medio. Il file che contiene il codice è change_rating.php Web e Wap L interfaccia è stata mantenuta volutamente semplice in modo da non appesantire l utente in caso di accesso da PDA o Mobile phone. L applicazione per thin client, PDA e PC si trova all indirizzo internet http://www.gents.it/mobi_comp/
JME Per l implementazione della MIDlet, dedicata al servizio su smart client, è stato adoperato NetBeans 6.1 in collaborazione con il Sun Java Wireless Toolkit 2.5.2 for CLDC. L implementazione della MIDlet porta al Flow schema riportato sopra.
All avvio della applicazione, riportata nel grafico come Mobile Device Started, viene visualizzato un waiting screen. Durante la visualizzazione viene effettuata la ricerca di location provider. In questo modo qualora vegano trovati dei location provider, l applicazione può iniziare, altrimenti si chiuderà immediatamente. Nel caso esista almeno un location provider, viene quindi presentato all utente un form di inserimento degli interessi, che, nel caso venga skippato dall utente, gli verrà riproposto in seguito ad una notifica che lo avvertirà di completare correttamente l inserimento dei dati. Una volta completato il form, la MIDlet scaricherà un file XML con i relativi dati della lista dei cinque POI con rating in ordine decrescente che corrispondano alle preferenze dell utente, con la possibilità di visualizzare una mappa con i POI segnati e con la posizione dell utente. L utente avrà quindi la possibilità di selezionare uno dei POI presenti nella lista e visualizzarne la descrizione completa e modificarne, eventualmente, il rating modificando il valore nella gauge che gli verrà presentata in fondo alla descrizione. Tutti gli errori sono gestiti da un'unica schermata di Alert (chiamata InputAlert nello schema) in cui verrà inserito dinamicamente il testo relativo all errore commesso dall utente o ad eventuali problemi nell esecuzione del applicazione. Un altro alert (segnato come NearPOIAlert), viene invece attivato quando l utente si trova in prossimità di uno dei POI segnalati dal server in seguito alle scelte di interesse effettuate dall utente.