Package com.mustafaiev.tair.cts.dao.jpa

Source Code of com.mustafaiev.tair.cts.dao.jpa.PurchaseDAO

package com.mustafaiev.tair.cts.dao.jpa;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.mustafaiev.tair.cts.dao.IPurchaseDAO;
import com.mustafaiev.tair.cts.exeption.DataNotRemovedException;
import com.mustafaiev.tair.cts.exeption.DataNotStoredException;
import com.mustafaiev.tair.cts.model.Purchase;

@Repository(value = "purchaseDao")
@Transactional
public class PurchaseDAO implements IPurchaseDAO {

  private static final String SELECT_ALL_FROM_PURCHASE = "from Purchase";

  private static final String DELETE_FROM_PURCHASE = "delete from Purchase where id = ?";
  private static final String SELECT_PURCHASES_FOR_BASKET = "from Purchase where basket_id = ?";

  private static final Logger LOGGER = Logger.getLogger(PurchaseDAO.class);

  private HibernateTemplate hibernateTemplate;

  @Autowired
  public void setHibernateTemplate(final HibernateTemplate hibernateTemplate) {
    this.hibernateTemplate = hibernateTemplate;
  }

  @Override
  public void doSave(final Purchase t) throws DataNotStoredException {
    final Session session = this.hibernateTemplate.getSessionFactory()
        .openSession();
    final Transaction transaction = session.getTransaction();
    try {
      transaction.begin();
      session.save(t);
      transaction.commit();
    } catch (final HibernateException e) {
      LOGGER.error(e);
    } finally {
      session.close();
    }

  }

  @Override
  public void saveBatch(final List<Purchase> purchases)
      throws DataNotStoredException {
    final Session session = this.hibernateTemplate.getSessionFactory()
        .openSession();
    final Transaction transaction = session.getTransaction();

    try {
      transaction.begin();
      for (final Purchase purchase : purchases) {
        if (purchase != null) {
          session.saveOrUpdate(purchase);
        }
      }
      transaction.commit();
    } catch (final HibernateException e) {
      LOGGER.error(e);
    } finally {
      session.close();
    }
  }

  @Override
  public void doDeleteById(final Long id) throws DataNotRemovedException {

    final Session session = this.hibernateTemplate.getSessionFactory()
        .openSession();
    final Transaction transaction = session.getTransaction();

    try {
      transaction.begin();
      session.createQuery(DELETE_FROM_PURCHASE).setLong(0, id)
          .executeUpdate();
      transaction.commit();
    } catch (final HibernateException e) {
      LOGGER.error(e);
    } finally {
      session.close();
    }

  }

  @Override
  public void deleteBatch(final List<Purchase> purchases) {
    final Session session = this.hibernateTemplate.getSessionFactory()
        .openSession();
    final Transaction transaction = session.getTransaction();

    try {
      transaction.begin();
      for (final Purchase purchase : purchases) {
        if (purchase != null) {
          session.createQuery(DELETE_FROM_PURCHASE)
              .setLong(0, purchase.getId()).executeUpdate();
        }
      }
      transaction.commit();
    } catch (final HibernateException e) {
      LOGGER.error(e);
    } finally {
      session.close();
    }
  }

  @Override
  @SuppressWarnings("unchecked")
  public List<Purchase> retrievePurchases() {
    final Session session = this.hibernateTemplate.getSessionFactory()
        .openSession();
    List<Purchase> purchases = null;
    try {
      purchases = session.createQuery(SELECT_ALL_FROM_PURCHASE).list();
    } catch (final HibernateException e) {
      LOGGER.error(e);
    }
    return purchases;
  }

  @Override
  public Purchase retrievePurchase(final Long id) {
    final Session session = this.hibernateTemplate.getSessionFactory()
        .openSession();
    Purchase purchase = null;
    try {
      purchase = (Purchase) session.get(Purchase.class, id);
    } catch (final HibernateException e) {
      LOGGER.error(e);
    }
    return purchase;
  }

  @Override
  @SuppressWarnings("unchecked")
  public List<Purchase> retrievePurchasesForBasket(final Long basketId) {
    final Session session = this.hibernateTemplate.getSessionFactory()
        .openSession();
    List<Purchase> purchases = null;
    try {
      purchases = session.createQuery(SELECT_PURCHASES_FOR_BASKET)
          .setLong(0, basketId).list();
    } catch (final HibernateException e) {
      LOGGER.error(e);
    }
    return purchases;
  }

  @Override
  public void doDelete(final Purchase t) throws DataNotRemovedException {

  }

  @Override
  public void doUpdate(final Purchase t) throws DataNotStoredException {
    // TODO Auto-generated method stub

  }

}
TOP

Related Classes of com.mustafaiev.tair.cts.dao.jpa.PurchaseDAO

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.