package cn.edu.njupt.allgo.service.dao.impl; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import cn.edu.njupt.allgo.service.dao.TimeLineCommonDAO; import cn.edu.njupt.allgo.service.dao.TimeLineFollowDAO; import cn.edu.njupt.allgo.service.dao.TimeLineFriendDAO; import cn.edu.njupt.allgo.service.dao.TimeLineUserDAO; import cn.edu.njupt.allgo.service.utils.DateTimeUtil; import cn.edu.njupt.allgo.service.vo.EventAddVo; import cn.edu.njupt.allgo.service.vo.EventFollowerVo; import cn.edu.njupt.allgo.service.vo.EventVo; import cn.edu.njupt.allgo.service.vo.HibernateSessionFactory; @SuppressWarnings("unchecked") public class TimeLineDAOimpl implements TimeLineCommonDAO, TimeLineFollowDAO, TimeLineFriendDAO, TimeLineUserDAO { //得到用户发起的活动 @Override public List<EventVo> getUserEvent(int uid, int page, int pagenum) { List<EventVo> list=null; Session session=HibernateSessionFactory.getSession(); session.clear(); String hql="from EventVo vo where vo.uid=:uid and vo.visible=0"; Query query=session.createQuery(hql); query.setParameter("uid",uid); query.setFirstResult((page-1)*pagenum); query.setMaxResults(pagenum); list=query.list(); if(list ==null||list.size() == 0){ list = null; } return list; } //得到好友的活动 @Override public List<EventVo> getFriendEvent(int uid, int page, int pagenum) { List<EventVo> listVo = null; Session session=HibernateSessionFactory.getSession(); session.clear(); String hql="select vo.fid from UserFriendVo vo where vo.uid=:uid"; Query query=session.createQuery(hql); query.setParameter("uid",uid); query.setFirstResult((page-1)*pagenum); query.setMaxResults(pagenum); List<Integer> list = query.list(); for(int i=0;i<list.size();i++){ int fid = (int) list.get(i); String hql2="from EventVo vo where vo.uid=:fid"; Query query2=session.createQuery(hql2); query2.setParameter("fid",fid); if(listVo == null){ listVo = new ArrayList<EventVo>(); } listVo.addAll(query2.list()); } if(listVo ==null||listVo.size() == 0){ list = null; } return listVo; } //得到用户参与的活动 @Override public List<EventVo> getFollowEvent(int uid, int page, int pagenum) { List<EventVo> listVo = null; Session session=HibernateSessionFactory.getSession(); session.clear(); String hql="select vo.eid from EventFollowerVo vo where vo.uid=:uid"; Query query=session.createQuery(hql); query.setParameter("uid",uid); query.setFirstResult((page-1)*pagenum); query.setMaxResults(pagenum); List list = query.list(); for(int i=0;i<list.size();i++){ int eid = (int) list.get(i); String hql2="from EventVo vo where vo.eid=:eid"; Query query2=session.createQuery(hql2); query2.setParameter("eid",eid); if(listVo == null){ listVo = new ArrayList<EventVo>(); } listVo.addAll(query2.list()); } if(listVo ==null||listVo.size() == 0){ list = null; } return listVo; } //得到所用公共的活动 @Override public List<EventVo> getCommonEvent(int page, int pagenum, String position, String ecategoryname, String StartTimeRangA, String StartTimeRangB) { boolean isFilter = false; List<EventVo> list = null; Session session=HibernateSessionFactory.getSession(); session.clear(); String hql="from EventVo vo"; if(position!=null&&!position.equals("")){ if(!isFilter){ hql = hql.concat(" where "); isFilter = true; }else{ hql = hql.concat(" and "); } hql = hql.concat(" vo.position=:position "); } if(ecategoryname!=null&&!ecategoryname.equals("")){ if(!isFilter){ hql = hql.concat(" where "); isFilter = true; }else{ hql =hql.concat(" and "); } hql = hql.concat(" vo.ecategroyname=:ecategroyname "); } if(StartTimeRangA!=null&&!StartTimeRangA.equals("")){ if(!isFilter){ hql =hql.concat(" where "); isFilter = true; }else{ hql = hql.concat(" and "); } hql = hql.concat(" vo.startdate in(:StartTimeRangA,:StartTimeRangB) "); } Query query=session.createQuery(hql); query.setFirstResult((page-1)*pagenum); query.setMaxResults(pagenum); if(position!=null&&!position.equals("")){ query.setString("position", position); } if(ecategoryname!=null&&!ecategoryname.equals("")){ query.setString("ecategroyname", ecategoryname); } if(StartTimeRangA!=null&&!StartTimeRangA.equals("")){ Timestamp timeA = new Timestamp(DateTimeUtil.string2date(StartTimeRangA).getTime()); Timestamp timeB = new Timestamp(DateTimeUtil.string2date(StartTimeRangB).getTime()); query.setDate("StartTimeRangA", timeA); query.setDate("StartTimeRangB", timeB); } list = query.list(); if(list ==null||list.size() == 0){ list = null; } return list; } }