tecgraf.javautils.xml.conversion
Class XMLConverter

java.lang.Object
  extended by tecgraf.javautils.xml.conversion.XMLConverter

public class XMLConverter
extends Object

Implementação do conversor de arquivos XML. O conversor possui uma lista de conversões, que serão aplicadas na ordem em que foram definidas. O objetivo é converter arquivos validados por versões anteriores do DTD para arquivos válidos de acordo com o DTD mais atual.

A lista de conversões é percorrida em ordem, até que seja encontrada a primeira conversão capaz de lidar com o DTD associado ao XML em questão. A partir daí, todas as conversões subsequentes têm que ser aplicadas, sem exceção (para que se garanta que o resultado final esteja compatível com a última versão do DTD).

See Also:
XMLConversionInterface

Nested Class Summary
static class XMLConverter.XMLConversionStatus
          Enumeração com os possíveis estados de uma conversão.
 
Constructor Summary
XMLConverter()
          Construtor vazio.
XMLConverter(String dtdPrefix)
          Instancia um conversor que aponta para DTDs externos (fora do JAR) e usa o encoding default do sistema.
XMLConverter(String dtdPrefix, boolean fromJar)
          Instancia um conversor usando o encoding default do sistema.
XMLConverter(String dtdPrefix, boolean fromJar, String encoding)
          Instancia um conversor.
XMLConverter(String dtdPrefix, boolean fromJar, String encoding, XMLConversionInterface... conversions)
          Instancia um conversor.
XMLConverter(XMLConversionInterface... conversions)
          Insancia um conversor, recebendo a lista de conversões a serem aplicadas.
 
Method Summary
 XMLConverter addConversion(XMLConversionInterface conversion)
          Adiciona uma nova conversão ao final da lista de conversões.
 XMLConverter convert(File src, boolean validate)
          Converte o XML armazenado em um arquivo.
 XMLConverter convert(InputStream src, boolean validate)
          Converte um XML acessado a partir de um InputStream.
 XMLConverter convert(Reader src, boolean validate)
          Converte um XML acessado a partir de um Reader.
 XMLConverter convert(String content, boolean validate)
          Converte um XML armazenado em uma string.
 XMLConverter.XMLConversionStatus getConversionStatus()
          Indica o status da conversão.
 List<String> getParserErrors()
          Retorna a lista de erros de processamento do XML.
 boolean hasParserErrors()
          Indica se houve erros no processamento do XML.
 boolean saveTo(File file)
          Salva o resultado da conversão em um arquivo.
 boolean saveTo(OutputStream stream)
          Salva o resultado da conversão em um stream de saída, usando o encoding default.
 boolean saveTo(Writer writer)
          Salva o resultado da conversão em um Writer.
 String saveToString()
          Aplica todas as conversões e retorna o resultado como uma string.
 XMLConverter setDTDprefix(String dtdPrefix)
          Define o prefixo para o DTD, apontando para uma URL ou o filesystem.
 XMLConverter setDTDprefix(String dtdPrefix, boolean fromJar)
          Define um prefixo para o DTD, opcionalmente apontando para o próprio JAR.
 XMLConverter setEncoding(String encoding)
          Define o encoding do XML (vãlido apenas para leitura via File ou InputStream).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XMLConverter

public XMLConverter()
Construtor vazio. Usa o encoding default do sistema, e não define prefixo para os DTDs.


XMLConverter

public XMLConverter(String dtdPrefix)
Instancia um conversor que aponta para DTDs externos (fora do JAR) e usa o encoding default do sistema.

Parameters:
dtdPrefix - prefixo para o DTD. Pode ser uma URL, um path para o filesystem local ou null

XMLConverter

public XMLConverter(String dtdPrefix,
                    boolean fromJar)
Instancia um conversor usando o encoding default do sistema.

Parameters:
dtdPrefix - prefixo para o DTD. Pode ser uma URL, um path para o filesystem local ou null. Se fromJar == true, deve ser relativo ao JAR corrente
fromJar - true para indicar se o prefixo é relativo ao JAR, false para indicar que é uma referência externa

XMLConverter

public XMLConverter(String dtdPrefix,
                    boolean fromJar,
                    String encoding)
Instancia um conversor.

Parameters:
dtdPrefix - prefixo para o DTD. Pode ser uma URL, um path para o filesystem local ou null. Se fromJar == true, deve ser relativo ao JAR corrente
fromJar - true para indicar se o prefixo é relativo ao JAR, false para indicar que é uma referência externa
encoding - encoding para leitura do XML (null para usar o encoding default). Vãlido apenas para conversão via File ou InputStream
Throws:
IllegalCharsetNameException - se o encoding é inválido
UnsupportedCharsetException - se o encoding não é suportado por esta JVM

XMLConverter

public XMLConverter(String dtdPrefix,
                    boolean fromJar,
                    String encoding,
                    XMLConversionInterface... conversions)
Instancia um conversor.

Parameters:
dtdPrefix - prefixo para o DTD. Pode ser uma URL, um path para o filesystem local ou null. Se fromJar == true, deve ser relativo ao JAR corrente
fromJar - true para indicar se o prefixo é relativo ao JAR, false para indicar que é uma referência externa
encoding - encoding para leitura do XML (null para usar o encoding default) Vãlido apenas para conversão via File ou InputStream
conversions - conversões a serem aplicadas, em ordem
Throws:
IllegalCharsetNameException - se o encoding é inválido
UnsupportedCharsetException - se o encoding não é suportado por esta JVM

XMLConverter

public XMLConverter(XMLConversionInterface... conversions)
Insancia um conversor, recebendo a lista de conversões a serem aplicadas. Não define prefixo para o DTD e usa o encoding default.

Parameters:
conversions - conversões a serem aplicadas. As conversões serão aplicadas na ordem em que foram definidas
Method Detail

setDTDprefix

public XMLConverter setDTDprefix(String dtdPrefix)
Define o prefixo para o DTD, apontando para uma URL ou o filesystem. Para definir um prefixo relativo ao próprio JAR, use setDTDprefix(String, boolean).

Parameters:
dtdPrefix - prefixo para o DTD. Se não possuir o protocolo ( http:// ou file://) será assumido um path (absoluto ou relativo) no filesystem
Returns:
o próprio conversor, para encadeamento
See Also:
setDTDprefix(String, boolean)

setDTDprefix

public XMLConverter setDTDprefix(String dtdPrefix,
                                 boolean fromJar)
Define um prefixo para o DTD, opcionalmente apontando para o próprio JAR.

Parameters:
dtdPrefix - prefixo para o DTD
fromJar - true para indicar que o prefixo se refere ao próprio JAR (neste caso deve ser um path absoluto ou relativo, sem protocolo)
Returns:
o próprio conversor, para encadeamento
See Also:
setDTDprefix(String)

setEncoding

public XMLConverter setEncoding(String encoding)
Define o encoding do XML (vãlido apenas para leitura via File ou InputStream). Caso não seja executado, o encoding padrão será usado.

Parameters:
encoding - (null para usar o encoding padrão)
Returns:
o próprio conversor, para encadeamento
Throws:
IllegalCharsetNameException - se o nome do charset é inválido
UnsupportedCharsetException - se o charset não é suportado por esta JVM

addConversion

public XMLConverter addConversion(XMLConversionInterface conversion)
                           throws XMLConversionException
Adiciona uma nova conversão ao final da lista de conversões.

Parameters:
conversion - - nova conversão
Returns:
o próprio conversor, para encadeamento
Throws:
XMLConversionException - se a nova conversão não for capaz de processar a saída da última conversão da lista

convert

public XMLConverter convert(String content,
                            boolean validate)
                     throws XMLConversionException
Converte um XML armazenado em uma string.

Parameters:
content - string contendo o documento XML
validate - true se o XML deve ser validado de acordo com seu DTD
Returns:
o próprio conversor, para encadeamento
Throws:
XMLConversionException

convert

public XMLConverter convert(File src,
                            boolean validate)
                     throws XMLConversionException,
                            FileNotFoundException
Converte o XML armazenado em um arquivo.

Parameters:
src - arquivo XML
validate - true se o XML deve ser validado de acordo com seu DTD
Returns:
o próprio conversor, para encadeamento
Throws:
XMLConversionException - se houve algum erro na conversão
FileNotFoundException - se o arquivo passado como parâmetro era não existe

convert

public XMLConverter convert(InputStream src,
                            boolean validate)
                     throws XMLConversionException
Converte um XML acessado a partir de um InputStream.

Parameters:
src - stream para leitura do XML
validate - true se o XML deve ser validado de acordo com seu DTD
Returns:
o próprio conversor, para encadeamento
Throws:
XMLConversionException

convert

public XMLConverter convert(Reader src,
                            boolean validate)
                     throws XMLConversionException
Converte um XML acessado a partir de um Reader.

Parameters:
src - reader para leitura do XML
validate - true se o XML deve ser validado de acordo com seu DTD
Returns:
o próprio conversor, para encadeamento
Throws:
XMLConversionException

saveToString

public String saveToString()
                    throws XMLConversionException
Aplica todas as conversões e retorna o resultado como uma string.

Returns:
resultado da conversão, ou null em caso de erro
Throws:
XMLConversionException - se houver algum erro no processo de conversão. Diferentes tipos de problema podem acontecer, o tipo da exceção deve ser consultado para identificar a causa exata.

saveTo

public boolean saveTo(File file)
               throws XMLConversionException,
                      FileNotFoundException
Salva o resultado da conversão em um arquivo.

Parameters:
file - arquivo de destino
Returns:
true se o resultado foi gravado com sucesso
Throws:
XMLConversionException - se houver algum erro no processo de conversão. Diferentes tipos de problema podem acontecer, o tipo da exceção deve ser consultado para identificar a causa exata.
FileNotFoundException - se o arquivo passado como parâmetro era não existe
See Also:
saveTo(OutputStream)

saveTo

public boolean saveTo(OutputStream stream)
               throws XMLConversionException
Salva o resultado da conversão em um stream de saída, usando o encoding default.

IMPORTANTE: o stream não será fechado aós a gravação.

Parameters:
stream - stream de saída
Returns:
true se o resultado foi gravado com sucesso
Throws:
XMLConversionException - se houver algum erro no processo de conversão. Diferentes tipos de problema podem acontecer, o tipo da exceção deve ser consultado para identificar a causa exata.
See Also:
saveTo(File)

saveTo

public boolean saveTo(Writer writer)
               throws XMLConversionException
Salva o resultado da conversão em um Writer.

Parameters:
writer -
Returns:
true se o resultado foi gravado com sucesso
Throws:
XMLConversionException - se houver algum erro no processo de conversão. Diferentes tipos de problema podem acontecer, o tipo da exceção deve ser consultado para identificar a causa exata.

getConversionStatus

public XMLConverter.XMLConversionStatus getConversionStatus()
Indica o status da conversão.

Returns:
código indicando o status da conversão

getParserErrors

public List<String> getParserErrors()
                             throws XMLConversionException
Retorna a lista de erros de processamento do XML.

Returns:
lista com os erros ocorridos durante o processamento do XML. Caso não tenha ocorrido nenhum erro, a lista estará vazia
Throws:
XMLConversionException - se o parser ainda não foi instanciado

hasParserErrors

public boolean hasParserErrors()
                        throws XMLConversionException
Indica se houve erros no processamento do XML.

Returns:
flag indicando se houve erros no processamento do XML
Throws:
XMLConversionException - se o parser ainda não foi instanciado


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