package entity.qms; import entity.files.Qms2File; import entity.system.Users; import op.tools.SYSTools; import org.joda.time.LocalDate; import javax.persistence.*; import java.util.Collection; import java.util.Date; /** * Created by tloehr on 28.05.14. */ @Entity @Table(name = "qms") public class Qms implements Comparable<Qms> { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false, insertable = true, updatable = true) private long id; public long getId() { return id; } public void setId(long id) { this.id = id; } @Basic @Column(name = "target", nullable = false, insertable = true, updatable = true) @Temporal(TemporalType.TIMESTAMP) private Date target; public Date getTarget() { return target; } public void setTarget(Date target) { this.target = target; } @Basic @Column(name = "actual", nullable = true, insertable = true, updatable = true) @Temporal(TemporalType.TIMESTAMP) private Date actual; public Date getActual() { return actual; } public void setActual(Date actual) { this.actual = actual; } @Basic @Column(name = "state", nullable = true, insertable = true, updatable = true) private Short state; public Short getState() { return state; } public void setState(Short state) { this.state = state; } @Basic @Column(name = "sequence", nullable = false, insertable = true, updatable = true) private int sequence; public int getSequence() { return sequence; } public void setSequence(int sequence) { this.sequence = sequence; } @Version @Column(name = "version", nullable = false, insertable = true, updatable = true) private long version; @JoinColumn(name = "uid", referencedColumnName = "UKennung") @ManyToOne private Users user; @JoinColumn(name = "qmspid", referencedColumnName = "id") @ManyToOne private Qmsplan qmsplan; @JoinColumn(name = "qmssid", referencedColumnName = "id") @ManyToOne private Qmssched qmssched; @Basic @Column(name = "text", nullable = true, insertable = true, updatable = true, length = 16777215) private String text; @OneToMany(cascade = CascadeType.ALL, mappedBy = "qms") private Collection<Qms2File> attachedFilesConnections; public Collection<Qms2File> getAttachedFilesConnections() { return attachedFilesConnections; } public String getText() { return text; } public void setText(String text) { this.text = SYSTools.tidy(text); } public Qms() { } public Qms(Date target, Qmssched qmssched, int sequence) { this.target = target; this.qmsplan = qmssched.getQmsplan(); this.qmssched = qmssched; this.user = null; this.actual = null; this.state = QmsTools.STATE_OPEN; this.sequence = sequence; } public boolean hasText() { return !SYSTools.catchNull(text).isEmpty(); } public Users getUser() { return user; } public void setUser(Users user) { this.user = user; } public Qmsplan getQmsplan() { return qmsplan; } public void setQmsplan(Qmsplan qmsplan) { this.qmsplan = qmsplan; } public Qmssched getQmssched() { return qmssched; } public void setQmssched(Qmssched qmssched) { this.qmssched = qmssched; } public boolean isOpen() { return state == QmsTools.STATE_OPEN; } public boolean isDue() { // if its closed its never due! return isOpen() && new LocalDate(target).minusDays(qmssched.getDuedays()).isBefore(new LocalDate()); } public boolean isPastDue() { // if its closed its never due! return isOpen() && new LocalDate(target).isBefore(new LocalDate()); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Qms qms = (Qms) o; if (id != qms.id) return false; if (sequence != qms.sequence) return false; if (version != qms.version) return false; if (actual != null ? !actual.equals(qms.actual) : qms.actual != null) return false; if (qmsplan != null ? !qmsplan.equals(qms.qmsplan) : qms.qmsplan != null) return false; if (qmssched != null ? !qmssched.equals(qms.qmssched) : qms.qmssched != null) return false; if (state != null ? !state.equals(qms.state) : qms.state != null) return false; if (target != null ? !target.equals(qms.target) : qms.target != null) return false; if (user != null ? !user.equals(qms.user) : qms.user != null) return false; return true; } @Override public int hashCode() { int result = (int) (id ^ (id >>> 32)); result = 31 * result + (target != null ? target.hashCode() : 0); result = 31 * result + (actual != null ? actual.hashCode() : 0); result = 31 * result + (state != null ? state.hashCode() : 0); result = 31 * result + sequence; result = 31 * result + (int) (version ^ (version >>> 32)); result = 31 * result + (user != null ? user.hashCode() : 0); result = 31 * result + (qmsplan != null ? qmsplan.hashCode() : 0); result = 31 * result + (qmssched != null ? qmssched.hashCode() : 0); return result; } @Override public String toString() { return "Qms{" + "id=" + SYSTools.catchNull(id, "<NULL>") + "target=" + target + ", state=" + state + ", qmssched=" + qmssched.getId() + '}'; } @Override public int compareTo(Qms o) { return target.compareTo(o.getTarget()); } }