replyimpl.java

来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 394 行

JAVA
394
字号
/* 
 * Created on 2007-1-22
 * Last modified on 2007-12-20
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.dao.hibernate.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;

import com.yeqiangwei.club.dao.ReplyDAO;
import com.yeqiangwei.club.dao.hibernate.support.HibernateFacade;
import com.yeqiangwei.club.model.Reply;
import com.yeqiangwei.club.exception.DAOException;
import com.yeqiangwei.club.param.TopicParameter;
import com.yeqiangwei.util.Validator;

public class ReplyImpl implements ReplyDAO{
	
	private static final String UPDATE_ISMANAGED = "update Reply set isManaged=? where replyId=?";
	
	private static final String FIND_REPLYID = "from Reply where replyId=?";
	
	//private static final String FIND_TOPICID = "from Reply where topicId=?";
	
	private static final String DELETE_REPLYID = "delete from Reply where replyId=?";
	
	private static final String DELETES_REPLYID = "delete from Reply where replyId in (:ids)";
	
	private static final String DELETE_TOPICID = "delete from Reply where topicId=?";
	
	private static final String DELETES_TOPICID = "delete from Reply where topicId in (:ids)";
	
	private static final String UPDATE_FORUMID_TOPICID = "update Reply set forumId=? where topicId=?";
	
	private static final Logger logger = Logger.getLogger(ReplyImpl.class);
	
	public int updateForumIdByTopicId(int topicId, int forumId){
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(UPDATE_FORUMID_TOPICID);
		facade.setInt(0, forumId);
		facade.setInt(1, topicId);
		return facade.executeUpdate();
	}

	public void create(Reply item) {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.save(item);
	}

	public void update(Reply item) {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.update(item);
	}
	

	@Override
	public int updateIsManaged(int replyId, boolean isManaged)
			throws DAOException {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(UPDATE_ISMANAGED);
		facade.setBoolean(0, isManaged);
		facade.setInt(1, replyId);
		return facade.executeUpdate();
	}
	
	/*
	 * tree utils method
	 */
	public int updatesOrderlistByTopicId(Reply item)
	{
        StringBuffer hql = new StringBuffer();
		hql.append("update Reply set orderlist=orderlist+1 ");
		if(item.getReplyId()==0){
			hql.append(" where topicId=");
			hql.append(item.getTopicId());
		}else{
			hql.append(" where topicId=");
			hql.append(item.getTopicId());
			hql.append(" and orderlist>");
			hql.append(item.getOrderlist());
		}
		logger.debug(hql);
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(hql.toString());
		return facade.executeUpdate();
	}

	public int delete(Reply item) {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(DELETE_REPLYID);
		facade.setInt(0, item.getReplyId());
		return facade.executeUpdate();
	}

	public int delete(List<Integer> ids) {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(DELETES_REPLYID);
		facade.setParameterList("ids",ids);
		return facade.executeUpdate();
	}
	
	public int deleteByTopicId(List<Integer> ids) {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(DELETES_TOPICID);
		facade.setParameterList("ids",ids);
		return facade.executeUpdate();
	}
	
	public int deleteByTopicId(int topicId) {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(DELETE_TOPICID);
		facade.setInt(0, topicId);
		return facade.executeUpdate();
	}
	
	public Reply findById(int id) {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(FIND_REPLYID);
		facade.setInt(0, id);
		facade.setMaxResults(1);
		return facade.uniqueResult();
	}

	private String getWhere(TopicParameter param){
		StringBuffer hql = new StringBuffer();
		if(param.getTopicId()!=null){
			hql.append(" and topicId=");
			hql.append(param.getTopicId().intValue());
		}
		if(param.getUserId()!=null){
			hql.append(" and userId=");
			hql.append(param.getUserId().intValue());
		}
		if(param.getIsDeleted()!=null){
			if(param.getIsDeleted().booleanValue()){
				hql.append(" and isDeleted=1");
			}else{
				hql.append(" and isDeleted=0");
			}
			
		}
		if(!Validator.isEmpty(param.getForumIdList())){
			StringBuffer temp = new StringBuffer();
			temp.append(" AND forumId in(");
			for(int i=0; i<param.getForumIdList().size(); i++){
				temp.append(param.getForumIdList().get(i));
				if(i<param.getForumIdList().size()-1){
					temp.append(",");
				}
			}
			temp.append(")");
			hql.append(temp);
		}
		if(!Validator.isEmpty(param.getUserIdList())){
			StringBuffer temp = new StringBuffer();
			temp.append(" AND userId in(");
			for(int i=0; i<param.getUserIdList().size(); i++){
				temp.append(param.getUserIdList().get(i));
				if(i<param.getUserIdList().size()-1){
					temp.append(",");
				}
			}
			temp.append(")");
			hql.append(temp);
		}
		return hql.toString();
	}
	
	private String getOrderBy(TopicParameter param){
		StringBuffer hql = new StringBuffer();
		if(param.getOrderBy()==null){
			hql.append(" order by replyId");
		}
		else if(param.getOrderBy().byteValue()==0){
			hql.append(" order by replyId");
		}
		else if(param.getOrderBy().byteValue()==1){
			hql.append(" order by orderlist");
		}
		else if(param.getOrderBy().byteValue()==2){
			hql.append(" order by replyId desc");
		}
		return hql.toString();
	}
	
	public List<Reply> findByParameter(TopicParameter param){
		List<Reply> list = null;
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		Connection con = facade.getSession().connection();
		PreparedStatement pps = null;
		ResultSet rs = null;
		StringBuffer sql = new StringBuffer();
		if(param.getPage()>1){
			/*
			 * sql 2005
			 */
			sql.append("SELECT TOP ");
			sql.append(param.getRows());
			sql.append(" * FROM (select *, ROW_NUMBER() OVER (");
			sql.append(getOrderBy(param));
			sql.append(") AS RowNo FROM Reply where replyId>0 ");
			sql.append(this.getWhere(param));
			sql.append(") AS A where RowNo>");
			sql.append(param.getRows()*(param.getPage()-1));
		}else{
			sql.append("SELECT TOP ");
			sql.append(param.getRows());
			sql.append(" * FROM Reply WHERE replyId>0 ");
			sql.append(this.getWhere(param));
			sql.append(getOrderBy(param));
		}
		logger.debug(sql);
		try {
			list = new ArrayList<Reply>();
			pps = con.prepareStatement(sql.toString());
			rs = pps.executeQuery();
			while(rs.next()){
				Reply item = new Reply();
				item.setContentLength(rs.getInt("contentLength"));
				item.setCreateDateTime(rs.getLong("createDateTime"));
				item.setForumId(rs.getInt("forumId"));
				item.setIsDeleted(rs.getBoolean("isDeleted"));
				item.setIsManaged(rs.getBoolean("isManaged"));
				item.setIsPassed(rs.getBoolean("isPassed"));
				item.setLastReplyDateTime(rs.getLong("lastReplyDateTime"));
				item.setLastReplyUserName(rs.getString("lastReplyUserName"));
				item.setLayer(rs.getInt("layer"));
				item.setMood(rs.getByte("mood"));
				item.setReplyId(rs.getInt("replyId"));
				item.setReplys(rs.getInt("replys"));
				item.setTitle(rs.getString("title"));
				item.setTopicId(rs.getInt("topicId"));
				item.setTree(rs.getInt("tree"));
				item.setType(rs.getByte("type"));
				item.setUserId(rs.getInt("userId"));
				item.setUserIp(rs.getString("userIp"));
				item.setUserName(rs.getString("userName"));
				item.setViews(rs.getInt("views"));
				item.setOrderlist(rs.getInt("orderList"));
				item.setProject(rs.getByte("project"));
				list.add(item);
			}
		} catch (SQLException e) {
			logger.error(e.toString());
		}
		return list;
	}
	
	
	/*
	public List<Reply> findByParameter(TopicParameter param) {
		StringBuffer hql = new StringBuffer();
		hql.append("from Reply where replyId>0");
		if(param.getTopicId()!=null){
			hql.append(" and topicId=");
			hql.append(param.getTopicId().intValue());
		}
		if(param.getUserId()!=null){
			hql.append(" and userId=");
			hql.append(param.getUserId().intValue());
		}
		if(param.getIsDeleted()!=null){
			hql.append(" and isDeleted=?");
		}
		if(param.getOrderBy()==null){
			hql.append(" order by replyId");
		}
		else if(param.getOrderBy().byteValue()==0){
			hql.append(" order by replyId");
		}
		else if(param.getOrderBy().byteValue()==1){
			hql.append(" order by orderlist");
		}
		else if(param.getOrderBy().byteValue()==2){
			hql.append(" order by replyId desc");
		}
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(hql);
		if(param.getIsDeleted()!=null){
			facade.setBoolean(0,param.getIsDeleted().booleanValue());
		}
		facade.setFirstResult(param.getPagination().getStartRow());
		facade.setMaxResults(param.getPagination().getEndRow());
		return facade.executeQuery();
	}
	 */
	public long countByParameter(TopicParameter param) {
		StringBuffer hql = new StringBuffer();
		hql.append("select count(replyId) from Reply where replyId>0 ");
		hql.append(this.getWhere(param));
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(hql);
		return facade.resultTotal();
	}

	public List<Reply> findAll(TopicParameter param) {
		StringBuffer hql = new StringBuffer();
		hql.append("from Reply ");
		if(param.getIsDeleted()!=null){
			hql.append(" where isDeleted=?");
		}
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(hql);
		if(param.getIsDeleted()!=null){
			facade.setBoolean(0,param.getIsDeleted().booleanValue());
		}
		facade.setFirstResult(param.getPagination().getStartRow());
		facade.setMaxResults(param.getPagination().getEndRow());
		return facade.executeQuery();
	}

	public long countAll(TopicParameter param) {
		StringBuffer hql = new StringBuffer();
		hql.append("select count(replyId) from Reply ");
		if(param.getIsDeleted()!=null){
			hql.append(" where isDeleted=?");
		}
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(hql);
		if(param.getIsDeleted()!=null){
			facade.setBoolean(0,param.getIsDeleted().booleanValue());
		}
		return facade.resultTotal();
	}

	public Reply findLastReply() {
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery("from Reply order by replyId desc");
		facade.setMaxResults(1);
		return facade.uniqueResult();
	}

	@Override
	public Object findReplyAndContents(TopicParameter param) {
		StringBuffer hql = new StringBuffer();
		hql.append("select r, c from Reply as r, RContent as c where r.replyId=c.replyId ");
		if(param.getTopicId()!=null){
			hql.append(" and r.topicId=");
			hql.append(param.getTopicId().intValue());
		}
		if(param.getUserId()!=null){
			hql.append(" and r.userId=");
			hql.append(param.getUserId().intValue());
		}
		if(param.getIsDeleted()!=null){
			hql.append(" and r.isDeleted=?");
		}
		if(param.getOrderBy()==null){
			hql.append(" order by r.replyId");
		}
		else if(param.getOrderBy().byteValue()==0){
			hql.append(" order by r.replyId");
		}
		else if(param.getOrderBy().byteValue()==1){
			hql.append(" order by r.orderlist");
		}
		else if(param.getOrderBy().byteValue()==2){
			hql.append(" order by r.replyId desc");
		}
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(hql);
		if(param.getIsDeleted()!=null){
			facade.setBoolean(0,param.getIsDeleted().booleanValue());
		}
		facade.setFirstResult(param.getPagination().getStartRow());
		facade.setMaxResults(param.getPagination().getEndRow());
		return facade.executeQuery();
	}

	@Override
	public int update_forumId(int forumId, int toForumId) {
        StringBuffer hql = new StringBuffer();
		hql.append("update Reply set forumId="+toForumId+" where forumId="+forumId);
		HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
		facade.createQuery(hql.toString());
		try{
			return facade.executeUpdate();
		}catch(HibernateException e){
			throw new DAOException(e);
		}
	}



}

⌨️ 快捷键说明

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