From 9498f508b2fa7db30e48086955a1ee5bc1fa5333 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 21 Jun 2012 17:03:43 +0200 Subject: [PATCH] Fix reports to filter projects by user permissions FEA: ItEr76S30PermissionsEnhancements --- .../business/orders/daos/IOrderDAO.java | 3 ++- .../business/orders/daos/OrderDAO.java | 12 +++++++++- .../org/libreplan/web/orders/OrderModel.java | 13 ++--------- .../planner/company/CompanyPlanningModel.java | 23 +++---------------- .../CompletedEstimatedHoursPerTaskModel.java | 9 +++++++- .../reports/OrderCostsPerResourceModel.java | 10 +++++++- .../SchedulingProgressPerOrderModel.java | 6 +++-- .../TimeLineRequiredMaterialModel.java | 5 +++- .../WorkingArrangementsPerOrderModel.java | 5 +++- .../reports/WorkingProgressPerTaskModel.java | 7 ++++-- 10 files changed, 52 insertions(+), 41 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/daos/IOrderDAO.java b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/IOrderDAO.java index 2c13f19cf..1a96f86a8 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/daos/IOrderDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/IOrderDAO.java @@ -76,7 +76,7 @@ public interface IOrderDAO extends IIntegrationEntityDAO { */ List getOrdersByWriteAuthorization(User user); - List getOrdersByReadAuthorizationByScenario(User user, + List getOrdersByReadAuthorizationByScenario(String username, Scenario scenario); /** @@ -105,4 +105,5 @@ public interface IOrderDAO extends IIntegrationEntityDAO { List getCostExpenseSheet(List orders, Date startingDate, Date endingDate, List criterions); + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderDAO.java b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderDAO.java index f6f151614..8a3d8f7b4 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderDAO.java @@ -48,6 +48,7 @@ import org.libreplan.business.reports.dtos.OrderCostsPerResourceDTO; import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.scenarios.entities.Scenario; import org.libreplan.business.users.daos.IOrderAuthorizationDAO; +import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.OrderAuthorization; import org.libreplan.business.users.entities.OrderAuthorizationType; import org.libreplan.business.users.entities.User; @@ -80,6 +81,9 @@ public class OrderDAO extends IntegrationEntityDAO implements @Autowired private IOrderAuthorizationDAO orderAuthorizationDAO; + @Autowired + private IUserDAO userDAO; + @Autowired private IAdHocTransactionService transactionService; @@ -262,8 +266,14 @@ public class OrderDAO extends IntegrationEntityDAO implements } @Override - public List getOrdersByReadAuthorizationByScenario(User user, + public List getOrdersByReadAuthorizationByScenario(String username, Scenario scenario) { + User user; + try { + user = userDAO.findByLoginName(username); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } return existsInScenario(getOrdersByReadAuthorization(user), scenario); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java index 2e3d03026..85e71d366 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java @@ -213,19 +213,10 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { @Override @Transactional(readOnly = true) public List getOrders() { - - User user; - 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 happenned we return an empty list - return new ArrayList(); - } getLabelsOnConversation().reattachLabels(); List orders = orderDAO.getOrdersByReadAuthorizationByScenario( - user, scenarioManager.getCurrent()); + SecurityUtils.getSessionUserLoginName(), + scenarioManager.getCurrent()); initializeOrders(orders); return orders; 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 6c58fa425..84f04960f 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 @@ -673,18 +673,9 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { private List retainOnlyTopLevel(IPredicate predicate) { List result = new ArrayList(); - User user; - 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 happenned we return an empty list - return result; - } List list = orderDAO.getOrdersByReadAuthorizationByScenario( - user, currentScenario); + SecurityUtils.getSessionUserLoginName(), currentScenario); for (Order order : list) { order.useSchedulingDataFor(currentScenario, false); TaskGroup associatedTaskElement = order.getAssociatedTaskElement(); @@ -708,20 +699,12 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { @Override @Transactional(readOnly = true) 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); + SecurityUtils.getSessionUserLoginName(), currentScenario); Date startDate = null; Date endDate = null; for (Order each : list) { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/CompletedEstimatedHoursPerTaskModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/CompletedEstimatedHoursPerTaskModel.java index ce324a3f5..a49326cce 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/CompletedEstimatedHoursPerTaskModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/CompletedEstimatedHoursPerTaskModel.java @@ -22,6 +22,7 @@ package org.libreplan.web.reports; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Iterator; @@ -47,6 +48,7 @@ import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.resources.entities.CriterionType; import org.libreplan.business.resources.entities.ResourceEnum; import org.libreplan.business.scenarios.IScenarioManager; +import org.libreplan.web.security.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -116,7 +118,12 @@ public class CompletedEstimatedHoursPerTaskModel implements ICompletedEstimatedH @Override @Transactional(readOnly = true) public List getOrders() { - return orderDAO.getOrdersByScenario(scenarioManager.getCurrent()); + List result = orderDAO.getOrdersByReadAuthorizationByScenario( + SecurityUtils.getSessionUserLoginName(), + scenarioManager.getCurrent()); + + Collections.sort(result); + return result; } private void initializeOrderElements(List orderElements) { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/OrderCostsPerResourceModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/OrderCostsPerResourceModel.java index af3848e22..136dabc77 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/OrderCostsPerResourceModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/OrderCostsPerResourceModel.java @@ -58,8 +58,10 @@ import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.resources.entities.CriterionType; import org.libreplan.business.resources.entities.ResourceEnum; import org.libreplan.business.resources.entities.Worker; +import org.libreplan.business.scenarios.IScenarioManager; import org.libreplan.business.workingday.EffortDuration; import org.libreplan.business.workreports.entities.WorkReportLine; +import org.libreplan.web.security.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -90,6 +92,9 @@ public class OrderCostsPerResourceModel implements IOrderCostsPerResourceModel { @Autowired private IConfigurationDAO configurationDAO; + @Autowired + private IScenarioManager scenarioManager; + private List selectedOrders = new ArrayList(); private List