/*
* D.A.O. for JPA
* Created on 17 d�c. 2012 ( Time 15:40:00 )
*/
package org.demo.review.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.review.bean.Review;
import org.demo.review.bean.ReviewKey;
public class JpaReviewDAO extends GenericJpaDao<Review, ReviewKey> {
private static final Predicate[] ap = {};
/**
* Constructs a DAO for Review
*/
public JpaReviewDAO() {
super(Review.class);
}
/**
* Search by Review example
*/
public List<Review> search(final Review element) {
final EntityManager em = getEntityManager();
if ( element != null ) {
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Review> criteriaQuery = criteriaBuilder.createQuery(Review.class);
Root<Review> from = criteriaQuery.from(Review.class);
List<Predicate> listP = new ArrayList<Predicate>();
if ( element.getKey() != null ) {
if (CoreUtils.isNotBlank(element.getKey().getCustomerCode())) {
Predicate predicate = criteriaBuilder.equal(from.get("customerCode"), element.getKey().getCustomerCode());
listP.add(predicate);
}
if (CoreUtils.isNotBlank(element.getKey().getBookId())) {
Predicate predicate = criteriaBuilder.equal(from.get("bookId"), element.getKey().getBookId());
listP.add(predicate);
}
}
if (CoreUtils.isNotBlank(element.getReviewText())) {
Predicate predicate = criteriaBuilder.equal(from.get("reviewText"), element.getReviewText());
listP.add(predicate);
}
if (CoreUtils.isNotBlank(element.getReviewNote())) {
Predicate predicate = criteriaBuilder.equal(from.get("reviewNote"), element.getReviewNote());
listP.add(predicate);
}
if (CoreUtils.isNotBlank(element.getCreation())) {
Predicate predicate = criteriaBuilder.equal(from.get("creation"), element.getCreation());
listP.add(predicate);
}
if (CoreUtils.isNotBlank(element.getLastUpdate())) {
Predicate predicate = criteriaBuilder.equal(from.get("lastUpdate"), element.getLastUpdate());
listP.add(predicate);
}
criteriaQuery.where(listP.toArray(ap));
TypedQuery<Review> tq = em.createQuery(criteriaQuery);
return tq.getResultList();
}
else
{
return this.loadAll();
}
}
}