From 64f5d2665b076e285f57093603dea11f46ee08e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Thu, 2 Feb 2012 19:23:41 +0100 Subject: [PATCH] Bug #1343: Rewrite part of the code for company view initialization. These changes ease the fixes for the bug. FEA: ItEr76S04BugFixing --- .../company/CompanyPlanningController.java | 2 +- .../planner/company/CompanyPlanningModel.java | 35 ++++++++++++++----- .../company/ICompanyPlanningModel.java | 2 ++ 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java index 940ae7d6e..83cb86a50 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java @@ -286,7 +286,7 @@ public class CompanyPlanningController implements Composer { Boolean includeOrderElements = checkIncludeOrderElements.isChecked(); if (listFilters.isEmpty() && startDate == null && finishDate == null) { - return null; + return model.getDefaultPredicate(includeOrderElements); } return new TaskGroupPredicate(listFilters, startDate, finishDate, includeOrderElements); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java index c9a256147..8639f7018 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java @@ -65,6 +65,7 @@ import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.User; import org.libreplan.business.workreports.entities.WorkReportLine; import org.libreplan.web.planner.TaskElementAdapter; +import org.libreplan.web.planner.TaskGroupPredicate; import org.libreplan.web.planner.chart.Chart; import org.libreplan.web.planner.chart.EarnedValueChartFiller; import org.libreplan.web.planner.chart.EarnedValueChartFiller.EarnedValueType; @@ -673,7 +674,6 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { private List retainOnlyTopLevel(IPredicate predicate) { List result = new ArrayList(); User user; - List ordersToShow = new ArrayList(); try { user = userDAO.findByLoginName(SecurityUtils.getSessionUserLoginName()); @@ -695,7 +695,6 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { .accepts(associatedTaskElement))) { associatedTaskElement.setSimplifiedAssignedStatusCalculationEnabled(true); result.add(associatedTaskElement); - ordersToShow.add(order); } } Collections.sort(result,new Comparator(){ @@ -704,24 +703,44 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { return arg0.getStartDate().compareTo(arg1.getStartDate()); } }); - setDefaultFilterValues(ordersToShow); return result; } - private void setDefaultFilterValues(List list) { + @Override + public IPredicate getDefaultPredicate(Boolean includeOrderElements) { + User user; + if (currentScenario == null) { + currentScenario = scenarioManager.getCurrent(); + } + try { + user = userDAO.findByLoginName(SecurityUtils.getSessionUserLoginName()); + } + catch(InstanceNotFoundException e) { + //this case shouldn't happen, because it would mean that there isn't a logged user + //anyway, if it happened we return an empty list + return null; + } + List list = orderDAO.getOrdersByReadAuthorizationByScenario( + user, currentScenario); Date startDate = null; Date endDate = null; for (Order each : list) { + each.useSchedulingDataFor(currentScenario, false); TaskGroup associatedTaskElement = each.getAssociatedTaskElement(); - startDate = Collections.min(notNull(startDate, each.getInitDate(), - associatedTaskElement.getStartDate())); - endDate = Collections.max(notNull(endDate, each.getDeadline(), - associatedTaskElement.getEndDate())); + if (associatedTaskElement != null + && STATUS_VISUALIZED.contains(each.getState())) { + startDate = Collections.min(notNull(startDate, each.getInitDate(), + associatedTaskElement.getStartDate())); + endDate = Collections.max(notNull(endDate, each.getDeadline(), + associatedTaskElement.getEndDate())); + } } filterStartDate = startDate != null ? LocalDate .fromDateFields(startDate) : null; filterFinishDate = endDate != null ? LocalDate.fromDateFields(endDate) : null; + return new TaskGroupPredicate(null, startDate, endDate, + includeOrderElements); } private static List notNull(T... values) { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/ICompanyPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/ICompanyPlanningModel.java index 7dc0bf24b..01c5d12fc 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/ICompanyPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/ICompanyPlanningModel.java @@ -51,4 +51,6 @@ public interface ICompanyPlanningModel { ProgressType getProgressTypeFromConfiguration(); + public IPredicate getDefaultPredicate(Boolean includeOrderElements); + }