Package com.fms.kccc.dao

Source Code of com.fms.kccc.dao.ImageContentDAOImpl

package com.fms.kccc.dao;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.criteria.Root;

import com.fms.kccc.object.ImageContent;
import com.fms.kccc.service.EMFService;

public class ImageContentDAOImpl implements ImageContentDAO {

  private final String ALL_CATEGORY = "all";

  @Override
  public void add(ImageContent imageContent) {
    // TODO Auto-generated method stub
    synchronized (this) {
      EntityManager em = EMFService.get().createEntityManager();
      em.persist(imageContent);
      em.close();
    }
  }

  @Override
  public List<ImageContent> getImageContents(String category, int page,
      int rows) {
    // Begin page = 1 not page = 0;
    if (page == 0) {
      page = 1;
    }
    int first = (page - 1) * rows;
    int max = rows;
    EntityManager em = EMFService.get().createEntityManager();
    /*
     * Query q = em .createQuery(
     * "SELECT c FROM ImageContent c WHERE c.category = :category ORDER BY c.createAt ASC, c.category ASC"
     * );
     */
    // q.setParameter("category", category);
    // q.setFirstResult(first);
    // q.setMaxResults(max);

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<ImageContent> cq = cb.createQuery(ImageContent.class);

    Root<ImageContent> imageContent = cq.from(ImageContent.class);
    cq.select(imageContent);

    ParameterExpression<String> p = cb.parameter(String.class);
    if (!(category == null || category.equals(ALL_CATEGORY))) {
      cq.where(cb.equal(imageContent.get("category"), p));
    }
    cq.orderBy(cb.desc(imageContent.get("createAt")));

    TypedQuery<ImageContent> query = em.createQuery(cq);
    query.setParameter(p, category);
    query.setFirstResult(first);
    query.setMaxResults(max);
    List<ImageContent> results = query.getResultList();
    // Increase counter
    return results;
  }

  @Override
  public List<ImageContent> getMarkedImageContents(String category,
      Date date, int page, int rows) {
    // Begin page = 1 not page = 0;
    if (page == 0) {
      page = 1;
    }
    int first = (page - 1) * rows;
    int max = rows;
    EntityManager em = EMFService.get().createEntityManager();
    /*
     * Query q = em .createQuery(
     * "SELECT c FROM ImageContent c WHERE c.category = :category ORDER BY c.createAt ASC, c.category ASC"
     * );
     */
    // q.setParameter("category", category);
    // q.setFirstResult(first);
    // q.setMaxResults(max);

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<ImageContent> cq = cb.createQuery(ImageContent.class);

    Root<ImageContent> imageContent = cq.from(ImageContent.class);
    cq.select(imageContent);

    ParameterExpression<String> p = cb.parameter(String.class);
    if (!(category == null || category.equals(ALL_CATEGORY))) {
      //cb.equal(imageContent.get("category"), p);
    }
    ParameterExpression<Date> pDate = cb.parameter(Date.class);
    cq.where(cb.lessThanOrEqualTo(
        imageContent.<Date> get("createAt"), pDate));
   
    cq.orderBy(cb.desc(imageContent.get("createAt")));

    TypedQuery<ImageContent> query = em.createQuery(cq);
    query.setParameter(p, category);
    query.setParameter(pDate, date);
    query.setFirstResult(first);
    query.setMaxResults(max);
    List<ImageContent> results = query.getResultList();
    // Increase counter
    return results;
  }
}
TOP

Related Classes of com.fms.kccc.dao.ImageContentDAOImpl

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.