📄 logmanager.java
字号:
//计算指定月份有多少天
Calendar tempCal = (Calendar)nextMonthFirstDate.clone();
tempCal.add(Calendar.DATE,-1);
int dateCount = tempCal.get(Calendar.DATE);
int[] logCounts = new int[dateCount];
//查询出当月的所有日记进行统计
String sql = "SELECT logTime FROM dlog_journal WHERE logTime>=? AND logTime<? AND status=?";
PreparedStatement ps = null;
ResultSet rs = null;
try{
ps = conn.prepareStatement(sql);
ps.setTimestamp(1, new Timestamp(firstDate.getTime().getTime()));
ps.setTimestamp(2, new Timestamp(nextMonthFirstDate.getTime().getTime()));
ps.setInt(3, LogForm.STATUS_NORMAL);
if(ps.execute()){
rs = ps.getResultSet();
while(rs.next()){
tempCal.setTime(rs.getDate(1));
int date = tempCal.get(Calendar.DATE) - 1;
logCounts[date]++;
}
}
}finally{
close(rs,ps,null);
}
return logCounts;
}
/**
* 清除日历的时间字段
* @param cal
*/
protected static void resetCalendar(Calendar cal){
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
}
/**
* 根据参数构建一个日历对象实例
* @param year
* @param month 1-12
* @param date
* @param clearTime 是否清除时间字段
* @return
*/
protected static Calendar buildCalendar(int year,int month,int date,boolean clearTime){
Calendar cal = Calendar.getInstance();
if(clearTime)
resetCalendar(cal);
if(year!=-1)
cal.set(Calendar.YEAR,year);
if(month!=-1)
cal.set(Calendar.MONTH,month-1);
if(date!=-1)
cal.set(Calendar.DATE,date);
return cal;
}
/**
* 读取草稿的详细信息
* @param ssn
* @param site
* @param draft_id
* @return
* @throws HibernateException
*/
public static DraftForm getDraft(Session ssn, SiteForm site, int draft_id) throws HibernateException
{
Criteria crit = ssn.createCriteria(DraftForm.class);
crit = crit.add(Expression.eq("site.id", new Integer(site.getId())));
crit = crit.add(Expression.eq("id", new Integer(draft_id)));
DraftForm draft = null;
List drafts = crit.list();
if(drafts.size()>0)
draft = (DraftForm)drafts.get(0);
return draft;
}
/**
* 列出某个网站的所有草稿信息
* @param ssn
* @param site
* @return
* @throws HibernateException
*/
public static List listDrafts(Session ssn, SiteForm site, UserForm loginUser) throws HibernateException{
if(loginUser==null || (!loginUser.isAdmin()&&!loginUser.isFriend()))
return new ArrayList();
Criteria crit = ssn.createCriteria(DraftForm.class);
crit = crit.add(Expression.eq("site.id", new Integer(site.getId())));
//if(loginUser.isFriend())
crit = crit.add(Expression.eq("owner.id",new Integer(loginUser.getId())));
crit = crit.addOrder(Order.desc("logTime"));
return crit.list();
}
/**
* 列出某个分类下的日志
* @param ssn
* @param site
* @param cat_id
* @param orderField
* @return
* @throws HibernateException
*/
public static List listLogs(Session ssn, SiteForm site, UserForm loginUser, int cat_id, int userid,int from, int count, String orderField, int year, int month, int date)
throws HibernateException {
String hql = "FROM " + LogForm.class.getName() + " AS log WHERE log.site.id=? AND log.status=?";
if(cat_id!=-1)
hql += " AND log.category.id=?";
else
hql += " AND log.category.id<>?";
if(userid>0)
hql += " AND log.owner.id="+userid;
if(loginUser!=null && loginUser.getUserRole()==DlogRole.ROLE_BUDDY){
int[] cats = loginUser.getOwnerCatids();
if(cats.length==0)
hql += " AND log.category.type<>" + CategoryForm.TYPE_OWNER;
else{
hql += " AND (log.category.type<>" + CategoryForm.TYPE_OWNER;
for(int i=0;i<cats.length;i++){
hql += " OR log.category.id=" + cats[i];
}
hql += ")";
}
}
else
if(loginUser==null||!loginUser.isAdmin())
hql += " AND log.category.type<>" + CategoryForm.TYPE_OWNER;
Calendar begin = null;
Calendar end = null;
boolean hasTime = false;
if(year!=-1&&month!=-1&&date!=-1){//查询某天
begin = buildCalendar(year,month,date,true);
end = (Calendar)begin.clone();
end.add(Calendar.DATE,1);
hql += " AND log.logTime>=? AND log.logTime<?";
hasTime = true;
}
else
if(year!=-1&&month!=-1){//查询某月
begin = buildCalendar(year,month,1,true);
end = (Calendar)begin.clone();
end.add(Calendar.MONTH,1);
hql += " AND log.logTime>=? AND log.logTime<?";
hasTime = true;
}
else
if(year!=-1){//查询某年
begin = buildCalendar(year,1,1,true);
end = (Calendar)begin.clone();
end.add(Calendar.YEAR,1);
hql += " AND log.logTime>=? AND log.logTime<?";
hasTime = true;
}
if(StringUtils.isEmpty(orderField))
orderField = "logTime";
hql += " ORDER BY log." + orderField + " DESC";
Query query = ssn.createQuery(hql);
query.setInteger(0,site.getId());
query.setInteger(1,LogForm.STATUS_NORMAL);
query.setInteger(2,cat_id);
if(hasTime){
query.setCalendar(3,begin);
query.setCalendar(4,end);
}
query.setFirstResult(from);
query.setMaxResults(count);
return query.list();
}
/**
* 获取某个日记分类下的日记数
* @param ssn
* @param cat_id
* @return
* @throws HibernateException
*/
public static int getLogCount(Session ssn, int cat_id) throws HibernateException{
Query q2 = ssn.createQuery("SELECT COUNT(*) FROM "+LogForm.class.getName()+" AS log WHERE log.category.id=?");
q2.setInteger(0, cat_id);
List res = q2.list();
return (res.size()>0)?((Integer)res.get(0)).intValue():0;
}
/**
* 获取日记总数
* @param ssn
* @param site
* @param cat_id 指定某个日记分类
* @return
*/
public static int getLogCount(Session ssn, SiteForm site, UserForm loginUser, int cat_id, int userid, int year, int month, int date)
throws HibernateException {
String hql = "SELECT COUNT(*) FROM " + LogForm.class.getName() + " AS log WHERE log.site.id=? AND log.status=?";
if(cat_id!=-1)
hql += " AND log.category.id=?";
else
hql += " AND log.category.id<>?";
if(userid>0)
hql += " AND log.owner.id="+userid;
if(loginUser!=null && loginUser.getUserRole()==DlogRole.ROLE_BUDDY){
int[] cats = loginUser.getOwnerCatids();
if(cats.length==0)
hql += " AND log.category.type<>" + CategoryForm.TYPE_OWNER;
else{
hql += " AND (log.category.type<>" + CategoryForm.TYPE_OWNER;
for(int i=0;i<cats.length;i++){
hql += " OR log.category.id=" + cats[i];
}
hql += ")";
}
}
else
if(loginUser==null||!loginUser.isAdmin())
hql += " AND log.category.type<>" + CategoryForm.TYPE_OWNER;
Calendar begin = null;
Calendar end = null;
boolean hasTime = false;
if(year!=-1&&month!=-1&&date!=-1){//查询某天
begin = buildCalendar(year,month,date,true);
end = (Calendar)begin.clone();
end.add(Calendar.DATE,1);
hql += " AND log.logTime>=? AND log.logTime<?";
hasTime = true;
}
else
if(year!=-1&&month!=-1){//查询某月
begin = buildCalendar(year,month,1,true);
end = (Calendar)begin.clone();
end.add(Calendar.MONTH,1);
hql += " AND log.logTime>=? AND log.logTime<?";
hasTime = true;
}
else
if(year!=-1){//查询某年
begin = buildCalendar(year,1,1,true);
end = (Calendar)begin.clone();
end.add(Calendar.YEAR,1);
hql += " AND log.logTime>=? AND log.logTime<?";
hasTime = true;
}
Query query = ssn.createQuery(hql);
query.setInteger(0,site.getId());
query.setInteger(1,LogForm.STATUS_NORMAL);
query.setInteger(2,cat_id);
if(hasTime){
query.setCalendar(3,begin);
query.setCalendar(4,end);
}
List res = query.list();
int logcount = (res.size() > 0) ? ((Integer) res.get(0)).intValue() : 0;
return logcount;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -