diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/daos/DayAssignmentDAO.java b/libreplan-business/src/main/java/org/libreplan/business/planner/daos/DayAssignmentDAO.java index 043c7dea3..a515cbad1 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/daos/DayAssignmentDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/daos/DayAssignmentDAO.java @@ -46,6 +46,7 @@ import org.springframework.stereotype.Repository; * * @author Diego Pino García * @author Manuel Rego Casasnovas + * @author Javier Moran Rua */ @Repository @Scope(BeanDefinition.SCOPE_SINGLETON) @@ -63,30 +64,46 @@ public class DayAssignmentDAO extends GenericDAOHibernate @Override public List getAllFor(Scenario scenario) { List result = new ArrayList(); - result.addAll(getSpecific(scenario, null, null)); - result.addAll(getGeneric(scenario, null, null)); - result.addAll(getDerived(scenario, null, null)); + result.addAll(getSpecific(scenario, null, null, null)); + result.addAll(getGeneric(scenario, null, null, null)); + result.addAll(getDerived(scenario, null, null, null)); return result; } + @Override public List getAllFor(Scenario scenario, LocalDate init, LocalDate end) { List result = new ArrayList(); - result.addAll(getSpecific(scenario, init, end)); - result.addAll(getGeneric(scenario, init, end)); - result.addAll(getDerived(scenario, init, end)); + result.addAll(getSpecific(scenario, init, end, null)); + result.addAll(getGeneric(scenario, init, end, null)); + result.addAll(getDerived(scenario, init, end, null)); + return result; + } + + @Override + public List getAllFor(Scenario scenario, + LocalDate startDateInclusive, LocalDate endDateInclusive, + Resource resource) { + List result = new ArrayList(); + result.addAll(getSpecific(scenario, startDateInclusive, + endDateInclusive, resource)); + result.addAll(getGeneric(scenario, startDateInclusive, + endDateInclusive, resource)); + result.addAll(getDerived(scenario, startDateInclusive, + endDateInclusive, resource)); return result; } private List getDerived(Scenario scenario, - LocalDate initInclusive, LocalDate endInclusive) { + LocalDate initInclusive, LocalDate endInclusive, Resource resource) { String queryString = "select d from DerivedDayAssignmentsContainer c " + "JOIN c.dayAssignments d where c.scenario = :scenario" + addQueryConditionForInitAndEndDate(initInclusive, - endInclusive); + endInclusive) + addQueryConditionsForResource(resource); Query query = getSession().createQuery(queryString); query = query.setParameter("scenario", scenario); addInitAndEndParameters(query, initInclusive, endInclusive); + addResourceParameter(query, resource); return query.list(); } @@ -98,6 +115,10 @@ public class DayAssignmentDAO extends GenericDAOHibernate return initCondition + endCondition; } + private String addQueryConditionsForResource(Resource resource) { + return resource != null ? " and d.resource = :resource " : ""; + } + private Query addInitAndEndParameters(Query query, LocalDate initInclusive, LocalDate endInclusive) { if (initInclusive != null) { @@ -109,30 +130,38 @@ public class DayAssignmentDAO extends GenericDAOHibernate return query; } + private Query addResourceParameter(Query query, Resource resource) { + return resource != null ? query.setParameter("resource", resource) + : query; + } + private List getGeneric(Scenario scenario, - LocalDate initInclusive, LocalDate endInclusive) { + LocalDate initInclusive, LocalDate endInclusive, Resource resource) { String queryString = "select d from GenericDayAssignmentsContainer c " + "JOIN c.dayAssignments d where c.scenario = :scenario" + addQueryConditionForInitAndEndDate(initInclusive, - endInclusive); + endInclusive) + addQueryConditionsForResource(resource); Query query = getSession().createQuery(queryString).setParameter( "scenario", scenario); - query = addInitAndEndParameters(query, initInclusive, endInclusive); + addInitAndEndParameters(query, initInclusive, endInclusive); + addResourceParameter(query, resource); return query.list(); } private List getSpecific(Scenario scenario, - LocalDate initInclusive, LocalDate endInclusive) { + LocalDate initInclusive, LocalDate endInclusive, Resource resource) { String queryString = "select d from SpecificDayAssignmentsContainer c " + "JOIN c.dayAssignments d where c.scenario = :scenario" + addQueryConditionForInitAndEndDate(initInclusive, - endInclusive); + endInclusive) + addQueryConditionsForResource(resource); Query query = getSession().createQuery(queryString).setParameter( "scenario", scenario); - query = addInitAndEndParameters(query, initInclusive, endInclusive); + addInitAndEndParameters(query, initInclusive, endInclusive); + addResourceParameter(query, resource); return query.list(); } + @Override @SuppressWarnings("unchecked") public List listFilteredByDate(LocalDate init, LocalDate end) { Criteria criteria = getSession().createCriteria(DayAssignment.class); @@ -164,7 +193,7 @@ public class DayAssignmentDAO extends GenericDAOHibernate } Criteria criteria = getSession().createCriteria(DayAssignment.class) .add(Restrictions.in("resource", resources)); - return (List) criteria.list(); + return criteria.list(); } } diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/daos/IDayAssignmentDAO.java b/libreplan-business/src/main/java/org/libreplan/business/planner/daos/IDayAssignmentDAO.java index d8af46e7d..3af595dc6 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/daos/IDayAssignmentDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/daos/IDayAssignmentDAO.java @@ -34,8 +34,9 @@ import org.libreplan.business.scenarios.entities.Scenario; /** * DAO interface for {@link DayAssignment} * - * @author @author Diego Pino García + * @author Diego Pino García * @author Manuel Rego Casasnovas + * @author Javier Moran Rua */ public interface IDayAssignmentDAO extends IGenericDAO { @@ -47,6 +48,10 @@ public interface IDayAssignmentDAO extends IGenericDAO { public List getAllFor(Scenario scenario, LocalDate initInclusive, LocalDate endInclusive); + public List getAllFor(Scenario scenario, + LocalDate startDateInclusive, LocalDate endDateInclusive, + Resource resource); + List listFilteredByDate(LocalDate init, LocalDate end); public List findByResources(Scenario scenario, List resources);