Flex 3 + LCDS + Data Service Transaction

7 respostas
paulojr83

Estou com dificuldade de sincronizar na minha view os dados que fiz atualização no java.

esse é o método dentro de minha classe que extends AbstractAssembler.

public void updateItem(Object newVersion, Object previousVersion,
			List changes) {

		int productId = ((ChamadoEntity) newVersion).getId();
		try {
			dao.update((ChamadoEntity) newVersion);

		} catch (Exception e) {
			
			throw new DataSyncException(dao.findById(productId,
					(ChamadoEntity) newVersion), changes);
		}
	}

esse é o meu método no meu DAO no java.

public ChamadoEntity update(ChamadoEntity chamado) {

		HibernatUtil.openSession();
		Session session = HibernatUtil.getCurrentSession();
		List<ChamadoEntity> list = (List<ChamadoEntity>) getPendente();

		if (chamado.getStatus().equalsIgnoreCase("EXECUTANDO")) {
			for (ChamadoEntity chamadoEntity : (List<ChamadoEntity>) list) {
				if (chamadoEntity.getPosicao() != 0) {

					chamadoEntity.setPosicao(chamadoEntity.getPosicao() - 1);
					session.beginTransaction().begin();
					session.merge(chamadoEntity);
					session.beginTransaction().commit();
				}
			}
		}
		
		try {
			if (chamado.getStatus().equalsIgnoreCase("EXECUTANDO")) {
				chamado.setPosicao(0);
			}
			session.beginTransaction().begin();
			session.merge(chamado);
			session.beginTransaction().commit();
			
			return chamado;
		} catch (OptimisticLockException e) {
			throw new BeanException(e.toString());
		}
	}

a lista na minha view na é atualizada, somente o objeto que atualizei usando o método commitRequired, esse é a minha function no flex.

private function capiturarChamado():void{
    mdlChamado.chamadoEntity = .mdlChamado.list.getItemAt(dgChamados.selectedIndex) as ChamadoEntity;
    mdlChamado.chamadoEntity.posicao = 0;
    mdlChamado.chamadoEntity.executante = UsuarioModelLocator.usuarioEntity as UsuarioEntity;
    mdlChamado.chamadoEntity.status = "EXECUTANDO";
    mdlChamado.chamadoEntity.dataCaptura = new Date();
				
      if(dsChamado.commitRequired){
         dsChamado.commit();
       }
}

por via das duvida esta mandando até o dado que estou atualizando em minha regra para alterar a posição da fila.

7 Respostas

H

Opa Paulo,

Não entendi sua dúvida, vc poderia esclarecer melhor?

[]s,

paulojr83

Ola Henrique, obrigado pela resposta…
Acontece o seguinte, quando eu mando um update via LCDS em um objeto, quando eu o envio para o java esse mesmo objeto passar por uma regra de negocio que está no dao, essa regra consiste em atualizar a posicao do chamado desse objeto e de todos os outros objetos do meu dataProvider, esse objeto que atualizei o refreshFill funciona perfeitamente e atualiza corretamente em todos os clientes view, mas os outros objetos que mudaram de posicao nao atualizam na view, apenas atualiza no banco de dados e no java.

Nao sei se estou conseguindo ser claro, mas ja tive esse mesmo problema em outra aplicacao que tentei usar LCDS tambem, tudo que era atualizado no proprio flex o refreshFill resolvia, ja oque era atualizado dentro do java na minha regra de negocio qaudno o refreshfill era chamado nao aparecia na view do cliente apenas era atualizado no banco…eh como se o LCDS nao conseguisse identificar que eu fiz uma alteração no objeto e que deve ser comitada em todos clientes da view…

Muito obrigado pela ajuda

H

Você está usando paramentros para fazer o fill()?

[]s,

paulojr83

henrique.marino:
Você está usando paramentros para fazer o fill()?

[]s,

esse é o meu fill

public Collection fill(List fillParameters) {
		if (fillParameters.size() == 2) {
			return super.fill(fillParameters);
		} else {
			return dao.findAll();
		}
	}
H

Legal, mais no Flex, vc está usando algum filtro?

Só para teste, força voltar sempre tudo.

[]s,

paulojr83

henrique.marino:
Legal, mais no Flex, vc está usando algum filtro?

Só para teste, força voltar sempre tudo.

[]s,

não sem filtro, buscando todo.
como eu forço, para voltar sempre tudo do banco de dados?

paulojr83

henrique.marino:
Legal, mais no Flex, vc está usando algum filtro?

Só para teste, força voltar sempre tudo.

[]s,

Como faço para força a voltar todos os dados sempre?

grato"!!

Criado 22 de janeiro de 2010
Ultima resposta 22 de jan. de 2010
Respostas 7
Participantes 2