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 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 getAssignments() { return this.assignments; } }