Quando l'applicazione viene caricata, il metodo
initApp()
viene chiamato per le applicazioni Flex o il codice linea temporale (non funzione) viene eseguito per applicazioni Flash Professional. Questo codice definisce un pacchetto XML campione da verificare tramite la classe Validator. Viene eseguito il codice seguente:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
Il pacchetto XML viene in seguito visualizzato nell'istanza di un componente TextArea sullo stage. Questo passaggio consente di modificare il pacchetto XML prima di sottoporlo a una seconda convalida.
La selezione del pulsante Validate da parte dell'utente chiama il metodo
validateData()
. Il metodo convalida il pacchetto XML del dipendente tramite il metodo
validateEmployeeXML()
della classe Validator. Il codice seguente illustra il metodo
validateData()
:
function validateData():void
{
try
{
var tempXML:XML = XML(xmlText.text);
Validator.validateEmployeeXML(tempXML);
status.text = "The XML was successfully validated.";
}
catch (error:FatalError)
{
showFatalError(error);
}
catch (error:WarningError)
{
showWarningError(error);
}
catch (error:Error)
{
showGenericError(error);
}
}
Per cominciare, viene creato un oggetto XML temporaneo usando il contenuto dell'istanza
xmlText
del componente TextArea. In seguito, viene chiamato il metodo
validateEmployeeXML()
della classe personalizzata Validator (com.example.programmingas3/errors/Validator.as) che passa l'oggetto XML temporaneo come parametro. Se il pacchetto XML è valido, l'istanza
status
del componente Label visualizza un messaggio indicante che l'operazione ha avuto esito positivo e l'applicazione si chiude. Se il metodo
validateEmployeeXML()
genera un errore personalizzato (cioè, se si verifica un errore FatalError, WarningError o GenericError), viene eseguita l'istruzione
catch
appropriata che chiama il metodo
showFatalError()
,
showWarningError()
oppure
showGenericError()
. Ogni metodo visualizza un messaggio appropriato in un'area di testo denominata
statusTex
per segnalare all'utente l'errore specifico che si è verificato. Ogni metodo aggiorna, inoltre, l'istanza
status
del componente Label con un messaggio appropriato.
Se si verifica un errore irreversibile durante il tentativo di convalidare il pacchetto XML del dipendente, il messaggio di errore viene visualizzato nell'area di testo
statusText
e l'istanza
xmlText
del componente TextArea e l'istanza
validateBtn
del componente Button vengono disabilitate, come illustra il codice seguente:
function showFatalError(error:FatalError):void
{
var message:String = error.message + "\n\n";
var title:String = error.getTitle();
statusText.text = message + " " + title + "\n\nThis application has ended.";
this.xmlText.enabled = false;
this.validateBtn.enabled = false;
hideButtons();
}
Se si verifica un'avvertenza in luogo di un errore irrecuperabile, il messaggio di errore viene comunque visualizzato nell'istanza
statusText
del componente TextArea, ma le istanze dei componenti
xmlText
e Button non vengono disabilitate. Il metodo
showWarningError()
visualizza il messaggio di errore personalizzato nell'area di testo
statusText
. Il messaggio chiede, inoltre, all'utente di decidere se desidera procedere con la convalida del pacchetto XML o annullare lo script. La seguente porzione di codice illustra il metodo
showWarningError()
:
function showWarningError(error:WarningError):void
{
var message:String = error.message + "\n\n" + "Do you want to exit this application?";
showButtons();
var title:String = error.getTitle();
statusText.text = message;
}
Quando l'utente fa clic sul pulsante Sì o No, viene chiamato il metodo
closeHandler()
. La seguente porzione di codice illustra il metodo
closeHandler()
:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Se l'utente sceglie di annullare lo script facendo clic su Sì, viene generato un errore FatalError e l'applicazione viene interrotta.