package cn.newgxu.bbs.domain.calendar; import java.util.Date; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import cn.newgxu.bbs.common.Pagination; import cn.newgxu.bbs.domain.user.User; import cn.newgxu.jpamodel.JPAEntity; import cn.newgxu.jpamodel.ObjectNotFoundException; /** * @path valhalla_hx----cn.newgxu.bbs.domain.calendar.Holiday.java * * @author 集成显卡 * @since 4.5.0 * @version $Revision 1.1$ * @date 2011-9-18 * @describe * 节日。<br /> * 节日应该有固定节日(如每年的10.1是国庆节,这个是不关年的)还有一些老历节日(如中秋,每年的日期是不一样的)<br /> * 还有系统节日和用户自定义节日之分(允许用户自己添加属于自己的节日)<br /> * 可以设置公开度(对自己,对所有人,对好友----<span style='color:#a50100;'>这个需要以后添加了好友功能</span>)<br /> * */ @Entity @Table(name="ywc_holiday") public class UserHoliday extends JPAEntity{ private static final long serialVersionUID=123727462343894862L; /*基本属性*/ @Id @Column(name="id") @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; @Column(name="title") private String name; @Column(name="date_exe") private String date; @Column(name="overt") private int overt; @Column(name="information") private String information; @Column(name="jointime") private Date joinTime; /*关联对象*/ @ManyToOne(cascade={CascadeType.REFRESH},fetch=FetchType.LAZY) @JoinColumn(name="user_id") private User user; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInformation() { return information; } public void setInformation(String information) { this.information = information; } /** * 节日的日期(具体到天)<br /> * 格式: * <font color="#a50100">yyyy-MM-dd 例如: * 2011-09-18 * </font><br /> * 如果是固定节日,内是没有前面的yyyy,则是-MM-dd<br /><br /> * <font color="#92bf28">由于date是数据库关键字,这里的字段名为 date_exe</font> */ public String getDate() { return date; } public void setDate(String date) { this.date = date; } /** * 公开度: * <ul style='color:#92bf28'> * <li>0---对所有人</li> * <li>1---对自己</li> * <li>2---对好友【还不支持】</li> * </ul> */ public int getOvert() { return overt; } public void setOvert(int overt) { this.overt = overt; } public Date getJoinTime() { return joinTime; } public void setJoinTime(Date joinTime) { this.joinTime = joinTime; } /** * 节日创建者 * @return */ public User getUser() { return user; } public void setUser(User user) { this.user = user; } public static UserHoliday getById(Integer id) throws ObjectNotFoundException{ return (UserHoliday)getById(UserHoliday.class, id); } /** * 获取具体日期的节日 * @param year * @param month * @param day * @return */ @SuppressWarnings("unchecked") public static List<UserHoliday> getUserHoliday(int year,int month,int day){ return (List<UserHoliday>)Q("from UserHoliday where date_exe=?1",P(1, YWSCalendar.getDateInfo(year, month, day))).getResultList(); } /** * 获取某个区间内的用户节日<br /> * 区间:今天的前monthStep个月----后monthStep个月 * * @param monthStep * @return */ @SuppressWarnings("unchecked") public static List<UserHoliday> getNearbyHoliday(int monthStep){ int day[]=YWSCalendar.getDay(0, -monthStep, 0, YWSCalendar.YEAR_MONTH_DAY);//获取monthType前后对应的 年月日 int next[]=YWSCalendar.getDay(0, monthStep, 0, YWSCalendar.YEAR_MONTH_DAY);//获取monthType月后对应的 年月日 return (List<UserHoliday>)Q("from UserHoliday where date_exe>=?1 and date_exe<?2", P(1,YWSCalendar.getDateInfo(day[0], day[1], day[2])),P(2, YWSCalendar.getDateInfo(next[0], next[1], next[2]))).getResultList(); } /** * 获取用户的节日列表 * @param uid * @return */ @SuppressWarnings("unchecked") public static List<UserHoliday> getUserHoliday(int uid,Pagination p){ return (List<UserHoliday>)Q("from UserHoliday where user_id=?1 order by id desc",P(1,uid),p).getResultList(); } public static int getUserHolidaySize(int uid){ try{ return ((Long)SQ("select count(*) from UserHoliday where user_id=?1",P(1,uid))).intValue(); }catch(ObjectNotFoundException r){ r.printStackTrace(); return 0; } } }