br.gov.ans.tiss.nucleo
Class MensagemTiss

java.lang.Object
  extended by br.gov.ans.tiss.nucleo.MensagemTiss
All Implemented Interfaces:
java.io.Serializable

public class MensagemTiss
extends java.lang.Object
implements java.io.Serializable

Uma mensagem que segue o padrão TISS.

See Also:
Serialized Form

Nested Class Summary
 class MensagemTiss.EventoTiss
          Um evento vinculado a uma mensagem TISS.
 
Field Summary
private  java.lang.String arquivoXml
          O arquivo XML que eventualmente contem a mensagem TISS.
private  org.w3c.dom.Document documentoMensagem
          O documento DOM composto a partir do XML da mensagem TISS.
private  java.util.ArrayList<MensagemTiss.EventoTiss> eventosTiss
          A coleção de eventos associados à mensagem.
private  java.beans.PropertyChangeSupport propertySupport
          Suporte padrão para a adição de listeners para mudanças em propriedades.
private  java.lang.String textoXml
          Texto XML da mensagem TISS.
 
Constructor Summary
MensagemTiss()
          Construtor vazio padrão.
MensagemTiss(java.lang.String pArquivoXml)
          Constrói uma mensagem TISS a partir de um nome de arquivo do sistema operacional.
 
Method Summary
 void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
          Adiciona um listener para mudanças em propriedades da fila.
 boolean equals(java.lang.Object o)
          Override para o método de Object.
 java.lang.String getArquivoXml()
          Getter para arquivoXml.
protected  java.lang.String getAtributosConcatenados(org.w3c.dom.Node pNodo)
          Obtem e retorna os atributos presentes no nodo dado, sem os tags XML.
 org.w3c.dom.Node getCabecalho()
          Obtem e retorna o cabeçalho TISS da mensagem.
protected  java.lang.String getCodigoEnvolvido(java.lang.String pTipo)
          Método usado tanto na obtenção do código do destinatário quanto na obtenção do código do remetente.
 java.lang.String getCodigoRemetente()
          Obtem e retorna o código do remetente da mensagem.
 java.lang.String getCodigoTerceiro()
          Obtem e retorna o código do destinatário da mensagem.
 org.w3c.dom.Node getCorpo()
          Obtem e retorna o corpo da mensagem TISS.
 org.w3c.dom.Node getDocumentoMensagem()
          Getter para documentoMensagem.
 org.w3c.dom.Node getEpilogo()
          Obtem e retorna o epílogo da mensagem TISS.
 java.util.ArrayList<MensagemTiss.EventoTiss> getEventosTiss()
          Getter para eventosTiss.
 java.lang.String getHashCalculado()
          Calcula "hash" MD5 sobre a mensagem.
 java.lang.String getParEnvolvido()
          Retorna par identificador das pontas de comunicação envolvidas na mensagem.
 java.lang.String getSequencialTransacao()
          Obtem e retorna o número sequencial da mensagem TISS.
protected  org.w3c.dom.Node getSubNodo(org.w3c.dom.Node pNodo, java.lang.String pNome)
          Obtem e retorna o subnodo do nodo dado que se identifica pelo nome dado.
 java.lang.String getTextoXml()
          Getter para textoXml.
 java.lang.String getTextoXmlComprimidoBase64()
          Comprime e calcula o equivalente Base64 do texto XML da mensagem.
 java.lang.String getTextoXmlEficiente()
          Calcula e retorna o texto XML, no formato mais eficiente possível para transmissão (se a forma plana for mais curta que a comprimida em base64, retorna a forma plana; senão, retorna a forma comprimida).
 java.lang.String getTipoTransacao()
          Obtem e retorna o tipo da transação que a mensagem representa.
 void gravaEvento(java.lang.String pTexto)
          Grava um evento vinculado à mensagem, para "log" futuro.
 boolean isHashOk()
          Verifica se o "hash" MD5 contido no epílogo da mensagem "bate" com o "hash" MD5 calculado a partir dos atributos concatenados.
protected  void logaEventos(java.lang.String pTipo)
          Descarrega. para um arquivo do sistema operacional, os eventos associados à mensagem.
 void logaEventosRecepcao()
          Capa de conveniência para logaEventos.
 void logaEventosTransmissao()
          Capa de conveniência para logaEventos.
 void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
          Remove um listener para mudanças em propriedades da fila.
 void setArquivoXml(java.lang.String arquivoXml)
          Setter para arquivoXml.
 void setDocumentoMensagem(MensagemTISS pOrigem)
          Forma um documento DOM a partir de um elemento MensagemTISS dado.
 void setTextoXml(java.lang.String textoXml)
          Tenta compor uma mensagem TISS a partir de um texto XML passado como um string.
 MensagemTISS toObjetoEsquemaTISS()
          Forma uma mensagem TISS, de acordo com o definido no esquema oficial, a partir da árvore DOM contida neste objeto.
 java.lang.String toString()
          Override para o método de Object.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

propertySupport

private java.beans.PropertyChangeSupport propertySupport
Suporte padrão para a adição de listeners para mudanças em propriedades.


arquivoXml

private java.lang.String arquivoXml
O arquivo XML que eventualmente contem a mensagem TISS.


eventosTiss

private java.util.ArrayList<MensagemTiss.EventoTiss> eventosTiss
A coleção de eventos associados à mensagem.


documentoMensagem

private org.w3c.dom.Document documentoMensagem
O documento DOM composto a partir do XML da mensagem TISS.


textoXml

private java.lang.String textoXml
Texto XML da mensagem TISS.

Constructor Detail

MensagemTiss

public MensagemTiss()
Construtor vazio padrão.


MensagemTiss

public MensagemTiss(java.lang.String pArquivoXml)
             throws java.io.IOException,
                    javax.xml.parsers.ParserConfigurationException,
                    org.xml.sax.SAXException,
                    TissHashException,
                    TissSchemaException,
                    TissNodoException,
                    java.net.URISyntaxException
Constrói uma mensagem TISS a partir de um nome de arquivo do sistema operacional. O arquivo deve conter XML aderente ao padrão TISS.

Parameters:
pArquivoXml - O nome COMPLETO do arquivo XML.
Throws:
java.io.IOException - .
javax.xml.parsers.ParserConfigurationException - .
org.xml.sax.SAXException - .
br.gov.ans.tiss.comuns.TissHashException - .
br.gov.ans.tiss.comuns.TissSchemaException - .
br.gov.ans.tiss.comuns.TissNodoException - .
java.net.URISyntaxException - .
TissHashException
TissSchemaException
TissNodoException
Method Detail

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Adiciona um listener para mudanças em propriedades da fila.

Parameters:
listener - O listener a ser adicionado.

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove um listener para mudanças em propriedades da fila.

Parameters:
listener - O listener a ser removido.

gravaEvento

public void gravaEvento(java.lang.String pTexto)
Grava um evento vinculado à mensagem, para "log" futuro.

Parameters:
pTexto - O texto da mensagem que descreve o evento.

logaEventos

protected void logaEventos(java.lang.String pTipo)
                    throws java.io.FileNotFoundException,
                           java.io.IOException
Descarrega. para um arquivo do sistema operacional, os eventos associados à mensagem. O tipo é um string arbitrário, que define um complemento para o nome do arquivo de log a ser usado: xmit, por exemplo, define gravação no arquivo "tiss-xmit.log" do diretório de logs.

Parameters:
pTipo - O complemento do nome do arquivo a usar. A gravação sempre se faz em arquivos nomeados "tiss-"pTipo".log".
Throws:
java.io.FileNotFoundException - .
java.io.IOException - .

logaEventosTransmissao

public void logaEventosTransmissao()
                            throws java.io.FileNotFoundException,
                                   java.io.IOException
Capa de conveniência para logaEventos. Comanda gravação dos eventos em um arquivo do tipo "xmit".

Throws:
java.io.FileNotFoundException - .
java.io.IOException - .

logaEventosRecepcao

public void logaEventosRecepcao()
                         throws java.io.FileNotFoundException,
                                java.io.IOException
Capa de conveniência para logaEventos. Comanda gravação em arquivo do tipo "recv".

Throws:
java.io.FileNotFoundException - .
java.io.IOException - .

getArquivoXml

public java.lang.String getArquivoXml()
Getter para arquivoXml.

Returns:
Valor de arquivoXml.

setArquivoXml

public void setArquivoXml(java.lang.String arquivoXml)
                   throws java.io.IOException,
                          javax.xml.parsers.ParserConfigurationException,
                          TissHashException,
                          TissSchemaException,
                          TissNodoException,
                          java.net.URISyntaxException
Setter para arquivoXml.

Parameters:
arquivoXml - Valor de arquivoXml.
Throws:
java.io.IOException - .
javax.xml.parsers.ParserConfigurationException - .
br.gov.ans.tiss.comuns.TissHashException - .
br.gov.ans.tiss.comuns.TissSchemaException - .
br.gov.ans.tiss.comuns.TissNodoException - .
java.net.URISyntaxException - .
TissHashException
TissSchemaException
TissNodoException

getEventosTiss

public java.util.ArrayList<MensagemTiss.EventoTiss> getEventosTiss()
Getter para eventosTiss.

Returns:
Valor de eventosTiss.

toString

public java.lang.String toString()
Override para o método de Object. Apresenta um string composto pelo tipo da mensagem TISS, o remetente e o destinatário. Útil para apresentações.

Overrides:
toString in class java.lang.Object
Returns:
O string que caracteriza a mensagem TISS.

equals

public boolean equals(java.lang.Object o)
Override para o método de Object. Uma mensagem TISS é dita igual a outra se tem todos os seus atributos iguais, desconsiderando-se os tags XML.

Overrides:
equals in class java.lang.Object
Parameters:
o - A mensagem a ser comparada com esta.
Returns:
TRUE, se são iguais, ou FALSE, se não são.

getDocumentoMensagem

public org.w3c.dom.Node getDocumentoMensagem()
Getter para documentoMensagem.

Returns:
Valor de documentoMensagem.

setDocumentoMensagem

public void setDocumentoMensagem(MensagemTISS pOrigem)
                          throws javax.xml.parsers.ParserConfigurationException,
                                 java.io.FileNotFoundException,
                                 java.io.IOException,
                                 org.xml.sax.SAXException,
                                 javax.xml.bind.JAXBException,
                                 TissHashException
Forma um documento DOM a partir de um elemento MensagemTISS dado.

Parameters:
pOrigem - o elemento MensagemTISS (não confunda com MensagemTiss - vide)
Throws:
javax.xml.parsers.ParserConfigurationException - .
java.io.FileNotFoundException - .
java.io.IOException - .
org.xml.sax.SAXException - .
javax.xml.bind.JAXBException - .
br.gov.ans.tiss.comuns.TissHashException - .
TissHashException

toObjetoEsquemaTISS

public MensagemTISS toObjetoEsquemaTISS()
Forma uma mensagem TISS, de acordo com o definido no esquema oficial, a partir da árvore DOM contida neste objeto. Note que MensagemTISS não é a mesma coisa que MensagemTiss (este objeto): o primeiro é a tradução JAVA do elemento XML do esquema TISS, enquanto o segundo (MensagemTiss) é uma classe utilitária, usada desde a versão 1.0.

Returns:
o objeto MensagemTISS gerado.

getCabecalho

public org.w3c.dom.Node getCabecalho()
Obtem e retorna o cabeçalho TISS da mensagem.

Returns:
O Node que representa o cabeçalho da mensagem.

getCorpo

public org.w3c.dom.Node getCorpo()
Obtem e retorna o corpo da mensagem TISS.

Returns:
O Node que representa o corpo da mensagem.

getEpilogo

public org.w3c.dom.Node getEpilogo()
Obtem e retorna o epílogo da mensagem TISS.

Returns:
O Node que representa o epílogo da mensagem.

getAtributosConcatenados

protected java.lang.String getAtributosConcatenados(org.w3c.dom.Node pNodo)
Obtem e retorna os atributos presentes no nodo dado, sem os tags XML.

Parameters:
pNodo - O Node base para a extração.
Returns:
Um string com os atributos concatenados.

getHashCalculado

public java.lang.String getHashCalculado()
Calcula "hash" MD5 sobre a mensagem.

Returns:
hash MD5 calculado, de acordo com a IN-17

isHashOk

public boolean isHashOk()
Verifica se o "hash" MD5 contido no epílogo da mensagem "bate" com o "hash" MD5 calculado a partir dos atributos concatenados.

Returns:
TRUE, se bate, ou FALSE, se não bate.

getSubNodo

protected org.w3c.dom.Node getSubNodo(org.w3c.dom.Node pNodo,
                                      java.lang.String pNome)
Obtem e retorna o subnodo do nodo dado que se identifica pelo nome dado.

Parameters:
pNodo - O nodo base.
pNome - O nome do subnodo.
Returns:
O objeto Node que representa o subnodo, ou NULL, se não existir este subnodo.

getCodigoTerceiro

public java.lang.String getCodigoTerceiro()
Obtem e retorna o código do destinatário da mensagem.

Returns:
O código do destinatário da mensagem.

getCodigoRemetente

public java.lang.String getCodigoRemetente()
Obtem e retorna o código do remetente da mensagem.

Returns:
O código do remetente da mensagem.

getParEnvolvido

public java.lang.String getParEnvolvido()
Retorna par identificador das pontas de comunicação envolvidas na mensagem.

Returns:
terceiro : remetente

getTipoTransacao

public java.lang.String getTipoTransacao()
Obtem e retorna o tipo da transação que a mensagem representa.

Returns:
O tipo de transação que a mensagem representa.

getSequencialTransacao

public java.lang.String getSequencialTransacao()
Obtem e retorna o número sequencial da mensagem TISS.

Returns:
O número sequencial da mensagem TISS.

getCodigoEnvolvido

protected java.lang.String getCodigoEnvolvido(java.lang.String pTipo)
Método usado tanto na obtenção do código do destinatário quanto na obtenção do código do remetente. Apenas para uso interno.

Parameters:
pTipo - tipo de nodo do qual se deseja extrair a informação (origem ou destino).
Returns:
O código pedido, seja ela de operador ou de prestador.

getTextoXml

public java.lang.String getTextoXml()
Getter para textoXml.

Returns:
Valor de textoXml.

setTextoXml

public void setTextoXml(java.lang.String textoXml)
                 throws java.io.IOException,
                        javax.xml.parsers.ParserConfigurationException,
                        TissHashException,
                        TissSchemaException,
                        TissNodoException,
                        java.net.URISyntaxException
Tenta compor uma mensagem TISS a partir de um texto XML passado como um string. Todas as verificações de aderência ao padrão são feitas.

Parameters:
textoXml - O XML da mensagem.
Throws:
java.io.IOException - .
javax.xml.parsers.ParserConfigurationException - .
br.gov.ans.tiss.comuns.TissHashException - .
br.gov.ans.tiss.comuns.TissSchemaException - .
br.gov.ans.tiss.comuns.TissNodoException - .
java.net.URISyntaxException - .
TissHashException
TissSchemaException
TissNodoException

getTextoXmlComprimidoBase64

public java.lang.String getTextoXmlComprimidoBase64()
Comprime e calcula o equivalente Base64 do texto XML da mensagem.

Returns:
XML da mensagem, comprimido e em formato Base64.

getTextoXmlEficiente

public java.lang.String getTextoXmlEficiente()
Calcula e retorna o texto XML, no formato mais eficiente possível para transmissão (se a forma plana for mais curta que a comprimida em base64, retorna a forma plana; senão, retorna a forma comprimida).

Returns:
XML da mensagem, na forma mais eficiente possível.