/**
* Implements the entity corresponding to the collection table in the aidr_predict DB
*
* @author Koushik
*/
package qa.qcri.aidr.dbmanager.entities.misc;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
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.OneToMany;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import org.hibernate.Hibernate;
import qa.qcri.aidr.common.values.UsageType;
import qa.qcri.aidr.dbmanager.entities.model.ModelFamily;
import qa.qcri.aidr.dbmanager.entities.task.Document;
import com.fasterxml.jackson.annotation.JsonManagedReference;
@Entity
@Table(name = "collection")
public class Collection implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = -7692349620189189978L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
private Long crisisId;
@Column(length = 64, unique = true)
private String code;
@Column(length = 255, unique = true)
private String name;
@ManyToOne
@JoinColumn(name="owner_id")
private Users owner;
private Integer count;
@Column(name="start_date")
private Date startDate;
@Column(name="end_date")
private Date endDate;
@Column(name="publicly_listed")
private boolean publiclyListed;
@Column(name="last_document")
private String lastDocument;
@Column(name="classifier_enabled")
private boolean classifierEnabled;
@ManyToOne
@JoinColumn(name="crisis_type")
private CrisisType crisisType;
@Column(name="duration_hours")
private Integer durationHours;
@Column(length = 5000, name = "track")
private String track;
@Column(length = 1000, name = "follow")
private String follow;
@Column(length = 1000, name = "geo")
private String geo;
@Column(name="geo_r")
private String geoR;
@Column(name="lang_filters")
private String langFilters;
@Column(name="micromappers_enabled")
private boolean isMicromapperEnabled;
@Column(name="usage_type")
private UsageType usageType;
@ManyToOne
@JoinColumn(name="classifier_enabled_by")
private Users users;
@Column(name = "trashed", nullable = false)
private boolean isTrashed;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "collection")
@JsonManagedReference
private List<Document> documents;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "collection")
@JsonManagedReference
private List<ModelFamily> modelFamilies;
@Column(updatable = false, nullable=false, name = "created_at")
private Timestamp createdAt;
@Column(nullable=false, name = "updated_at")
private Timestamp updatedAt;
private String provider;
private Integer status;
@Column(name="save_media_enabled", columnDefinition="bit default 0")
private boolean saveMediaEnabled;
@Column(name="fetch_interval", columnDefinition="int default 0")
private int fetchInterval;
@Column(name="last_execution_time")
private Date lastExecutionTime;
@PreUpdate
protected void onUpdate() {
updatedAt = new Timestamp(System.currentTimeMillis());
}
@PrePersist
public void onCreate() {
updatedAt = new Timestamp(System.currentTimeMillis());
createdAt = updatedAt;
}
public Collection(Users users, CrisisType crisisType, String name, String code,
boolean isTrashed, boolean isMicromapperEnabled) {
this.users = users;
this.crisisType = crisisType;
this.name = name;
this.code = code;
this.isTrashed = isTrashed;
this.isMicromapperEnabled = isMicromapperEnabled;
}
public Collection(Long crisisID, String name, String code, boolean isTrashed){
this.crisisId = crisisID;
this.name = name;
this.code = code;
this.isTrashed = isTrashed;
}
public Collection(Users users, CrisisType crisisType, String name, String code,
boolean isTrashed, boolean isMicromapperEnabled, List<Document> documents,
List<ModelFamily> modelFamilies) {
this.users = users;
this.crisisType = crisisType;
this.name = name;
this.code = code;
this.isTrashed = isTrashed;
this.isMicromapperEnabled = isMicromapperEnabled;
this.documents = documents;
this.modelFamilies = modelFamilies;
}
public Collection() {
// TODO Auto-generated constructor stub
}
public Long getCrisisId() {
return this.crisisId;
}
public void setCrisisId(Long crisisId) {
this.crisisId = crisisId;
}
public Users getUsers() {
return this.users;
}
public void setUsers(Users users) {
this.users = users;
}
public CrisisType getCrisisType() {
return this.crisisType;
}
public void setCrisisType(CrisisType crisisType) {
this.crisisType = crisisType;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return this.code;
}
public void setCode(String code) {
this.code = code;
}
public Users getOwner() {
return owner;
}
public void setOwner(Users owner) {
this.owner = owner;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public boolean isPubliclyListed() {
return publiclyListed;
}
public void setPubliclyListed(boolean publiclyListed) {
this.publiclyListed = publiclyListed;
}
public String getLastDocument() {
return lastDocument;
}
public void setLastDocument(String lastDocument) {
this.lastDocument = lastDocument;
}
public boolean isClassifierEnabled() {
return classifierEnabled;
}
public void setClassifierEnabled(boolean classifierEnabled) {
this.classifierEnabled = classifierEnabled;
}
public Integer getDurationHours() {
return durationHours;
}
public void setDurationHours(Integer durationHours) {
this.durationHours = durationHours;
}
public String getTrack() {
return track;
}
public void setTrack(String track) {
this.track = track;
}
public String getFollow() {
return follow;
}
public void setFollow(String follow) {
this.follow = follow;
}
public String getGeo() {
return geo;
}
public void setGeo(String geo) {
this.geo = geo;
}
public String getGeoR() {
return geoR;
}
public void setGeoR(String geoR) {
this.geoR = geoR;
}
public String getLangFilters() {
return langFilters;
}
public void setLangFilters(String langFilters) {
this.langFilters = langFilters;
}
public boolean isMicromapperEnabled() {
return isMicromapperEnabled;
}
public void setMicromapperEnabled(boolean isMicromapperEnabled) {
this.isMicromapperEnabled = isMicromapperEnabled;
}
public boolean isTrashed() {
return isTrashed;
}
public void setTrashed(boolean isTrashed) {
this.isTrashed = isTrashed;
}
public Timestamp getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Timestamp createdAt) {
this.createdAt = createdAt;
}
public Timestamp getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Timestamp updatedAt) {
this.updatedAt = updatedAt;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public boolean isIsTrashed() {
return this.isTrashed;
}
public void setIsTrashed(boolean isTrashed) {
this.isTrashed = isTrashed;
}
public boolean isIsMicromapperEnabled() {
return isMicromapperEnabled;
}
public void setIsMicromapperEnabled(boolean isMicromapperEnabled) {
this.isMicromapperEnabled = isMicromapperEnabled;
}
public List<Document> getDocuments() {
return this.documents;
}
public void setDocuments(List<Document> documents) {
this.documents = documents;
}
public List<ModelFamily> getModelFamilies() {
return this.modelFamilies;
}
public void setModelFamilies(List<ModelFamily> modelFamilies) {
this.modelFamilies = modelFamilies;
}
public boolean hasUsers() {
return Hibernate.isInitialized(this.users);
}
public boolean hasCrisisType() {
return Hibernate.isInitialized(this.crisisType);
}
public boolean hasDocuments() {
//return ((PersistentList) this.documents).wasInitialized();
return Hibernate.isInitialized(this.documents);
}
public boolean hasModelFamilies() {
//return ((PersistentList) this.modelFamilies).wasInitialized();
return Hibernate.isInitialized(this.modelFamilies);
}
public String getProvider() {
return provider;
}
public void setProvider(String provider) {
this.provider = provider;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public boolean isSaveMediaEnabled() {
return saveMediaEnabled;
}
public void setSaveMediaEnabled(boolean saveMediaEnabled) {
this.saveMediaEnabled = saveMediaEnabled;
}
public UsageType getUsageType() {
return usageType;
}
public void setUsageType(UsageType usageType) {
this.usageType = usageType;
}
public int getFetchInterval() {
return fetchInterval;
}
public void setFetchInterval(int fetchInterval) {
this.fetchInterval = fetchInterval;
}
public Date getLastExecutionTime() {
return lastExecutionTime;
}
public void setLastExecutionTime(Date lastExecutionTime) {
this.lastExecutionTime = lastExecutionTime;
}
}