/* * D.A.O. for JPA * Created on 17 d�c. 2012 ( Time 15:39:59 ) */ package org.demo.book.dao; import java.util.ArrayList; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import org.telosys.starterkits.strutsjpa.CoreUtils; import org.telosys.starterkits.strutsjpa.GenericJpaDao; import org.demo.book.bean.Book; public class JpaBookDAO extends GenericJpaDao<Book, Integer> { private static final Predicate[] ap = {}; /** * Constructs a DAO for Book */ public JpaBookDAO() { super(Book.class); } /** * Search by Book example */ public List<Book> search(final Book element) { final EntityManager em = getEntityManager(); if ( element != null ) { CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); CriteriaQuery<Book> criteriaQuery = criteriaBuilder.createQuery(Book.class); Root<Book> from = criteriaQuery.from(Book.class); List<Predicate> listP = new ArrayList<Predicate>(); if (CoreUtils.isNotBlank(element.getId())) { Predicate predicate = criteriaBuilder.equal(from.get("id"), element.getId()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getPublisherId())) { Predicate predicate = criteriaBuilder.equal(from.get("publisherId"), element.getPublisherId()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getAuthorId())) { Predicate predicate = criteriaBuilder.equal(from.get("authorId"), element.getAuthorId()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getIsbn())) { Predicate predicate = criteriaBuilder.equal(from.get("isbn"), element.getIsbn()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getTitle())) { Predicate predicate = criteriaBuilder.equal(from.get("title"), element.getTitle()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getPrice())) { Predicate predicate = criteriaBuilder.equal(from.get("price"), element.getPrice()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getQuantity())) { Predicate predicate = criteriaBuilder.equal(from.get("quantity"), element.getQuantity()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getDiscount())) { Predicate predicate = criteriaBuilder.equal(from.get("discount"), element.getDiscount()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getAvailability())) { Predicate predicate = criteriaBuilder.equal(from.get("availability"), element.getAvailability()); listP.add(predicate); } if (CoreUtils.isNotBlank(element.getBestSeller())) { Predicate predicate = criteriaBuilder.equal(from.get("bestSeller"), element.getBestSeller()); listP.add(predicate); } criteriaQuery.where(listP.toArray(ap)); TypedQuery<Book> tq = em.createQuery(criteriaQuery); return tq.getResultList(); } else { return this.loadAll(); } } }