tecgraf.javautils.xml
Class XMLBasicHandler

java.lang.Object
  extended by tecgraf.javautils.xml.XMLBasicHandler
All Implemented Interfaces:
XMLHandlerInterface

public class XMLBasicHandler
extends Object
implements XMLHandlerInterface

Handler default. Esta classe é extendida pela aplicação, mas tipicamente apenas os métodos fatalError, error e warning precisam ser redefinidos.

Author:
Andre Oliveira da Costa

Constructor Summary
XMLBasicHandler(Class<? extends XMLElementInterface> cls)
          Cria um handler que mapeia todas as tags para um único tipo de objeto XML.
XMLBasicHandler(Map<String,Class<? extends XMLElementInterface>> tagToObjMap)
          Cria um handler que usa um mapa para criar objetos XML a partir das tags.
XMLBasicHandler(XMLElementFactoryInterface xmlFactory)
          Cria um handler que usa uma fábrica para criar objetos XML a partir das tags.
 
Method Summary
 void characters(char[] ch, int start, int length)
          Evento de leitura de caracteres (CDATA).
 void endDocument()
          Callback executada ao final do processamento do documento.
 void endDocument(XMLElementInterface rootElement)
          Callback executada quando o elemento foi inteiramente lido.
 void endElement(String uri, String localName, String qName)
          Evento de tag de fechamento de um elemento.
 void error(XMLException e)
          Evento associado a um erro.
 void fatalError(XMLException e)
          Evento associado a um erro fatal.
 String getDTD()
          Retorna o DTD associado ao documento.
 InputSource getInputSource()
          Retorna o InputSource associado a este handler.
 XMLElementInterface getRootElement()
          Retorna o elemento-raiz do documento
 org.xml.sax.helpers.DefaultHandler getSAXInternalHandler()
          Retorna o handler interno (SAX) usado por este handler.
 XMLElementFactoryInterface getXMLFactory()
          Retorna a fábrica de elementos XML associada ao handler.
 InputSource resolveEntity(String publicId, String systemId)
          Evento chamado quando uma external entity (p.ex.
 void setDTD(String dtd)
          Define o DTD associado ao documento.
 void setInputSource(Reader reader)
          Define o inputSource do handler a partir de um Reader.
 void startElement(String uri, String localName, String qName, List<XMLAttribute> attributes)
          Evento de nova tag.
 void warning(XMLException e)
          Evento associado a um warning.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XMLBasicHandler

public XMLBasicHandler(XMLElementFactoryInterface xmlFactory)
Cria um handler que usa uma fábrica para criar objetos XML a partir das tags.

Parameters:
xmlFactory - fabrica

XMLBasicHandler

public XMLBasicHandler(Map<String,Class<? extends XMLElementInterface>> tagToObjMap)
Cria um handler que usa um mapa para criar objetos XML a partir das tags.

Parameters:
tagToObjMap - mapa relacionando tags a objetos XML

XMLBasicHandler

public XMLBasicHandler(Class<? extends XMLElementInterface> cls)
Cria um handler que mapeia todas as tags para um único tipo de objeto XML.

Parameters:
cls - classe do objeto XML que será mapeado a todas as tags
Method Detail

getRootElement

public final XMLElementInterface getRootElement()
Retorna o elemento-raiz do documento

Specified by:
getRootElement in interface XMLHandlerInterface
Returns:
raiz

getSAXInternalHandler

public final org.xml.sax.helpers.DefaultHandler getSAXInternalHandler()
Retorna o handler interno (SAX) usado por este handler.

Specified by:
getSAXInternalHandler in interface XMLHandlerInterface
Returns:
handler interno (SAX) usado por este handler

characters

public final void characters(char[] ch,
                             int start,
                             int length)
                      throws XMLException
Evento de leitura de caracteres (CDATA). Deve anexar os caracteres lidos ao valor do elemento atualmente no topo da pilha de elementos abertos ( openedElements).

Specified by:
characters in interface XMLHandlerInterface
Parameters:
ch - - buffer onde foram lidos os caracteres
start - - posição no buffer do primeiro caracter lido
length - - quantidade de caracteres lidos
Throws:
XMLException
See Also:
DefaultHandler.characters(char[], int, int)

startElement

public final void startElement(String uri,
                               String localName,
                               String qName,
                               List<XMLAttribute> attributes)
                        throws XMLException
Evento de nova tag. Delega à factory a responsabilidade de criar o objeto correto. Coleta os atributos do elemento e os armazena em um mapa no próprio elemento. Se for o primeiro elemento a ser criado, identifica-o como raiz da árvore.

Specified by:
startElement in interface XMLHandlerInterface
Parameters:
uri - - o identificador do namespace do elemento, ou a string vazia se o elemento não possui namespace específico ou se o processamento de namespaces não está habilitado
localName - - o nome local (sem prefixo), ou a string vazia se o processamento de namespaces não está habilitado
qName - - o nome qualificado da tag
attributes - - lista de atributos associados à tag
Throws:
XMLException
See Also:
DefaultHandler.startElement(String, String, String, Attributes)

endElement

public final void endElement(String uri,
                             String localName,
                             String qName)
                      throws XMLException
Evento de tag de fechamento de um elemento. Neste momento, temos que desempilhar quaisquer elementos que existam na pilha e defini-los como filhos do elemento em questão. É nesta hora também que o objeto da aplicação correspondente será criado pela aplicação (se for o caso).

Esta callback executa o método endTag do elemento, passando como parâmetro uma lista com os filhos deste (a lista estará vazia caso o elemento não tenha filhos).

Specified by:
endElement in interface XMLHandlerInterface
Parameters:
uri - - URL associada ao namespace do elemento. Caso o elemento não tenha namespace ou o uso de namespaces esteja desabilitado, é uma string vazia
localName - - o nome local ou uma string vazia caso o uso de namespaces esteja desabilitado
qName - - o nome do elemento (tag)
Throws:
XMLException

setInputSource

public final void setInputSource(Reader reader)
Define o inputSource do handler a partir de um Reader.

Specified by:
setInputSource in interface XMLHandlerInterface
Parameters:
reader - Reader a ser usado para leitura do XML

getInputSource

public final InputSource getInputSource()
Retorna o InputSource associado a este handler.

Specified by:
getInputSource in interface XMLHandlerInterface
Returns:
InputSource associado ao handler

resolveEntity

public InputSource resolveEntity(String publicId,
                                 String systemId)
                          throws XMLException
Evento chamado quando uma external entity (p.ex. a URL associada ao DTD) é resolvida.

Este método deve ser sobrescrito pelas classes que precisam redefinir a localização do DTD.

Specified by:
resolveEntity in interface XMLHandlerInterface
Parameters:
publicId - FIXME entender do que se trata... na prática, raramente é usado
systemId - para declarações do tipo <!DOCTYPE xxx SYSTEM yyy>, o valor deste parâmetro é yyy (a referência ao DTD)
Returns:
null para sinalizar que o tratamento default deve ser aplicado
Throws:
XMLException
See Also:
DefaultHandler.resolveEntity(String, String)

setDTD

public final void setDTD(String dtd)
Define o DTD associado ao documento. Usado no processo de escrita do XML.

Specified by:
setDTD in interface XMLHandlerInterface
Parameters:
dtd -

getDTD

public final String getDTD()
Retorna o DTD associado ao documento.

Specified by:
getDTD in interface XMLHandlerInterface
Returns:
DTD associado ao documento.

getXMLFactory

public final XMLElementFactoryInterface getXMLFactory()
Retorna a fábrica de elementos XML associada ao handler.

Specified by:
getXMLFactory in interface XMLHandlerInterface
Returns:
um objeto que implemente XMLElementFactoryInterface

endDocument

public final void endDocument()
                       throws XMLException
Callback executada ao final do processamento do documento.

Specified by:
endDocument in interface XMLHandlerInterface
Throws:
XMLException

endDocument

public void endDocument(XMLElementInterface rootElement)
Callback executada quando o elemento foi inteiramente lido. Recebe como parâmetro o elemento-raiz do XML. Aplicações que precisem ser notificadas quando a leitura do documento for concluída devem redefinir este método.

Specified by:
endDocument in interface XMLHandlerInterface
Parameters:
rootElement - raiz do XML

warning

public void warning(XMLException e)
             throws XMLException
Evento associado a um warning. Deve ser redefinido pelas subclasses.

Specified by:
warning in interface XMLHandlerInterface
Parameters:
e - - exceção que gerou o warning
Throws:
XMLException

fatalError

public void fatalError(XMLException e)
                throws XMLException
Evento associado a um erro fatal. Deve ser redefinido pelas subclasses.

Specified by:
fatalError in interface XMLHandlerInterface
Parameters:
e - - exceção que gerou o erro
Throws:
XMLException

error

public void error(XMLException e)
           throws XMLException
Evento associado a um erro. Deve ser redefinido pelas subclasses.

Specified by:
error in interface XMLHandlerInterface
Parameters:
e - - exceção que gerou o erro
Throws:
XMLException
See Also:
ErrorHandler.error(org.xml.sax.SAXParseException)


Copyright © 2014 Tecgraf/PUC-Rio. All rights reserved.