/**
*
*/
package com.syzton.sunread.model.region;
import javax.persistence.Basic;
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.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import org.hibernate.annotations.Type;
import org.joda.time.DateTime;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.syzton.sunread.dto.region.SchoolDistrictDTO;
import com.syzton.sunread.model.common.AbstractEntity;
/**
* @author Morgan-Leon
* @Date 2015年6月6日
*
*/
@Entity
@Table(name="school_district")
@JsonIgnoreProperties
public class SchoolDistrict extends AbstractEntity{
public static final int MAX_LENGTH_DESCRIPTION = 500;
public static final int MAX_LENGTH_NAME = 100;
@Column(name ="name", nullable = false, unique = true, length = MAX_LENGTH_NAME)
private String name;
@Column(name = "description", nullable = true, length = MAX_LENGTH_DESCRIPTION)
private String description;
@Column(name = "modification_time", nullable = false)
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime modificationTime;
@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},optional=false)
@Basic(fetch = FetchType.EAGER)
@JoinColumn(name = "region")
private Region region;
// @OneToMany(cascade = CascadeType.ALL,mappedBy ="schoolDistrict")
// @Basic(fetch = FetchType.LAZY)
// private Set<Campus> campus = new HashSet<Campus>();
public SchoolDistrict() {
}
public DateTime getModificationTime() {
return modificationTime;
}
public void setName(String name){
this.name = name;
}
public String getName() {
return name;
}
private String getDescription() {
return this.description;
}
public void setDescription(String description){
this.description = description;
}
public static Builder getBuilder(String name, Region region) {
return new Builder(name, region);
}
@PrePersist
public void prePersist() {
DateTime now = DateTime.now();
creationTime = now;
modificationTime = now;
}
@PreUpdate
public void preUpdate() {
modificationTime = DateTime.now();
}
public Region getRegion() {
return region;
}
public void setRegion(Region region) {
this.region = region;
}
//
// public Set<Campus> getCampus() {
// return campus;
// }
//
// public void setGrades(Set<Campus> campus) {
// this.campus = campus;
// }
public void update(String name) {
// TODO Auto-generated method stub
this.name = name;
}
public static class Builder {
private SchoolDistrict built;
public Builder() {
// TODO Auto-generated constructor stub
built = new SchoolDistrict();
}
public SchoolDistrict build() {
return built;
}
public Builder(String name,Region region) {
built = new SchoolDistrict();
built.name = name;
built.region = region;
}
public Builder description(String description) {
built.description = description;
return this;
}
}
public SchoolDistrictDTO createDTO(SchoolDistrict model) {
SchoolDistrictDTO dto = new SchoolDistrictDTO();
dto.setId(model.id);
dto.setName(model.getName());
dto.setDescription(model.getDescription());
dto.setRegionId(model.region.getId());
// dto.setAddress(model.region.generateAddress());
return dto;
}
}