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

📄 logmanager.java

📁 JSP开发的博客管理系统,使用struts+hibernate+AJAX技术
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		
		//计算指定月份有多少天
		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 + -