Gestire database SQLite con Adobe AIR usando Flash CS6 (seconda parte)
Dopo aver introdotto i concetti generali sul dialogo tra AIR e SQLite, passiamo alla pratica. Oltre a scrivere le istruzioni ActionScript introdotte nel post precedente, abbiamo bisogno di un’interfaccia che mostri all’utente finale i dati memorizzati nel database. Inoltre devono essere disponibili le normali funzioni presenti in tutti i più comuni applicativi. Senza aggiungere troppa carne al fuoco, dobbiamo consentire all’utente almeno la possibilità di spostare la nostra rubrica tramite trascinamento interattivo e di chiuderla premendo un tasto apposito.
A questo indirizzo è possibile scaricare i sorgenti per poter creare una versione intermedia della rubrica: scarica i sorgenti.
Di seguito ripercorrerò tutti i passi compiuti per ottenere il file FLA usato come sorgente.
Il documento Flash
Per pubblicare un’applicazione desktop è necessario impostare correttamente il tipo di documento. Una volta lanciato Flash bisogna selezionare nella finestra di benvenuto, sotto la colonna Crea nuovo la voce AIR. Oppure usare il percorso File > Nuovo > AIR.
Il tipo di interfaccia che è possibile osservare nel sorgente, ha le dimensioni che hanno di default tutti i documenti Flash: ovvero una larghezza di 550 pixel e un’altezza pari a 400. Nella linea temporale sono stati creati due livelli chiamati, rispettivamente dal basso verso l’alto: base ed elementi.
Nel livello base è collocato un clip denominato sfondo. Tralasciando l’aspetto grafico, questo clip consiste in un rettangolo smussato leggermente più piccolo dello Stage. Poiché un fase di pubblicazione il file finale è impostato nella modalità trasparente, quando l’utente lancia l’applicazione non vede lo Stage sottostante, ma solo il rettangolo smussato. Questo clip ci servirà anche come punto di riferimento per rendere il file trascinabile. Ogni volta che l’utente cliccherà sullo sfondo, potrà agganciare la rubrica e spostarla attraverso un drag and drop.
Il livello elementi è destinato a contenere tutti gli oggetti interattivi dell’applicazione. In questo esempio mi sono limitato a lasciare solo gli oggetti legati agli eventi essenziali. Quelli relativi alla lettura e scrittura del database saranno inseriti nel sorgente completo messo a disposizione nella terza e ultima parte del tutorial. In alto a sinistra si trova un pulsante denominato p4 attraverso il quale è possibile chiudere il programma. In basso si trova un campo TLF sola lettura il cui nome di istanza è miocampo e che serve a visualizzare un messaggio quando la connessione con il database è avvenuta. La classe documento del file Flash si chiama MioDB.as.
import flash.display.MovieClip;
import flash.display.NativeWindow;
import flash.desktop.NativeApplication;
import flash.events.MouseEvent;
import fl.controls.DataGrid;
import fl.data.DataProvider;
import flash.filesystem.File;
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLEvent;
import flash.errors.SQLError;
import flash.events.SQLErrorEvent;
public class MioDB extends MovieClip{
private var connect:SQLConnection;
private var dbFile:File;
public function MioDB(){
initDB();
sfondo.addEventListener(MouseEvent.MOUSE_DOWN,sposta);
p4.addEventListener(MouseEvent.MOUSE_DOWN,chiudi);
}
private function sposta(e:MouseEvent):void{
stage.nativeWindow.startMove();
}
private function initDB():void{
var folder:File = File.applicationStorageDirectory.resolvePath(“dati”);
folder.createDirectory();
dbFile=folder.resolvePath(“DBesempio.db”);
trace(dbFile.nativePath);
connect=new SQLConnection();
connect.addEventListener(SQLEvent.OPEN,apri);
connect.addEventListener(SQLErrorEvent.ERROR,errore);
connect.openAsync(dbFile);
}
private function apri(e:SQLEvent):void{
miocampo.text=”> Il database è aperto…”+”\n”;
}
private function errore(e:SQLErrorEvent):void{
miocampo.appendText(String(e.error.message));
miocampo.appendText(String(e.error.details));
}
private function chiudi(e:MouseEvent):void{
connect.close();
NativeApplication.nativeApplication.exit();
}
}
}
Come al solito, nella parte iniziale del listato sono importati tutti i pacchetti necessari alla nostra applicazione. Dopo la dichiarazione di classe abbiamo due proprietà private: connect e dbFile. La prima ci servirà per creare un oggetto SQLConnection, mentre la seconda fa riferimento a un oggetto File che useremo per specificare il percorso del database.
Nella funzione costruttore MioDB() viene chiamato il metodo privato initDB(). Questo metodo non fa altro che riproporre le istruzioni viste nell’articolo precedente per inizializzare un database. In questo caso, al posto di una funzione implicita viene usata la funzione listener apri(). Al verificarsi della connessione con il database, la funzione listener inserisce una frase nel campo di testo TLF. Inoltre, al verificarsi di un eventuale evento ERROR viene innescata la funzione errore(), la quale visualizza nel campo sia il codice del messaggio di errore che i dettagli ad esso relativo.
Sempre nella funzione costruttore associamo al clip sfondo la funzione listener sposta() innescata da un evento MouseDown. Ogni volta che l’utente clicca sullo sfondo è possibile trascinare spostare tutto il programma AIR tramite il metodo startMove() dell’oggetto Window. Infine, quando l’utente clicca il pulsante p4, viene innescata la funzione listener chiudi() per uscire dall’applicazione tramite il metodo exit().
La pubblicazione
Una volta descritto il codice, passiamo alla procedura di pubblicazione. Apriamo la finestra Impostazioni AIR cliccando prima su File > Impostazioni di pubblicazione e poi sul pulsante forma di chiave inglese che si trova accanto al menu AIR 3.4 for Desktop.
Nella scheda Generali inseriamo nel campo File di output esempioDB.air. Nella sezione Tipo di outpt selezioniamo il pulsante radio Pacchetto AIR. Nei campi Nome applicazione e ID applicazione scriviamo esempioDB.
Volendo possiamo anche compilare il campo opzionale Descrizione per spiegare in cosa consiste il nostro programma ed inserire eventuali riferimento all’autore. Il campo copyright serve invece ad inserire un messaggio su eventuali limitazioni o diritti legati al copyright. Per quanto riguarda il modo in cui si vedrà la rubrica, apriamo il menu Stile Finestre e selezioniamo l’opzione Chrome personalizzato (trasparente). In questo modo l’utente non vedrà lo sfondo del documento Flash, ma solo gli oggetti presenti sullo Stage. Nella seziona profili selezionaimo l’opzione Desktop.
Clicchiamo sulla scheda Firma. Se abbiamo già un certificato, ci basta selezionare il pulsante Sfoglia e individuarlo, viceversa è necessario cliccare sul pulsante Crea per ottenere un certificato autofirmato.
Tutte le applicazioni AIR devono essere necessariamente firmate. Volendo percorrere la strada canonica, sarebbe necessario ottenere un certificato digitale acquistandolo da un’autorità di certificazione. Quando si acquista un certificato, si ottiene una firma che copre una durata temporale definita. Ad esempio si potrebbe comprare una firma digitale fornita da Thawte Certificate Center che dura per due anni.
In alternativa possiamo optare per un certificato autofirmato. In cosa consiste la differenza? Semplicemente, quando si installa un’applicazione AIR che ha una semplice “autocertificazione”, il sistema la identifica come sconosciuta mettendo in guardia l’utente finale su eventuali rischi. Quindi tutto si riduce ad una questione di credibilità del fornitore.
Per creare un certificato autofirmato è necessario cliccare su Crea e – nella finestra che appare, compilare i vari campi. Vediamoli nel dettaglio:
- Nome editore: il nome di chi ha creato il programma.
- Unità organizzativa: se il fornitore consiste in una società caratterizzata da unità o divisioni operative è possibile specificarla in questo campo.
- Nome organizzazione: il nome della società, se chi realizza il programma ne fa parte.
- Paese: la sigla relativa alla nazione del fornitore.
- Password: una password che serve a proteggere il certificato e che ci verrà richiesta ogni volta che procederemo con la pubblicazione (attenzione a non dimenticarla altrimenti bisogna creare un nuovo certificato per poter pubblicare).
- Tipo: il tipo di chiave da usare per il certificato. Il valore di default è 1024-RSA.
- Salva con nome: il nome del certificato. Una volta scelto il nome, Flash lo salverà con una terminazione .p12.
- Sfoglia: un pulsante per individuare il percorso nel quale salvare il certificato. Ogni volta che Flash ci chiederà il certificato dovremo indicare come riferimento la cartella nel quale lo abbiamo salvato.
Chiaramente, se il fonitore non è una società e non ha una divisione operativa, è possibile compilare i campi con un pizzico di approssimazione. Nel mio caso ad esempio, mi sono limitato ad usare il nome dell’autore e il nome del sito web.
Passiamo alla scheda Icone e dopo aver selezionato la voce icona 16×16 clicchiamo il pulsante apri per scegliere il relativo file PNG. Le icone dell’esempio sono tutte presenti nella cartella ico che si trova nei sorgenti del tutorial. Per consentire agli utenti meno esperti di esercitarsi con il pannello di pubblicazione, ho messo a disposizione quattro icone: ico16.png, ico32.png, ico48.png e ico128.png. L’operazione va ripetuta in modo da associare ad ogni voce la corretta immagine PNG. Flash consente di impostare diverse icone in modo da coprire tutte le possibili rappresentazioni visive del sistema. Ad esempio, un’icona molto piccola viene visualizzata sulla barra delle applicazioni, un’icona media in una cartella impostata per visualizzare delle anteprime di dimensione media, e così via. Lasciamo le impostazioni predefinite nella scheda Avanzate e premiamo il pulsante Pubblica. In questo modo Flash creerà il file esempioDB.air.
La procedura di installazione
Dopo aver creato il file possiamo lanciarlo per iniziare la procedura di installazione. Nel caso eventuali antivirus attivi, dovremo specificare che il programma è sicuro sia durante l’installazione che al suo primo avvio.
Durante la procedura di installazione sarà possibile specificare se vogliamo creare un’icona sul desktop e lanciare il programma al termine dell’installazione.
Nel caso in cui l’utente non abbia installato Adobe AIR, apparirà nella stessa finestra anche l’opzione obbligatoria Installa Adobe AIR (richiesto). Nell’immagine in alto questa opzione è assente poiché il programma ha automaticamente rilevato la presenza di Adobe AIR sul mio computer.
Una volta ultimata la procedura, il programma apparirà nella lista degli applicativi installati e potrà essere eliminato con le consuete procedure di disinstallazione. Nel prossimo appuntamento ultimeremo il tutorial inserendo i pulsanti e le relative istruzioni per manipolare il database SQLite.