package com.ourlinc.conference.book;
import java.util.Date;
import javax.annotation.Resource;
import com.ourlinc.conference.DateUtil;
import com.ourlinc.conference.book.impl.BookPodi;
import com.ourlinc.omni.persistence.PersistenceAbstract;
import com.ourlinc.omni.persistence.Persister;
import com.ourlinc.swift.exception.UnsupportedException;
import com.ourlinc.swift.util.NameItem;
import com.ourlinc.swift.util.UniteId;
/**
* 预定信息业务对象
* @author pengchengji
*
*/
public class Book extends PersistenceAbstract<BookPodi> implements Comparable<Book>{
//联合ID
@Resource(type=String.class)
private UniteId m_Id = UniteId.nil;
//预定日期
@Resource
private Date m_Date ;
//起始时间点
@Resource
private int m_BeginTime ;
//持续时间点
@Resource
private int m_ContinueTime ;
//部门
@Resource
private String m_Department ;
//预订人
@Resource
private String m_Linkman ;
//会议标题
@Resource
private String m_Title ;
//预定信息内容
@Resource
private String m_Content ;
//预定状态
@Resource
private int m_Status;
//用NameItem来表示预定状态
public static final NameItem STATUS_ENABLE = new NameItem("正常状态",0x0001);
public static final NameItem STATUS_DISABLE = new NameItem("失效状态",0x0002);
public static final NameItem[] ALLSTATUS = {STATUS_ENABLE,STATUS_DISABLE};
//GET SET方法开始
public UniteId getId() {
return m_Id;
}
public void setId(UniteId id) {
m_Id = id;
}
public Date getDate (){
return m_Date ;
}
public void setDate (Date date){
m_Date = date ;
}
public int getBeginTime (){
return m_BeginTime ;
}
public void setBeginTime (int beginTime){
m_BeginTime = beginTime ;
}
public int getContinueTime (){
return m_ContinueTime ;
}
public int getEndTime (){
return m_BeginTime + m_ContinueTime ;
}
public String getStrDate (){
return DateUtil.dateFormatToStr(m_Date);
}
public String getStrBeginTime (){
if(0 == (m_BeginTime%60/10)){
return (m_BeginTime/60==0?"00":m_BeginTime/60) + ":" + (m_BeginTime%60==0?"00":"0"+m_BeginTime%60);
}else {
return (m_BeginTime/60==0?"00":m_BeginTime/60) + ":" + (m_BeginTime%60==0?"00":m_BeginTime%60);
}
}
public String getStrEndTime (){
if(0 == (getEndTime()%60/10)){
return (getEndTime()/60==0?"00":getEndTime()/60) + ":" + (getEndTime()%60==0?"00":"0"+getEndTime()%60);
}else {
return (getEndTime()/60==0?"00":getEndTime()/60) + ":" + (getEndTime()%60==0?"00":getEndTime()%60);
}
}
public void setContinueTime (int continueTime){
m_ContinueTime = continueTime ;
}
public String getDepartment() {
return m_Department;
}
public void setDepartment(String department) {
m_Department = department;
}
public String getLinkman() {
return m_Linkman;
}
public void setLinkman(String linkman) {
m_Linkman = linkman;
}
public void setTitle(String title) {
this.m_Title = title;
}
public String getTitle() {
return m_Title;
}
public void setContent(String content) {
this.m_Content = content;
}
public String getContent() {
return m_Content;
}
public int getStatus() {
return m_Status;
}
//GET SET方法结束
/**
* 取消预定
*/
public void cancle(){
m_Status = STATUS_DISABLE.getId();
markUpdate();
}
/**
* 激活预定
*/
public void activate(){
m_Status = STATUS_ENABLE.getId();
markUpdate();
}
/**
* 构造函数
* @param podi
*/
public Book(BookPodi podi) {
super(podi);
}
/**
* Book构造函数
* @param podi
* @param date 预定日期
* @param beginTime 开始时间
* @param continueTime 持续时间
* @param status 初始化预定状态为正常状态
*/
public Book(BookPodi podi, Date date, int beginTime, int continueTime, String department,String linkman, int status) {
super(podi);
m_Date = date ;
m_BeginTime = beginTime ;
m_ContinueTime = continueTime ;
m_Department = department ;
m_Linkman = linkman ;
m_Status = status ;
genUniteId();
markUpdate();
}
/**
* 对标题和内容进行初始化
* @param title
* @param content
*/
public void init (String title, String content){
m_Title = title ;
m_Content = content ;
markUpdate();
}
@Override
protected void initPersistenceId(Persister<?> arg0) {
genUniteId();
}
// 产生新的ID(用户ID作为前缀生成ID)
protected void genUniteId() {
if (UniteId.nil != m_Id){
throw new UnsupportedException("不能重复初始化ID:" + m_Id);
}
//id是需要自己维护的,这个方法相当于数据库的id自增功能
m_Id = UniteId.valueOf(getPodi().getPersister(getClass()).getNewId());
// 标示要重做索引的状态及新创建(框架默认是会对id进行索引的)
setPersistenceState(STATE_REINDEX | STATE_NEW);
}
public String getPersistenceId() {
return m_Id.toString();
}
/**
* 制定List<Book>的排序规则
* @param book 需要比较的预定
*/
public int compareTo(Book book) {
if (m_Date.equals(book.m_Date)){
if (this.m_BeginTime > book.m_BeginTime){
return 1 ;
}else if (this.m_BeginTime < book.m_BeginTime){
return -1 ;
}else {
return this.m_Title.compareTo(book.m_Title);
}
}else if (m_Date.after(book.m_Date)){
return 1;
}else{
return -1 ;
}
}
}