Quando o aplicativo é carregado, o método
initApp()
é chamado para os aplicativos Flex ou o código (não função) de linha de tempo é executado para os aplicativos do Flash Professional. Esse código define um pacote XML de exemplo a ser verificado pela classe Validator. O seguinte código é executado:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
O pacote XML é exibido posteriormente em uma ocorrência do componente TextArea no Palco. Esta etapa permite modificar o pacote XML antes de tentar validá-lo novamente.
Quando o usuário clica no botão Validate, o método
validateData()
é chamado. Esse método valida o pacote XML funcionário usando o método
validateEmployeeXML()
na classe Validator. O código a seguir mostra o método
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);
}
}
Primeiro, um objeto XML temporário é criado usando o conteúdo da ocorrência do componente TextArea
xmlText
. Em seguida, o método
validateEmployeeXML()
na classe Validator personalizada (com.example.programmingas3/errors/Validator.as) é chamado e transmite o objeto XML temporário como um parâmetro. Se o pacote XML for válido, a ocorrência do componente Label
status
exibirá uma mensagem de êxito e o aplicativo será encerrado. Se o método
validateEmployeeXML()
lançar um erro personalizado (isto é, se ocorrer um FatalError, WarningError ou um Error genérico), a instrução
catch
apropriada executará e chamará o método
showFatalError()
,
showWarningError()
ou
showGenericError()
. Cada um desses métodos exibe uma mensagem apropriada em uma área de texto chamada
statusText
para notificar o usuário do erro específico que ocorreu. Cada método também atualiza a ocorrência do componente Label
status
com uma mensagem específica.
Se ocorrer um erro fatal durante a tentativa de validar o pacote XML funcionário, a mensagem de erro será exibida na área de texto
statusText
e as ocorrências dos componentes TextArea
xmlText
e Button
validateBtn
serão desativadas, como mostra o seguinte código:
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 ocorrer um erro de aviso, em vez de um erro fatal, a mensagem de erro será exibida na ocorrência
statusText
TextArea, mas as ocorrências dos componentes Button e TextField
xmlText
não serão desativadas. O método
showWarningError()
exibe uma mensagem de erro personalizada na área de texto
statusText
. A mensagem também solicita que o usuário decida se deseja prosseguir com a validação do XML ou cancelar o script. O seguinte trecho mostra o método
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 o usuário clica no botão Yes ou No, o método
closeHandler()
é chamado. O seguinte trecho mostra o método
closeHandler()
:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Se o usuário decidir cancelar o script clicando em Yes, um FatalError será lançado fazendo com que o aplicativo seja encerrado.