package eu.eudat.data.query.items.item.project; import eu.eudat.data.dao.criteria.ProjectCriteria; import eu.eudat.data.entities.Project; import eu.eudat.data.query.definition.Query; import eu.eudat.queryable.QueryableList; import java.util.UUID; public class ProjectCriteriaRequest extends Query { private Integer length; public Integer getLength() { return length; } public void setLength(Integer length) { this.length = length; } private ProjectCriteriaRequest() { } @Override public QueryableList applyCriteria() { QueryableList query = this.getQuery(); if (this.getCriteria().getLike() != null && !this.getCriteria().getLike().isEmpty()) query.where((builder, root) -> builder.like(root.get("label"), "%" + this.getCriteria().getLike() + "%")); if (this.getCriteria().getPeriodEnd() != null) query.where((builder, root) -> builder.lessThan(root.get("enddate"), this.getCriteria().getPeriodEnd())); if (this.getCriteria().getPeriodStart() != null) query.where((builder, root) -> builder.greaterThan(root.get("startdate"), this.getCriteria().getPeriodStart())); if (this.getCriteria().getReference() != null) query.where((builder, root) -> builder.equal(root.get("reference"), this.getCriteria().getReference())); query.where((builder, root) -> builder.notEqual(root.get("status"), Project.Status.DELETED.getValue())); return query; } }