From f4c6684cae667627ebd38e85b7f4a68f61b36f36 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Tue, 3 Jul 2012 13:21:02 +0200 Subject: [PATCH] Bug #1474: Fix issue adding a new option Any to the report filers FEA: ItEr76S04BugFixing --- .../reports/dtos/LabelFilterType.java | 3 ++- .../business/resources/daos/ResourceDAO.java | 19 +++++++++++++++---- .../HoursWorkedPerWorkerController.java | 16 +++++++++++----- .../reports/hoursWorkedPerWorkerReport.zul | 3 ++- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/LabelFilterType.java b/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/LabelFilterType.java index cc52e45d1..2b1b4ce32 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/LabelFilterType.java +++ b/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/LabelFilterType.java @@ -2,6 +2,7 @@ * This file is part of LibrePlan * * Copyright (C) 2011 - ComtecSF, S.L. + * Copyright (C) 2012 - Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -30,5 +31,5 @@ import org.libreplan.business.workreports.entities.WorkReport; * */ public enum LabelFilterType { - WORK_REPORT, ORDER_ELEMENT, BOTH; + WORK_REPORT, ORDER_ELEMENT, BOTH, ANY; } \ No newline at end of file diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java index a12afba84..c4e155095 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -161,17 +161,28 @@ public class ResourceDAO extends IntegrationEntityDAO implements // Set labels if (labels != null && !labels.isEmpty()) { - if (labelFilterType.equals(LabelFilterType.ORDER_ELEMENT)) { + switch (labelFilterType) { + case ORDER_ELEMENT: strQuery += " AND ( EXISTS (FROM wrl.orderElement.labels as etq WHERE etq IN (:labels)) " + "OR EXISTS (FROM wrl.workReport.orderElement.labels as etqwr WHERE etqwr IN (:labels)) ) "; - } else if (labelFilterType.equals(LabelFilterType.WORK_REPORT)) { + break; + case WORK_REPORT: strQuery += " AND ( EXISTS (FROM wrl.labels as etq WHERE etq IN (:labels)) " + "OR EXISTS (FROM wrl.workReport.labels as etqwr WHERE etqwr IN (:labels)) ) "; - } else { + break; + case BOTH: strQuery += " AND ( EXISTS (FROM wrl.labels as etq WHERE etq IN (:labels)) " + "OR EXISTS (FROM wrl.workReport.labels as etqwr WHERE etqwr IN (:labels)) ) " + "AND ( EXISTS (FROM wrl.orderElement.labels as etq WHERE etq IN (:labels)) " + "OR EXISTS (FROM wrl.workReport.orderElement.labels as etqwr WHERE etqwr IN (:labels)) ) "; + break; + case ANY: + default: + strQuery += " AND ( ( EXISTS (FROM wrl.labels as etq WHERE etq IN (:labels)) " + + "OR EXISTS (FROM wrl.workReport.labels as etqwr WHERE etqwr IN (:labels)) ) " + + "OR ( EXISTS (FROM wrl.orderElement.labels as etq WHERE etq IN (:labels)) " + + "OR EXISTS (FROM wrl.workReport.orderElement.labels as etqwr WHERE etqwr IN (:labels)) ) ) "; + break; } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/HoursWorkedPerWorkerController.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/HoursWorkedPerWorkerController.java index ada7f0a92..e3b126e9d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/HoursWorkedPerWorkerController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/HoursWorkedPerWorkerController.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -25,7 +25,6 @@ import static org.libreplan.web.I18nHelper._; import java.util.ArrayList; import java.util.Calendar; -import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; @@ -88,6 +87,8 @@ public class HoursWorkedPerWorkerController extends LibrePlanReportController { private Radio filterByOrderElements; + private Radio filterByBoth; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); @@ -114,11 +115,16 @@ public class HoursWorkedPerWorkerController extends LibrePlanReportController { } private LabelFilterType getSelectedFilterLabels() { - if (filterByWorkReports.isChecked()) + if (filterByWorkReports.isChecked()) { return LabelFilterType.WORK_REPORT; - if (filterByOrderElements.isChecked()) + } + if (filterByOrderElements.isChecked()) { return LabelFilterType.ORDER_ELEMENT; - return LabelFilterType.BOTH; + } + if (filterByBoth.isChecked()) { + return LabelFilterType.BOTH; + } + return LabelFilterType.ANY; } private List getSelectedResources() { diff --git a/libreplan-webapp/src/main/webapp/reports/hoursWorkedPerWorkerReport.zul b/libreplan-webapp/src/main/webapp/reports/hoursWorkedPerWorkerReport.zul index cf1a9c9eb..82d894644 100644 --- a/libreplan-webapp/src/main/webapp/reports/hoursWorkedPerWorkerReport.zul +++ b/libreplan-webapp/src/main/webapp/reports/hoursWorkedPerWorkerReport.zul @@ -113,7 +113,8 @@