package hu.sch.domain;
import hu.sch.domain.user.User;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Az egyes értékelésekhez tartozó üzeneteket reprezentáló entitás
*
* @see Valuation
* @author hege
*/
@Entity
@Table(name = "ertekeles_uzenet")
@NamedQueries({
@NamedQuery(name = ValuationMessage.listMessages,
query = "SELECT m FROM ValuationMessage m WHERE m.semester=:semester AND m.group=:group ORDER BY m.id DESC")
})
public class ValuationMessage implements Serializable {
public static final String listMessages = "listMessages";
//
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id;
//----------------------------------------------------
@ManyToOne
@JoinColumn(name = "group_id")
protected Group group;
//----------------------------------------------------
@Column(name = "group_id", insertable = false, updatable = false)
protected Long groupId;
//----------------------------------------------------
@Embedded
protected Semester semester;
//----------------------------------------------------
@ManyToOne
@JoinColumn(name = "felado_usr_id")
protected User sender;
//----------------------------------------------------
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "feladas_ido")
protected Date date;
//----------------------------------------------------
@Column(name = "uzenet", columnDefinition = "text", length = 4096)
protected String message;
//----------------------------------------------------
@Column(name = "from_system")
protected boolean fromSystem;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
if (group != null) {
groupId = group.getId();
}
}
public Long getGroupId() {
return groupId;
}
public void setGroupId(Long groupId) {
this.groupId = groupId;
}
public Semester getSemester() {
return semester;
}
public void setSemester(Semester semester) {
this.semester = semester;
}
public User getSender() {
return sender;
}
public void setSender(User sender) {
this.sender = sender;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String uzenet) {
this.message = uzenet;
}
public boolean isFromSystem() {
return fromSystem;
}
public void setFromSystem(boolean fromSystem) {
this.fromSystem = fromSystem;
}
@PrePersist
public void setDefaultValues() {
setDate(new Date());
}
@Override
public String toString() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy. MMMMM dd. HH:mm:ss", new Locale("hu"));
return "Feladó: " + sender.getFullName() + "\n"
+ "Dátum: " + dateFormat.format(new Date()) + "\n"
+ "Üzenet szövege:\n\n" + message;
}
}