📄 countserviceimpl.java
字号:
package count;
import java.util.Calendar;
import java.util.Date;
public class CountServiceImpl{
private static final int DEFAULT_COUNT = 0;
private CountDAOImpl countDAO;
private Count count=null;
private static CountServiceImpl instance=null;
private CountServiceImpl(){
countDAO=new CountDAOImpl();
this.count = countDAO.getCount();
}
public static CountServiceImpl getInstance(){
if(instance==null){
instance=new CountServiceImpl();
}
return instance;
}
public final Count getCount(final boolean arg) {
if (count == null) {
count = createCount();
updateCount(count);//更新计数
}
if (arg) {
updateCount(count);
}
return 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);//总访问量加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);//今日访问量加1
} else {
count.setTodayCount(1);//今日访问量设为1
count.setTodayDate(new Date());
}
if (count.getTodayCount() > count.getMaxCount()) {//日最大访问量计算
count.setMaxCount(count.getTodayCount());
count.setMaxDate(count.getTodayDate());
}
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);
int tempcount=count.getTempCount();
if(tempcount>=5){//如果临时访问量大于5,数据存入数据库
countDAO.updateCount(count);
count.setTempCount(0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -