package com.syzton.sunread.model.semester;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Type;
import org.joda.time.DateTime;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.syzton.sunread.dto.semester.SemesterDTO;
import com.syzton.sunread.model.common.AbstractEntity;
import com.syzton.sunread.model.organization.Campus;
import com.syzton.sunread.util.DateSerializer;
/*
* @Date 2015-3-22
* @Author Morgan-Leon
*/
@Entity
@Table(name="semester")
public class Semester extends AbstractEntity{
public static final int MAX_LENGTH_DESCRIPTION = 500;
private String semester;
@Column(name = "description", nullable = true, length = MAX_LENGTH_DESCRIPTION)
private String description;
@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH,CascadeType.PERSIST},fetch=FetchType.LAZY,optional=false)
@JoinColumn(name = "campus")
private Campus campus;
@JsonSerialize(using = DateSerializer.class)
@Column(name ="start_time",nullable = false)
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime startTime;
@JsonSerialize(using = DateSerializer.class)
@Column(name ="end_time",nullable = false)
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime endTime;
public Semester() {
}
public String getSemester() {
return semester;
}
public void setSemester(String semester) {
this.semester = semester;
}
public void setCampus(Campus campus) {
this.campus = campus;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public DateTime getStartTime() {
return startTime;
}
public void setStartTime(DateTime startTime) {
this.startTime = startTime;
}
public DateTime getEndTime() {
return endTime;
}
public void setEndTime(DateTime endTime) {
this.endTime = endTime;
}
public SemesterDTO createDTO() {
SemesterDTO dto = new SemesterDTO();
dto.setId(id);
dto.setCampusId(campus.getId());
dto.setCampusName(campus.getName());
dto.setDescription(description);
dto.setSemester(semester);
dto.setStartTime(startTime.toDate());
dto.setEndTime(endTime.toDate());
return dto;
}
}