tecgraf.javautils.xml
Class XMLElementFactory

java.lang.Object
  extended by tecgraf.javautils.xml.XMLElementFactory
All Implemented Interfaces:
XMLElementFactoryInterface
Direct Known Subclasses:
XMLBasicElementFactory

public abstract class XMLElementFactory
extends Object
implements XMLElementFactoryInterface

Fábrica de elementos. Disponibiliza funções para instanciar classes XML a partir de uma tag ou de um objeto da aplicação que possua classe XML correspondente.
O mapeamento tag --> classe de elemento XML é usado quando um evento de nova tag é recebido pelo handler. O mapeamento classe de aplicação --> tag é usado por XMLWriter para a criação de um elemento XML a partir de um objeto da aplicação.

Author:
Andre Oliveira da Costa

Constructor Summary
protected XMLElementFactory()
          Construtor protegido.
 
Method Summary
 XMLElementInterface createXMLElementFromApp(Object appObject)
          Cria um elemento XML a partir de um objeto da aplicação.
 XMLElementInterface createXMLElementFromTag(String tagName)
          Cria um elemento XML a partir de uma tag.
protected abstract  void fillConversionTables()
          Preenche as tabelas de conversão de tag para nome de classe.
protected abstract  Map<Class<?>,String> getAppObjectToTagMap()
          Retorna o mapeamento de objetos da aplicação para tags.
protected abstract  Map<String,Class<? extends XMLElementInterface>> getTagToXMLMap()
          Retorna o mapeamento de tags para elementos XML.
 void mapAppClassToTag(Class<?> cls, String tagName)
          Associa uma classe da aplicação a uma tag.
 void mapAppClassToTag(String className, String tagName)
          Deprecated. use mapAppClassToTag(Class, String)
 void mapTagToXMLClass(String tagName, Class<? extends XMLElementInterface> cls)
          Associa uma tag a uma classe que representa o elemnto XML correspondente.
 void mapTagToXMLClass(String tagName, String className)
          Deprecated. use mapTagToXMLClass(String, Class)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface tecgraf.javautils.xml.XMLElementFactoryInterface
getAppContextObject, setAppContextObject
 

Constructor Detail

XMLElementFactory

protected XMLElementFactory()
Construtor protegido.

Method Detail

createXMLElementFromTag

public XMLElementInterface createXMLElementFromTag(String tagName)
Cria um elemento XML a partir de uma tag. Usa o mapeamento tagNamesToXMLClasses, preenchido pelo método fillConversionTables para obter o nome da classe associada à tag. Este método tipicamente não precisa ser redefinido, basta implementar o método abstrato fillConversionTables.

Specified by:
createXMLElementFromTag in interface XMLElementFactoryInterface
Parameters:
tagName - nome da tag
Returns:
elemento XML
Throws:
XMLInternalErrorException - nos casos:
  1. ClassNotFoundException: não existe o mapeamento de uma tag para a classe especificada
  2. NoSuchMethodException: não existe um construtor que receba apenas uma tag como parâmetro
  3. SecurityException: permissões de acesso do construtor não permitem sua execução
  4. InstantiationException: classe especificada corresponde a uma classe abstrata IllegalAccessException: construtor inacessível
  5. IllegalArgumentException: assinatura do construtor está errada
  6. InvocationTargetException: construtor gerou uma exceção
See Also:
XMLElementFactoryInterface.createXMLElementFromTag(java.lang.String)

createXMLElementFromApp

public XMLElementInterface createXMLElementFromApp(Object appObject)
Cria um elemento XML a partir de um objeto da aplicação. Usa o mapeamento appClassesToTags, preenchido pelo método fillConversionTables para obter o nome da tag associada ao objeto.
Este método tipicamente não precisa ser redefinido, basta implementar o método abstrato fillConversionTables.

Specified by:
createXMLElementFromApp in interface XMLElementFactoryInterface
Parameters:
appObject - objeto raiz da aplicacao.
Returns:
elemento XML
See Also:
XMLElementFactoryInterface.createXMLElementFromApp(java.lang.Object)

mapTagToXMLClass

@Deprecated
public final void mapTagToXMLClass(String tagName,
                                              String className)
Deprecated. use mapTagToXMLClass(String, Class)

Associa uma tag a uma classe que representa o elemento XML correspondente. Recebe o nome da classe como parâmetro.

Parameters:
className - nome da classe
tagName - nome da tag
Throws:
XMLInternalErrorException - se a tag é nula, se o nome da classe é nulo ou se já existe mapeamento para a tag

mapTagToXMLClass

public final void mapTagToXMLClass(String tagName,
                                   Class<? extends XMLElementInterface> cls)
Associa uma tag a uma classe que representa o elemnto XML correspondente. Recebe a própria classe como parâmetro.

Parameters:
tagName - nome da tag
cls - classe
Throws:
XMLInternalErrorException - se a tag é nula, se a classe é nula ou se já existe mapeamento para a tag

mapAppClassToTag

@Deprecated
public final void mapAppClassToTag(String className,
                                              String tagName)
Deprecated. use mapAppClassToTag(Class, String)

Associa uma classe da aplicação a uma tag. Recebe o nome da classe.

Parameters:
className - nome da classe
tagName - nome da tag

mapAppClassToTag

public final void mapAppClassToTag(Class<?> cls,
                                   String tagName)
Associa uma classe da aplicação a uma tag. Recebe a própria classe como parâmetro.

Parameters:
cls - a classe
tagName - nome da tag

fillConversionTables

protected abstract void fillConversionTables()
Preenche as tabelas de conversão de tag para nome de classe. As tabelas de conversão são:


getTagToXMLMap

protected abstract Map<String,Class<? extends XMLElementInterface>> getTagToXMLMap()
Retorna o mapeamento de tags para elementos XML. Este método é abstrato para permitir que as subclasses implementem os mapas da forma que for mais conveniente (p.ex. como campos estáticos).

Returns:
mapa definido pela subclasse para associar tags para elementos XML

getAppObjectToTagMap

protected abstract Map<Class<?>,String> getAppObjectToTagMap()
Retorna o mapeamento de objetos da aplicação para tags. Este método é abstrato para permitir que as subclasses implementem os mapas da forma que for mais conveniente (p.ex. como campos estáticos).

Returns:
mapa definido pela subclasse para associar objetos da aplicação a tags


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