package fi.otavanopisto.pyramus.domainmodel.grading; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.PersistenceException; import javax.persistence.TableGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import javax.persistence.Version; import javax.validation.constraints.NotNull; import fi.otavanopisto.pyramus.domainmodel.base.ArchivableEntity; import fi.otavanopisto.pyramus.domainmodel.students.Student; import fi.otavanopisto.pyramus.domainmodel.users.StaffMember; @Entity @Inheritance(strategy=InheritanceType.JOINED) public class Credit implements ArchivableEntity { public Long getId() { return id; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } public String getVerbalAssessment() { return verbalAssessment; } public void setVerbalAssessment(String verbalAssessment) { this.verbalAssessment = verbalAssessment; } public Boolean getArchived() { return archived; } public void setArchived(Boolean archived) { this.archived = archived; } public CreditType getCreditType() { return creditType; } protected void setCreditType(CreditType creditType) { this.creditType = creditType; } @SuppressWarnings("unused") private void setVersion(Long version) { this.version = version; } public Long getVersion() { return version; } @Transient public Student getStudent() { throw new PersistenceException("Credit.getStudent() not implemented"); } public StaffMember getAssessor() { return assessor; } public void setAssessor(StaffMember assessor) { this.assessor = assessor; } @Id @GeneratedValue(strategy=GenerationType.TABLE, generator="Credit") @TableGenerator(name="Credit", allocationSize=1, table = "hibernate_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_next_hi_value") private Long id; @Column (nullable=false) @Temporal (value=TemporalType.TIMESTAMP) private Date date; @ManyToOne @JoinColumn(name="grade") private Grade grade; @Lob @Basic (fetch = FetchType.LAZY) @Column private String verbalAssessment; @ManyToOne private StaffMember assessor; @NotNull @Column (nullable = false) private Boolean archived; @Enumerated (EnumType.STRING) @Column (insertable = true, updatable = false, nullable = false) private CreditType creditType; @Version @Column(nullable = false) private Long version; }