package org.dddlib.organisation.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import java.util.Date;
import java.util.List;
@Entity
@DiscriminatorValue("PostHolding")
@NamedQueries({
@NamedQuery(name = "PostHolding.getPostsOfEmployee", query = "select o.commissioner from PostHolding o where o.responsible = :employee and o.fromDate <= :date and o.toDate > :date"),
@NamedQuery(name = "PostHolding.getEmployeesOfPost", query = "select o.responsible from PostHolding o where o.commissioner = :post and o.fromDate <= :date and o.toDate > :date")})
public class PostHolding extends Accountability<Post, Employee> {
private static final long serialVersionUID = 7390804525640459582L;
protected PostHolding() {
}
public PostHolding(Post post, Employee employee, Date date) {
super(post, employee, date);
}
public static List<Post> findPostsOfEmployee(Employee employee, Date date) {
return getRepository().createNamedQuery("PostHolding.getPostsOfEmployee")
.addParameter("employee", employee).addParameter("date", date).list();
}
public static List<Employee> findEmployeesOfPost(Post post, Date date) {
return getRepository().createNamedQuery("PostHolding.getEmployeesOfPost")
.addParameter("post", post).addParameter("date", date).list();
}
@Override
public String toString() {
return new ToStringBuilder(this).append(getCommissioner())
.append(getResponsible()).build();
}
}