/* * Biblioteca de codigo Java * Desenvolvida por Diego Tadeu e Jose Renato */ package jrdis.gen.dao; import com.tecgraf.dao.DAOException; import com.tecgraf.dao.GenericDAO; import jrdis.gen.objeto.IObjetoComEstados; import jrdis.gen.objeto.IObjetoComEstados.EstadoObjeto; /** * AbstractDAO e uma classe que implementa a interface IDAO extendendo * GenericDAO. * * Essa classe, como o descrito na interface IDAO, facilitara o trabalho para * a manipulacao de objetos, quando os mesmo tivrem que ser armazenados no banco * de dados. * * Para isso, utilize o metodo descarregar. * * @param T e o tipo do objeto a ser manipulado. * * @see objeto.IObjetoComEstados * @see dao.IDAO * @see com.tecgraf.dao.GenericDAO * * @author Diego Tadeu e Jose Renato */ public abstract class AbstractDAO extends GenericDAO implements IDAO { public boolean objetoExiste(T objeto) throws DAOException { return ( null != findByExample( objeto ) ); } public void descarregar(T objeto) throws DAOException { if ( null == objeto ) { throw new DAOException( "Objeto não pode ser nulo." ); } // Verificando o estado do objeto para a tomada de decisoes EstadoObjeto estado = objeto.getEstadoInterno(); if ( estado == EstadoObjeto.ANTIGO_INALTERADO ) { // nao faz nada, ja que o objeto nao foi alterado return; } try { if ( estado == EstadoObjeto.NOVO ) { // como e um objeto novo, ele sera inserido na base de dados makePersistent( objeto ); } else if ( estado == EstadoObjeto.ANTIGO_ALTERADO ) { // como e um objeto alterado, ele sera atualizado na base de dados updatePersistent( objeto ); } else if ( estado == EstadoObjeto.ANTIGO_EXCLUIDO ) { // como e um objeto excluido, ele sera removido da base de dados deletePersistent( objeto ); } } catch(DAOException ex) { throw new DAOException( "Ocorreu um erro ao tentar descarregar o objeto: " + objeto, ex ); } } } // Fim da classe AbstractDAO