diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java index e4166d3ed..415fc16a6 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/IProjectStatusReportModel.java @@ -63,4 +63,6 @@ public interface IProjectStatusReportModel { Set getSelectedCriteria(); + boolean isNotFiltering(); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java index db4485a2c..66a712c72 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportController.java @@ -33,6 +33,9 @@ import org.libreplan.business.labels.entities.Label; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.reports.dtos.ProjectStatusReportDTO; import org.libreplan.business.resources.entities.Criterion; +import org.libreplan.web.common.IMessagesForUser; +import org.libreplan.web.common.Level; +import org.libreplan.web.common.MessagesForUser; import org.libreplan.web.common.Util; import org.libreplan.web.common.components.bandboxsearch.BandboxSearch; import org.zkoss.zk.ui.Component; @@ -63,10 +66,16 @@ public class ProjectStatusReportController extends LibrePlanReportController { private Listbox listboxCriteria; + private IMessagesForUser messagesForUser; + + private Component messagesContainer; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); comp.setAttribute("controller", this); + + messagesForUser = new MessagesForUser(messagesContainer); } @Override @@ -85,14 +94,18 @@ public class ProjectStatusReportController extends LibrePlanReportController { return new JRBeanCollectionDataSource(dtos); } + @Override public void showReport(JasperreportComponent jasperreport) { final Order order = getSelectedOrder(); - if (order == null) { - throw new WrongValueException(bandboxSelectOrder, - _("Please, select a project")); + if (order == null && projectStatusReportModel.isNotFiltering()) { + messagesForUser + .showMessage( + Level.ERROR, + _("You should filter the report by project, labels or criteria")); + } else { + super.showReport(jasperreport); } - super.showReport(jasperreport); } private Order getSelectedOrder() { @@ -108,7 +121,10 @@ public class ProjectStatusReportController extends LibrePlanReportController { Map result = super.getParameters(); Order order = getSelectedOrder(); - result.put("project", order.getName() + " (" + order.getCode() + ")"); + if (order != null) { + result.put("project", order.getName() + " (" + order.getCode() + + ")"); + } ProjectStatusReportDTO totalDTO = projectStatusReportModel .getTotalDTO(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java index 9e7b816c3..17e1bca71 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/ProjectStatusReportModel.java @@ -29,6 +29,7 @@ import java.util.Set; import org.libreplan.business.labels.daos.ILabelDAO; import org.libreplan.business.labels.entities.Label; import org.libreplan.business.orders.daos.IOrderDAO; +import org.libreplan.business.orders.daos.IOrderElementDAO; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.OrderElement; import org.libreplan.business.planner.entities.IMoneyCostCalculator; @@ -64,6 +65,9 @@ public class ProjectStatusReportModel implements IProjectStatusReportModel { @Autowired private ICriterionDAO criterionDAO; + @Autowired + private IOrderElementDAO orderElementDAO; + @Autowired private IScenarioManager scenarioManager; @@ -90,16 +94,23 @@ public class ProjectStatusReportModel implements IProjectStatusReportModel { @Override @Transactional(readOnly = true) public List getProjectStatusReportDTOs(Order order) { - orderDAO.reattach(order); + List orderElements; + if (order != null) { + orderDAO.reattach(order); + order.useSchedulingDataFor(scenarioManager.getCurrent()); + orderElements = order.getAllChildren(); + } else { + orderElements = new ArrayList(); + for (Order each : orderDAO.findAll()) { + each.useSchedulingDataFor(scenarioManager.getCurrent()); + orderElements.addAll(each.getAllChildren()); + } + } - order.useSchedulingDataFor(scenarioManager.getCurrent()); - - List dtos = new ArrayList(); - - List orderElements = order.getAllChildren(); orderElements = filterBySelectedLabels(orderElements); orderElements = filterBySelectedCriteria(orderElements); + List dtos = new ArrayList(); for (OrderElement child : orderElements) { dtos.add(calculateDTO(child)); } @@ -222,7 +233,8 @@ public class ProjectStatusReportModel implements IProjectStatusReportModel { } } - private boolean isNotFiltering() { + @Override + public boolean isNotFiltering() { return isNotFilteringByLabels() && isNotFilteringByCriteria(); } diff --git a/libreplan-webapp/src/main/webapp/reports/projectStatusReport.zul b/libreplan-webapp/src/main/webapp/reports/projectStatusReport.zul index 19a3f205a..16ac780e3 100644 --- a/libreplan-webapp/src/main/webapp/reports/projectStatusReport.zul +++ b/libreplan-webapp/src/main/webapp/reports/projectStatusReport.zul @@ -36,6 +36,8 @@ title="${i18n:_('Project Status Report')}" border="normal" > + +