Package kz.sysdesign.app.DAO

Source Code of kz.sysdesign.app.DAO.AlbumDAOImpl

package kz.sysdesign.app.DAO;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import kz.sysdesign.app.Entities.Album;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

/**
* Implementation of Album DAO.
* Methods support database interaction for album data.
*
* @author Kaspars Zarinovs <k.zarinovs@ncl.ac.uk>
*
*/
@Repository
public class AlbumDAOImpl implements AlbumDAO {

  @PersistenceContext(unitName="JpaPersistenceUnit")
  private EntityManager em;

  /**
   * @see kz.sysdesign.app.DAO.AlbumDAO#addAlbum(kz.sysdesign.app.Entities.Album)
   */
  @Transactional
  public boolean addAlbum(Album album)
  {
    if(album == null)
      return false;

    em.persist(album);
    return true;
  }

  /**
   * @see kz.sysdesign.app.DAO.AlbumDAO#getAlbumByName(java.lang.String)
   */
  public Album getAlbumByName(String name)
  {
    String jpqlQuery = "FROM " + Album.class.getSimpleName() + " a WHERE a.name = :name";
    Query query = em.createQuery(jpqlQuery, Album.class).setParameter("name", name);

    Album album = null;
    try
    {
      album = (Album) query.getSingleResult();
    }
    catch(NonUniqueResultException ue) {  }
    catch(NoResultException e) {  }

    return album;
  }

  /**
   * @see kz.sysdesign.app.DAO.AlbumDAO#getAlbumNamesByPattern(java.lang.String)
   */
  public List<String> getAlbumNamesByPattern(String pattern)
  {
    String jpqlQuery = "SELECT a.name FROM " + Album.class.getSimpleName() + " a WHERE lower(a.name) LIKE lower(:pattern)";
    Query query = em.createQuery(jpqlQuery).setParameter("pattern", "%" + pattern + "%");

    // If no results exist, empty list is returned
    List<String> resultList = (List<String>) query.getResultList();

    return resultList;
  }

  /**
   * @see kz.sysdesign.app.DAO.AlbumDAO#getAllAlbums()
   */
  public List<Album> getAllAlbums()
  {
    String jpqlQuery = "FROM " + Album.class.getSimpleName();
    Query query = em.createQuery(jpqlQuery);

    // If no results exist, empty list is returned
    List<Album> resultList = (List<Album>) query.getResultList();

    return resultList;
  }

}
TOP

Related Classes of kz.sysdesign.app.DAO.AlbumDAOImpl

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.