package gcom.seguranca.acesso;
import gcom.interceptor.ObjetoTransacao;
import gcom.seguranca.AtributoGrupo;
import gcom.seguranca.transacao.TabelaLinhaAlteracao;
import gcom.util.Util;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Set;
import java.util.StringTokenizer;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class OperacaoEfetuada implements Serializable {
private static final long serialVersionUID = 1L;
/** identifier field */
private Integer id;
/** nullable persistent field */
private Date ultimaAlteracao;
/** persistent field */
private gcom.seguranca.acesso.Operacao operacao;
private Set tabelaLinhaAlteracoes;
private Set usuarioAlteracoes;
private int argumentoValor;
private Integer idObjetoPrincipal;
private TabelaLinhaAlteracao tabelaLinhaAlteracaoPrincipal;
private AtributoGrupo atributoGrupo;
public TabelaLinhaAlteracao getTabelaLinhaAlteracaoPrincipal() {
return tabelaLinhaAlteracaoPrincipal;
}
public void setTabelaLinhaAlteracaoPrincipal(
TabelaLinhaAlteracao tabelaLinhaAlteracaoPrincipal) {
this.tabelaLinhaAlteracaoPrincipal = tabelaLinhaAlteracaoPrincipal;
}
private String dadosAdicionais;
/**
* @return Returns the argumentoValor.
*/
public int getArgumentoValor() {
return argumentoValor;
}
/**
* @param argumentoValor The argumentoValor to set.
*/
public void setArgumentoValor(Integer argumentoValor) {
if (argumentoValor != null) {
this.argumentoValor = argumentoValor;
} else {
this.argumentoValor = new Integer(-1);
}
}
/** full constructor */
public OperacaoEfetuada(Date ultimaAlteracao, gcom.seguranca.acesso.Operacao operacao) {
this.ultimaAlteracao = ultimaAlteracao;
this.operacao = operacao;
}
/** default constructor */
public OperacaoEfetuada() {
}
/** minimal constructor */
public OperacaoEfetuada(gcom.seguranca.acesso.Operacao operacao) {
this.operacao = operacao;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getUltimaAlteracao() {
return this.ultimaAlteracao;
}
public void setUltimaAlteracao(Date ultimaAlteracao) {
this.ultimaAlteracao = ultimaAlteracao;
}
public gcom.seguranca.acesso.Operacao getOperacao() {
return this.operacao;
}
public void setOperacao(gcom.seguranca.acesso.Operacao operacao) {
this.operacao = operacao;
}
public String toString() {
return new ToStringBuilder(this)
.append("id", getId())
.toString();
}
public Set getTabelaLinhaAlteracoes() {
return tabelaLinhaAlteracoes;
}
public void setTabelaLinhaAlteracoes(Set tabelaLinhaAlteracoes) {
this.tabelaLinhaAlteracoes = tabelaLinhaAlteracoes;
}
public Set getUsuarioAlteracoes() {
return usuarioAlteracoes;
}
public void setUsuarioAlteracoes(Set usuarioAlteracoes) {
this.usuarioAlteracoes = usuarioAlteracoes;
}
public Integer getIdObjetoPrincipal() {
return idObjetoPrincipal;
}
public void setIdObjetoPrincipal(Integer idObjetoPrincipal) {
this.idObjetoPrincipal = idObjetoPrincipal;
}
public String getDadosAdicionais() {
return dadosAdicionais;
}
public void setDadosAdicionais(String dadosAdicionais) {
this.dadosAdicionais = dadosAdicionais;
}
/**
* Preenche
* @param objetoTransacao
* @return
*/
public boolean preencherDadosAdicionais(ObjetoTransacao objetoTransacao) {
// boolean houveAlteracao = false;
String dadosAntigos = getDadosAdicionais();
if (objetoTransacao != null){
String[] atributos = objetoTransacao.retornarAtributosInformacoesOperacaoEfetuada();
if (atributos != null && getDadosAdicionais() == null){
String[] labels = objetoTransacao.retornarLabelsInformacoesOperacaoEfetuada();
String dadosAdicionais = "";
for (int i = 0; i < atributos.length; i++) {
Object valor = objetoTransacao.get(atributos[i]);
String valorFormatado = formatarConteudo(valor, atributos[i]);
dadosAdicionais += labels[i] + ":" +
(valor == null ? "" : valorFormatado) +"$";
}
setDadosAdicionais(dadosAdicionais);
}
}
return !(dadosAntigos == dadosAdicionais);
}
private String formatarConteudo(Object conteudo, String nomeAtributo){
String retorno = "";
if (conteudo != null){
if (conteudo instanceof Date){
retorno = Util.formatarDataComHora((Date)conteudo);
} else if (conteudo instanceof Integer){
if (nomeAtributo.toLowerCase().indexOf("anomesreferencia") != -1){
retorno = Util.formatarAnoMesParaMesAno((Integer) conteudo);
} else {
retorno = conteudo.toString();
}
} else if (conteudo instanceof BigDecimal){
retorno = Util.formataBigDecimal((BigDecimal) conteudo, 2, true);
} else {
retorno = conteudo.toString();
}
}
return retorno;
}
public String[][] formatarDadosAdicionais(){
String[][] valores = null;
if (dadosAdicionais != null) {
StringTokenizer stk = new StringTokenizer(dadosAdicionais,"$");
valores = new String[stk.countTokens()][2];
int i = 0;
while (stk.hasMoreElements()) {
String element = (String) stk.nextElement();
int ind = element.indexOf(":");
if (ind != -1){
String label = element.substring(0,ind);
String valor = element.substring(ind+1, element.length());
valores[i][0] = label;
valores[i][1] = valor;
i++;
}
}
}
return valores;
}
public AtributoGrupo getAtributoGrupo() {
return atributoGrupo;
}
public void setAtributoGrupo(AtributoGrupo atributoGrupo) {
this.atributoGrupo = atributoGrupo;
}
public void setArgumentoValor(int argumentoValor) {
this.argumentoValor = argumentoValor;
}
}