Comparação entre dados do form com dados da tabela

2 respostas
B

Pessoal,
Sou iniciante em Java e to precisando mt da ajuda de vcs. Preciso saber como comparar dados de um form (que vem como String) com os dados de uma tabela Funcionario (atributos do tipo String, Long e Date), antes de gravar numa tabela de historico, caso haja alguma alteração nos novos dados do formulario (como se fosse tabela de log p/ registrar todas as alterações).
Todos os id dos objetos são do tipo Long, todas as datas são do tipo Date e o resto é do tipo String

O trecho do meu codigo é esse:

Funcionario f = (Funcionario) listaFuncionario.get(0);

if (f.getMatricula().charAt(2) == 2){

String idTarTransp = (String) PropertyUtils.getSimpleProperty(form, idTarTransp);

String isAlimentacao = (String) PropertyUtils.getSimpleProperty(form,isAlimentacao);

String isTransporte = (String) PropertyUtils.getSimpleProperty(form,isTransporte);

String obs = (String) PropertyUtils.getSimpleProperty(form, obs);

Date dataAdmissao = FormUtils.stringToDate(String) PropertyUtils.getSimpleProperty(form, dataAdmissao);
if(!idTarTransp.equals(f.getIdTarTransp()) || (!dataAdmissao.equals(f.getDataAdmissao()) ||
             	(!obs.equals(f.getObs()) || (!isTransporte.equals(f.getIsTransporte())||
		        	(!isAlimentacao.equals(f.getIsAlimentacao()))))){
											
				//GRAVRAR NA TABELA DE HISTORICO SOMENTE OS DADOS ALTERADOS
				HistFuncionario hf = new HistFuncionario();
				hf.setIdFuncionario(f.getId());
				hf.setDataAdmissao(f.getDataAdmissao());
				hf.setIdTarTransp(f.getIdTarTransp());
				hf.setIsAlimentacao(f.getIsAlimentacao());
				hf.setIsTransporte(f.getIsTransporte());
				hf.setObs(f.getObs());
	synchronized (gerPersist) {
                                            gerPersist.saveOrUpdate(c);
		gerPersist.commit();	
                	gerPersist.save(hf);
	  }
}

2 Respostas

F

Olá colega;

Se a questão é para gerar log de alteração, faça isso pelo banco.
Crie um trigger “after update” onde você pode gravar o conteúdo do campo antes (old) e depois (new) da gravação.

Att.

Marco Aurélio

B

Vlw pela dica, mas la no trabalho eles querem tudo padronizado e codificado em java, nada no banco (coisa de louco) :frowning:
Consegui resolver criando variaveis pra receberem os dados do formulario (com os respectivos castings), e comparando com os dados contidos no objeto, antes de alterá-lo e deu certo. A tabela de historico só é populada quando os dados são diferentes.

Criado 27 de julho de 2010
Ultima resposta 29 de jul. de 2010
Respostas 2
Participantes 2