From 0c71ad7465e365c2d70f95acf11b8573d5faf103 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Thu, 15 Jul 2010 14:53:15 +0200 Subject: [PATCH] ItEr60S15AnA04S11RFAdaptacionFiltradosInformes : filters by resources and shows correct messages first and second correction: Change the interface for the selection of resources and shows correct messages. --- ...TO.java => HoursWorkedPerResourceDTO.java} | 10 +- .../business/resources/daos/IResourceDAO.java | 10 + .../business/resources/daos/IWorkerDAO.java | 6 - .../business/resources/daos/ResourceDAO.java | 46 +++++ .../business/resources/daos/WorkerDAO.java | 45 ----- .../jasper/hoursWorkedPerWorkerReport.jrxml | 17 ++ .../hoursWorkedPerWorker_en_US.properties | 1 + .../hoursWorkedPerWorker_es_ES.properties | 1 + .../hoursWorkedPerWorker_gl_ES.properties | 1 + .../HoursWorkedPerWorkerController.java | 171 ++++++++++++++++-- .../reports/HoursWorkedPerWorkerModel.java | 60 ++++-- .../reports/IHoursWorkedPerWorkerModel.java | 15 +- .../reports/hoursWorkedPerWorkerReport.zul | 53 ++++-- 13 files changed, 340 insertions(+), 96 deletions(-) rename navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/{HoursWorkedPerWorkerDTO.java => HoursWorkedPerResourceDTO.java} (95%) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/HoursWorkedPerWorkerDTO.java b/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/HoursWorkedPerResourceDTO.java similarity index 95% rename from navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/HoursWorkedPerWorkerDTO.java rename to navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/HoursWorkedPerResourceDTO.java index 95ff4f225..67db66025 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/HoursWorkedPerWorkerDTO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/reports/dtos/HoursWorkedPerResourceDTO.java @@ -25,11 +25,11 @@ import java.util.Set; import org.joda.time.LocalTime; import org.navalplanner.business.labels.entities.Label; -import org.navalplanner.business.resources.entities.Worker; +import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.workreports.entities.WorkReportLine; import org.navalplanner.business.workreports.valueobjects.DescriptionValue; -public class HoursWorkedPerWorkerDTO { +public class HoursWorkedPerResourceDTO { private String workerName; @@ -47,11 +47,11 @@ public class HoursWorkedPerWorkerDTO { private String labels; - public HoursWorkedPerWorkerDTO( - Worker worker, + public HoursWorkedPerResourceDTO( +Resource resource, WorkReportLine workReportLine) { - this.workerName = worker.getName(); + this.workerName = resource.getName(); this.date = workReportLine.getDate(); this.clockStart = workReportLine.getClockStart(); this.clockFinish = workReportLine.getClockFinish(); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IResourceDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IResourceDAO.java index eb4103828..fcdda6327 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IResourceDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IResourceDAO.java @@ -21,10 +21,12 @@ package org.navalplanner.business.resources.daos; import java.util.Collection; +import java.util.Date; import java.util.List; import org.navalplanner.business.common.daos.IIntegrationEntityDAO; import org.navalplanner.business.planner.entities.Task; +import org.navalplanner.business.reports.dtos.HoursWorkedPerResourceDTO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.Machine; import org.navalplanner.business.resources.entities.Resource; @@ -122,4 +124,12 @@ public interface IResourceDAO extends IIntegrationEntityDAO { */ List getAllNonLimitingResources(); + /** + * Returns all {@link HoursWorkedPerResourceDTO} per {@link Resource} between + * the specified dates. + * @return + */ + public List getWorkingHoursPerWorker( + List resources, Date startingDate, Date endingDate); + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDAO.java index 1a9673205..e45233089 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IWorkerDAO.java @@ -25,7 +25,6 @@ import java.util.List; import org.navalplanner.business.common.daos.IIntegrationEntityDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; -import org.navalplanner.business.reports.dtos.HoursWorkedPerWorkerDTO; import org.navalplanner.business.resources.entities.Worker; import org.springframework.transaction.annotation.Transactional; @@ -76,11 +75,6 @@ public interface IWorkerDAO extends IIntegrationEntityDAO { @Transactional(readOnly = true) List getWorkers(); - /** - * - */ - List getWorkingHoursPerWorker(List workers, Date startingDate, Date endingDate); - /** * Return list of workers with a particular firstName * @param name diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ResourceDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ResourceDAO.java index bc825cbb4..e4cbe3707 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ResourceDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ResourceDAO.java @@ -22,6 +22,7 @@ package org.navalplanner.business.resources.daos; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; @@ -32,6 +33,7 @@ import org.hibernate.Query; import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.IntegrationEntityDAO; import org.navalplanner.business.planner.entities.Task; +import org.navalplanner.business.reports.dtos.HoursWorkedPerResourceDTO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.LimitingResourceQueue; import org.navalplanner.business.resources.entities.Machine; @@ -217,4 +219,48 @@ public class ResourceDAO extends IntegrationEntityDAO implements super.save(resource); } + @Override + @Transactional(readOnly = true) + public List getWorkingHoursPerWorker( + List resources, Date startingDate, Date endingDate) { + String strQuery = "SELECT new org.navalplanner.business.reports.dtos.HoursWorkedPerResourceDTO(resource, wrl) " + + "FROM Resource resource, WorkReportLine wrl " + + "LEFT OUTER JOIN wrl.resource wrlresource " + + "WHERE wrlresource.id = resource.id "; + + // Set date range + if (startingDate != null && endingDate != null) { + strQuery += "AND wrl.date BETWEEN :startingDate AND :endingDate "; + } + if (startingDate != null && endingDate == null) { + strQuery += "AND wrl.date >= :startingDate "; + } + if (startingDate == null && endingDate != null) { + strQuery += "AND wrl.date <= :endingDate "; + } + + // Set workers + if (resources != null && !resources.isEmpty()) { + strQuery += "AND resource IN (:resources) "; + } + + // Order by + strQuery += "ORDER BY resource.id, wrl.date"; + + // Set parameters + Query query = getSession().createQuery(strQuery); + if (startingDate != null) { + query.setParameter("startingDate", startingDate); + } + if (endingDate != null) { + query.setParameter("endingDate", endingDate); + } + if (resources != null && !resources.isEmpty()) { + query.setParameterList("resources", resources); + } + + // Get result + return query.list(); + } + } \ No newline at end of file diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/WorkerDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/WorkerDAO.java index 2da9f4f81..1fe23ecce 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/WorkerDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/WorkerDAO.java @@ -28,7 +28,6 @@ import org.hibernate.Query; import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.IntegrationEntityDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; -import org.navalplanner.business.reports.dtos.HoursWorkedPerWorkerDTO; import org.navalplanner.business.resources.entities.Worker; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -144,50 +143,6 @@ public class WorkerDAO extends IntegrationEntityDAO return findByFirstNameSecondName(firstname, secondname); } - @Override - @Transactional(readOnly = true) - public List getWorkingHoursPerWorker(List workers, Date startingDate, Date endingDate) { - String strQuery = - "SELECT new org.navalplanner.business.reports.dtos.HoursWorkedPerWorkerDTO(worker, wrl) " + - "FROM Worker worker, WorkReportLine wrl " + - "LEFT OUTER JOIN wrl.resource resource " + - "WHERE resource.id = worker.id "; - - // Set date range - if (startingDate != null && endingDate != null) { - strQuery += "AND wrl.date BETWEEN :startingDate AND :endingDate "; - } - if (startingDate != null && endingDate == null) { - strQuery += "AND wrl.date >= :startingDate "; - } - if (startingDate == null && endingDate != null) { - strQuery += "AND wrl.date <= :endingDate "; - } - - // Set workers - if (workers != null && !workers.isEmpty()) { - strQuery += "AND worker IN (:workers) "; - } - - // Order by - strQuery += "ORDER BY worker.id, wrl.date"; - - // Set parameters - Query query = getSession().createQuery(strQuery); - if (startingDate != null) { - query.setParameter("startingDate", startingDate); - } - if (endingDate != null) { - query.setParameter("endingDate", endingDate); - } - if (workers != null && !workers.isEmpty()) { - query.setParameterList("workers", workers); - } - - // Get result - return query.list(); - } - @Override @Transactional(readOnly = true) public List getWorkingHoursGroupedPerWorker( diff --git a/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml b/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml index 2337dec38..c3d22b0c8 100644 --- a/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml +++ b/navalplanner-webapp/src/main/jasper/hoursWorkedPerWorkerReport.jrxml @@ -6,6 +6,7 @@