Package com.jeecms.cms.dao.main.impl

Source Code of com.jeecms.cms.dao.main.impl.ContentCountDaoImpl

package com.jeecms.cms.dao.main.impl;

import java.util.List;

import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;

import org.hibernate.Query;
import org.springframework.stereotype.Repository;

import com.jeecms.cms.dao.main.ContentCountDao;
import com.jeecms.cms.entity.main.ContentCount;
import com.jeecms.common.hibernate3.HibernateBaseDao;

@Repository
public class ContentCountDaoImpl extends
    HibernateBaseDao<ContentCount, Integer> implements ContentCountDao {
  @SuppressWarnings("unchecked")
  public int freshCacheToDB(Ehcache cache) {
    List<Integer> keys = cache.getKeys();
    if (keys.size() <= 0) {
      return 0;
    }
    Element e;
    Integer views;
    int i = 0;
    String hql = "update ContentCount bean"
        + " set bean.views=bean.views+:views"
        + ",bean.viewsMonth=bean.viewsMonth+:views"
        + ",bean.viewsWeek=bean.viewsWeek+:views"
        + ",bean.viewsDay=bean.viewsDay+:views" + " where bean.id=:id";
    Query query = getSession().createQuery(hql);
    for (Integer id : keys) {
      e = cache.get(id);
      if (e != null) {
        views = (Integer) e.getValue();
        if (views != null) {
          query.setParameter("views", views);
          query.setParameter("id", id);
          i += query.executeUpdate();
        }
      }
    }
    return i;
  }

  public int clearCount(boolean week, boolean month) {
    StringBuilder hql = new StringBuilder("update ContentCount bean");
    hql.append(" set bean.viewsDay=0,commentsDay=0,upsDay=0");
    if (week) {
      hql.append(",bean.viewsWeek=0,commentsWeek=0,upsWeek=0");
    }
    if (month) {
      hql.append(",bean.viewsMonth=0,commentsMonth=0,upsMonth=0");
    }
    return getSession().createQuery(hql.toString()).executeUpdate();
  }

  public int copyCount() {
    String hql = "update Content a set"
        + " a.viewsDay=(select b.viewsDay from ContentCount b where a.id=b.id)"
        + ",a.commentsDay=(select b.commentsDay from ContentCount b where a.id=b.id)"
        + ",a.downloadsDay=(select b.downloadsDay from ContentCount b where a.id=b.id)"
        + ",a.upsDay=(select b.upsDay from ContentCount b where a.id=b.id)";
    return getSession().createQuery(hql).executeUpdate();
  }

  public ContentCount findById(Integer id) {
    ContentCount entity = get(id);
    return entity;
  }

  public ContentCount save(ContentCount bean) {
    getSession().save(bean);
    return bean;
  }

  @Override
  protected Class<ContentCount> getEntityClass() {
    return ContentCount.class;
  }
}
TOP

Related Classes of com.jeecms.cms.dao.main.impl.ContentCountDaoImpl

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.