⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 countserviceimpl.java

📁 版本信息:Jaoso新闻文章发布系统 0.9.1beta1 原POPTEN新闻发布系统现更名为Jaoso,不兼容popten,目前不提供popten升级Jaoso的程序.
💻 JAVA
字号:
package jaoso.count.service.impl;

import jaoso.count.dao.CountDAO;

import jaoso.count.domain.Count;

import jaoso.count.service.CountService;

import jaoso.framework.service.impl.BaseService;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.Calendar;
import java.util.Date;


/**
 * @author 邊緣孤客
 * @since 2004-07-23
 * 獲取访问量統計信息
 */
public class CountServiceImpl extends BaseService implements CountService {

    //~ Static fields/initializers =============================================

    /**  DOCUMENT ME! */
    private static final int DEFAULT_COUNT = 0;

    //~ Instance fields ========================================================

    /**  DOCUMENT ME! */
    private CountDAO countDAO;

    /**  DOCUMENT ME! */
    private Log log = LogFactory.getLog(getClass());

    //~ Methods ================================================================

    /**
     * (non-Javadoc)
     * @see jaoso.count.service.CountService#getCount(boolean)
     */
    public final Count getCount(final boolean arg) {

        Count count = countDAO.getCount();

        if (count == null) {

            count = createCount();
            updateCount(count);
        }

        if (arg) {

            updateCount(count);
        }

        return count;
    }

    /**
     * @param countDAO The countDAO to set.
     */
    public final void setCountDAO(final CountDAO countDAO) {

        this.countDAO = countDAO;
    }

    /**
     * create count
     *
     * @return persistanted count
     */
    private Count createCount() {

        Date date = new Date();
        Count count = new Count();
        count.setAllCount(DEFAULT_COUNT);
        count.setAvgCount(DEFAULT_COUNT);
        count.setCreateDate(date);
        count.setMaxCount(DEFAULT_COUNT);
        count.setMaxDate(date);
        count.setTodayCount(DEFAULT_COUNT);
        count.setTodayDate(date);
        countDAO.createCount(count);
        count.setOnlineCount(DEFAULT_COUNT);

        return count;
    }

    /**
     * DOCUMENT ME!
     *
     * @param count DOCUMENT ME!
     */
    private void updateCount(Count count) {

        Calendar now = Calendar.getInstance();
        now.setTime(new Date());

        Calendar oldDate = Calendar.getInstance();
        oldDate.setTime(count.getTodayDate());
        count.setAllCount(count.getAllCount() + 1);

        //set today count
        if ((now.get(Calendar.YEAR) + now.get(Calendar.MONTH)
                + now.get(Calendar.DAY_OF_MONTH)) == (oldDate.get(Calendar.YEAR)
                + oldDate.get(Calendar.MONTH)
                + oldDate.get(Calendar.DAY_OF_MONTH))) {

            count.setTodayCount(count.getTodayCount() + 1);
        } else {

            count.setTodayCount(1);
            count.setTodayDate(new Date());
        }

        //set max count
        if (count.getTodayCount() > count.getMaxCount()) {

            count.setMaxCount(count.getTodayCount());
            count.setMaxDate(count.getTodayDate());
        }

        //set avg count
        int days = Integer.parseInt(String.valueOf(
                    (count.getTodayDate()
                          .getTime() - count.getCreateDate()
                                            .getTime()) / (3600 * 24 * 1000)));
        days = (days == 0) ? 1 : days;

        int avgCount = (count.getAllCount() / days);
        count.setAvgCount(avgCount);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -