03FYZ TECNICHE DI PROGRAMMAZIONE Esercitazione di Laboratorio 04 – 27 Marzo 2014 Obiettivi dell’esercitazione: Database Controller e Gestione Eventi in FXML DAO Realizzare in linguaggio Java un programma per verificare la presenza di parole all’interno di un database. Il database da utilizzare è “dizionario”, scaricabile dalla sezione “Materiale” del sito del corso. Per importarlo, avviare il database locale tramite il MySQL Workbench1 e selezionare l’opzione “Manage Import / Export” presente all’interno della sezione “Server Administration” del Workbench stesso2; nella finestra che si aprirà selezionare “Data Import/Restore” dalla colonna sulla sinistra, poi “Import from Self-Contained File” e quindi selezionare il file mark.sql (presente all’interno dell’archivio scaricato dal sito), che conterrà la tabella utile per questa esercitazione. Il programma dovrà essere in grado di effettuare alcune query al database, di calcolare i tempi necessari per portare a termine ogni operazione richiesta e di visualizzare il numero di risultati trovati. In questo modo sarà possibile confrontare le prestazioni delle diverse implementazioni richieste negli esercizi. Si realizzi l’applicazione facendo uso dei pattern MVC e DAO. Esercizio 1.1 - L’utente inserisce una o più lettere in una casella di testo e lancia la ricerca cliccando sul bottone “Cerca”. La query dovrà interrogare il database e ottenere il conteggio di tutte le parole che iniziano con i caratteri digitati dall’utente. Per contare il numero di risultati, eseguire una query SELECT COUNT(). Esercizio 1.2 - Modificare il programma precedente inserendo i risultati all’interno di un ArrayList e contando gli elementi presenti nell’ArrayList stesso, invece di usare la query COUNT(). Esercizio 1.3 – All’avvio del programma scaricare l’intero database in un ArrayList, e poi eseguire le ricerche richieste dall’utente all’interno dell’ArrayList stesso, senza accedere nuovamente al database (visualizzare anche il tempo necessario per lo scaricamento del database completo, in modo da tenerne conto nel calcolo delle prestazioni). 1 2 In alternativa, avviare MySQL dal pannello di controllo XAMPP In alternativa, utilizzare il comando File / Carica file SQL del programma HeidiSQL Esercizio 2 – Prendendo in considerazione l’esercizio 1 dell’esercitazione n°3, inserire un controllo aggiuntivo per verificare che ogni parola inserita sia presente nel DB “dizionario”; nel caso in cui non sia presente, segnalare l’errore all’utente attraverso l’apposito flag e non effettuare l’inserimento della parola nella struttura dati. Esercizio 3 – Prendendo in considerazione l’esercizio 2 dell’esercitazione 3 (il “gioco dell’impiccato”), modificare il programma in modo tale che sia in grado di selezionare in modo casuale una parola dal DB “dizionario”, eliminando dunque la sezione relativa all’inserimento della parola segreta. Alla pressione del tasto “Nuova Partita”, il programma dovrà resettarsi e selezionare una nuova parola scelta a caso tra quelle presenti nel DB. Esercizio 4.1/4.2/4.3 – (OPZIONALE) Modificare i tre programmi creati negli esercizi precedenti, eliminando il bottone per eseguire la ricerca. La ricerca dovrà essere effettuata in tempo reale, ogni volta che l’utente inserirà una nuova lettera nella casella di testo (l’evento che scatenerà la ricerca non sarà più legato alla pressione del bottone di ricerca, ma alla digitazione all’interno della casella di testo).