2020-12-20 13:04:25 +01:00

106 lines
2.4 KiB
Java
Executable File

package com.plannaplan.entities;
import java.sql.Timestamp;
import java.util.List;
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.OneToMany;
import javax.persistence.OneToOne;
/**
* Entity of Commision grouping of state associated about commison and owner_id
*/
@Entity
public class Commision {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
@JoinColumn(name = "owner_id")
private User commisionOwner;
@OneToOne
@JoinColumn(name = "commiter_id")
private User commisionCommiter;
private Timestamp commisionDate;
@OneToMany(mappedBy = "commision", fetch = FetchType.EAGER)
private List<Assignment> assignments;
/**
*
* @param user owner of commission. Can not be null otherwise saving commision
* will fail.
*/
public Commision(User user) {
this.commisionDate = new Timestamp(System.currentTimeMillis());
this.commisionOwner = user;
this.commisionCommiter = user;
}
/**
*
* @param user user whose shedule is being commited
* @param commiter user that commited new schedule
*/
public Commision(User user, User commiter) {
this(user);
this.commisionCommiter = commiter;
}
public Commision() {
}
/**
* Id getter
*
* @return id id of commision
*/
public Long getId() {
return this.id;
}
/**
* CommisionDate getter
*
* @return commisionDate
*/
public Timestamp getCommisionDate() {
return commisionDate;
}
/**
* User of given commision getter
*
* @return User commisionOwner
*/
public User getCommisionOwner() {
return commisionOwner;
}
/**
* @return User entity that created commision (can be owner or deanery user)
*/
public User getCommisionCommiter() {
if (commisionCommiter == null) {
return commisionOwner;
}
return commisionCommiter;
}
/**
* Assigments getter
*
* @return List of assignments
*/
public List<Assignment> getAssignments() {
return this.assignments;
}
}