package entity.staff;
import entity.files.SYSFiles;
import entity.files.SYSFilesContainer;
import entity.files.SYSFilesLink;
import entity.files.TrainingAttendee2File;
import entity.system.Users;
import op.OPDE;
import javax.persistence.*;
import java.util.Collection;
import java.util.Date;
/**
* Created by tloehr on 17.07.14.
*/
@Entity
@Table(name = "training2users")
public class Training2Users implements Comparable<Training2Users>, SYSFilesContainer {
@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
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "pit", nullable = false, insertable = true, updatable = true)
private Date pit;
public Date getPit() {
return pit;
}
public void setPit(Date pit) {
this.pit = pit;
}
@Basic
@Column(name = "state", nullable = false, insertable = true, updatable = true)
private byte state;
public byte getState() {
return state;
}
public void setState(byte state) {
this.state = state;
}
@Basic
@Column(name = "text", nullable = true, insertable = true, updatable = true, length = 200)
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Version
@Column(name = "version", nullable = false, insertable = true, updatable = true)
private long version;
@JoinColumn(name = "trid", referencedColumnName = "id")
@ManyToOne
private Training training;
@JoinColumn(name = "uid", referencedColumnName = "UKennung")
@ManyToOne
private Users attendee;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "training2Users")
private Collection<TrainingAttendee2File> attachedFilesConnections;
public Collection<TrainingAttendee2File> getAttachedFilesConnections() {
return attachedFilesConnections;
}
@Override
public SYSFilesLink attachFile(SYSFiles sysFiles) {
TrainingAttendee2File link = new TrainingAttendee2File(sysFiles, this, OPDE.getLogin().getUser(), new Date());
sysFiles.getTrainAttendeeAssignCollection().add(link);
attachedFilesConnections.add(link);
return link;
}
@Override
public SYSFilesLink detachFile(SYSFiles sysFiles) {
SYSFilesLink link2remove = null;
for (SYSFilesLink link : attachedFilesConnections){
if (link.getSysfile().equals(sysFiles)){
link2remove = link;
break;
}
}
sysFiles.getTrainAttendeeAssignCollection().remove(link2remove);
attachedFilesConnections.remove(link2remove);
return link2remove;
}
public Users getAttendee() {
return attendee;
}
public void setAttendee(Users attendee) {
this.attendee = attendee;
}
public Training getTraining() {
return training;
}
public void setTraining(Training training) {
this.training = training;
}
public Training2Users() {
}
public Training2Users(Date pit, Users attendee, Training training) {
this.pit = pit;
this.attendee = attendee;
this.training = training;
}
@Override
public int compareTo(Training2Users o) {
return attendee.getUID().compareTo(o.getAttendee().getUID());
}
}