es.juntadeandalucia.panelGestion.persistencia.dao.impl.TableDAOImpl.java Source code

Java tutorial

Introduction

Here is the source code for es.juntadeandalucia.panelGestion.persistencia.dao.impl.TableDAOImpl.java

Source

/**
 * Empresa desarrolladora: GUADALTEL S.A.
 *
 * Autor: Junta de Andaluca
 *
 * Derechos de explotacin propiedad de la Junta de Andaluca.
 *
 * Este programa es software libre: usted tiene derecho a redistribuirlo y/o modificarlo bajo los trminos de la
 *
 * Licencia EUPL European Public License publicada por el organismo IDABC de la Comisin Europea, en su versin 1.0.
 * o posteriores.
 *
 * Este programa se distribuye de buena fe, pero SIN NINGUNA GARANT?A, incluso sin las presuntas garantas implcitas
 * de USABILIDAD o ADECUACIN A PROPSITO CONCRETO. Para mas informacin consulte la Licencia EUPL European Public
 * License.
 *
 * Usted recibe una copia de la Licencia EUPL European Public License junto con este programa, si por algn motivo no
 * le es posible visualizarla, puede consultarla en la siguiente URL: http://ec.europa.eu/idabc/servlets/Doc?id=31099
 *
 * You should have received a copy of the EUPL European Public License along with this program. If not, see
 * http://ec.europa.eu/idabc/servlets/Doc?id=31096
 *
 * Vous devez avoir reu une copie de la EUPL European Public License avec ce programme. Si non, voir
 * http://ec.europa.eu/idabc/servlets/Doc?id=30194
 *
 * Sie sollten eine Kopie der EUPL European Public License zusammen mit diesem Programm. Wenn nicht, finden Sie da
 * http://ec.europa.eu/idabc/servlets/Doc?id=29919
 */
/**
 * 
 */
package es.juntadeandalucia.panelGestion.persistencia.dao.impl;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Restrictions;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;

import es.juntadeandalucia.panelGestion.persistencia.dao.TableDAO;
import es.juntadeandalucia.panelGestion.persistencia.entidades.Table;

@AutoCreate
@Name("tableDao")
public class TableDAOImpl extends BaseDAO implements TableDAO, Serializable {

    /**
     * Generated version UID
     */
    private static final long serialVersionUID = -6453555297114204591L;

    @In(create = true, required = true, value = "persistenceContextPanelGestion")
    private EntityManager entityManager;

    public TableDAOImpl() {
    }

    @Override
    public Table findById(long id) {
        Table table = (Table) getSession().get(Table.class, id);
        return table;
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Table> findBySchema(long schemaId) {
        Criteria criteria = getSession().createCriteria(Table.class);

        criteria.setFetchMode("schema", FetchMode.JOIN);
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        criteria.add(Restrictions.eq("schema.id", schemaId));

        return criteria.list();
    }

    @Override
    public boolean create(Table table) throws Exception {
        table.setCreationDate(new Date());
        EntityTransaction tx = null;
        Session session = getSession();
        try {
            tx = entityManager.getTransaction();
            tx.begin();
            entityManager.persist(table);
            tx.commit();
            session.flush();
        } catch (Exception e) {
            if ((tx != null) && tx.isActive()) {
                tx.rollback();
            }
            throw e;
        }

        return true;
    }

    @Override
    public void update(Table table) throws Exception {
        Exception exception = null;

        table.setModificationDate(new Date());

        Session session = getSession();
        Transaction tx = null;

        try {
            tx = session.beginTransaction();
            session.saveOrUpdate(table);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
            exception = e;
            session.flush();
        }
        if (exception != null) {
            throw exception;
        }
    }

    @Override
    public void delete(Table table) throws Exception {
        Exception exception = null;

        Session session = getSession();
        Transaction tx = null;

        try {
            tx = session.beginTransaction();
            session.delete(table);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
            exception = e;
            session.flush();
        }
        if (exception != null) {
            throw exception;
        }
    }

    /**
     * @return the entityManager
     */
    public EntityManager getEntityManager() {
        return entityManager;
    }

    /**
     * @param entityManager the entityManager to set
     */
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }
}