From ade89cad761dcbebb7d4b53b364f0fefa5817142 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Thu, 10 Dec 2009 10:40:11 +0100 Subject: [PATCH] ItEr38S14CUIntroducionPartesTraballoManualmenteItEr37S19 : Refactoring the work reports list using DTOs to sort it. --- .../IWorkReportCRUDControllerEntryPoints.java | 3 + .../web/workreports/IWorkReportModel.java | 3 +- .../workreports/WorkReportCRUDController.java | 13 ++- .../web/workreports/WorkReportDTO.java | 105 ++++++++++++++++++ .../web/workreports/WorkReportModel.java | 13 ++- .../webapp/workreports/_listWorkReport.zul | 24 ++-- 6 files changed, 142 insertions(+), 19 deletions(-) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportDTO.java diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportCRUDControllerEntryPoints.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportCRUDControllerEntryPoints.java index c333fdcd3..8c0e01224 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportCRUDControllerEntryPoints.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportCRUDControllerEntryPoints.java @@ -28,6 +28,9 @@ import org.navalplanner.web.common.entrypoints.EntryPoints; @EntryPoints(page = "/workreports/workReport.zul", registerAs = "workReportCRUD") public interface IWorkReportCRUDControllerEntryPoints { + @EntryPoint("editDTO") + public abstract void goToEditForm(WorkReportDTO workReportDTO); + @EntryPoint("edit") public abstract void goToEditForm(WorkReport workReport); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java index 0c3f38843..8dc0a3221 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/IWorkReportModel.java @@ -104,7 +104,7 @@ public interface IWorkReportModel { * * @return */ - List getWorkReports(); + List getWorkReportDTOs(); /** * Returns true if WorkReport is being edited @@ -196,5 +196,4 @@ public interface IWorkReportModel { * @return */ Integer getLength(DescriptionValue descriptionValue); - } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java index d257eb398..063b70fdb 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportCRUDController.java @@ -135,8 +135,10 @@ public class WorkReportCRUDController extends GenericForwardComposer implements * * @param workReport */ - public void showConfirmDelete(WorkReport workReport) { + public void showConfirmDelete(WorkReportDTO workReportDTO) { + WorkReport workReport = workReportDTO.getWorkReport(); try { + final String workReportName = formatWorkReportName(workReport); int status = Messagebox.show(_("Confirm deleting {0}. Are you sure?", workReportName), "Delete", Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION); @@ -155,8 +157,8 @@ public class WorkReportCRUDController extends GenericForwardComposer implements return workReport.getWorkReportType().getName(); } - public List getWorkReports() { - return workReportModel.getWorkReports(); + public List getWorkReportDTOs() { + return workReportModel.getWorkReportDTOs(); } private OnlyOneVisible getVisibility() { @@ -439,6 +441,11 @@ public class WorkReportCRUDController extends GenericForwardComposer implements Util.reloadBindings(createWindow); } + public void goToEditForm(WorkReportDTO workReportDTO) { + WorkReport workReport = workReportDTO.getWorkReport(); + goToEditForm(workReport); + } + public void goToEditForm(WorkReport workReport) { workReportModel.initEdit(workReport); loadComponents(createWindow); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportDTO.java new file mode 100644 index 000000000..14d9793e8 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportDTO.java @@ -0,0 +1,105 @@ +package org.navalplanner.web.workreports; + +import java.util.Date; + +import org.navalplanner.business.workreports.entities.WorkReport; +import org.navalplanner.business.workreports.entities.WorkReportLine; + +public class WorkReportDTO { + + public WorkReportDTO(WorkReport workReport) { + this.workReport = workReport; + this.dateStart = this.getDateStartWorkReport(workReport); + this.dateFinish = this.getDateFinishWorkReport(workReport); + this.type = workReport.getWorkReportType().getName(); + } + + private WorkReport workReport; + + private Date dateStart; + + private Date dateFinish; + + private String type; + + public WorkReport getWorkReport() { + return workReport; + } + + public void setWorkReport(WorkReport workReport) { + this.workReport = workReport; + } + + public Date getDateStart() { + return dateStart; + } + + public void setDateStart(Date dateStart) { + this.dateStart = dateStart; + } + + public Date getDateFinish() { + return dateFinish; + } + + public void setDateFinish(Date dateFinish) { + this.dateFinish = dateFinish; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Date getDateStartWorkReport(WorkReport workReport) { + if (workReport != null) { + + if (workReport.getWorkReportType().getDateIsSharedByLines()) { + return workReport.getDate(); + } + + // find the start date in its lines + Date dateStart = null; + if (workReport.getWorkReportLines().size() > 0) { + WorkReportLine line0 = (WorkReportLine) workReport + .getWorkReportLines().toArray()[0]; + dateStart = line0.getDate(); + for (WorkReportLine line : workReport.getWorkReportLines()) { + if ((dateStart != null) && (line.getDate() != null) + && (line.getDate().before(dateStart))) { + dateStart = line.getDate(); + } + } + } + return dateStart; + } + return null; + } + + public Date getDateFinishWorkReport(WorkReport workReport) { + if (workReport != null) { + if (workReport.getWorkReportType().getDateIsSharedByLines()) { + return workReport.getDate(); + } + + Date dateFinish = null; + if (workReport.getWorkReportLines().size() > 0) { + WorkReportLine line0 = (WorkReportLine) workReport + .getWorkReportLines().toArray()[0]; + dateFinish = line0.getDate(); + for (WorkReportLine line : workReport.getWorkReportLines()) { + if ((dateFinish != null) && (line.getDate() != null) + && (line.getDate().after(dateFinish))) { + dateFinish = line.getDate(); + } + } + } + return dateFinish; + } + return null; + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java index 18adcb82d..c0c56e36e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportModel.java @@ -247,7 +247,18 @@ public class WorkReportModel implements IWorkReportModel { @Override @Transactional(readOnly = true) - public List getWorkReports() { + public List getWorkReportDTOs() { + // load the work reports + List listWorkReports = getAllWorkReports(); + List resultDTOs = new ArrayList(); + for (WorkReport workReport : listWorkReports) { + WorkReportDTO workReportDTO = new WorkReportDTO(workReport); + resultDTOs.add(workReportDTO); + } + return resultDTOs; + } + + private List getAllWorkReports() { List result = new ArrayList(); for (WorkReport each : workReportDAO.list(WorkReport.class)) { each.getWorkReportType().getName(); diff --git a/navalplanner-webapp/src/main/webapp/workreports/_listWorkReport.zul b/navalplanner-webapp/src/main/webapp/workreports/_listWorkReport.zul index 8e171f123..837c011d4 100644 --- a/navalplanner-webapp/src/main/webapp/workreports/_listWorkReport.zul +++ b/navalplanner-webapp/src/main/webapp/workreports/_listWorkReport.zul @@ -19,21 +19,19 @@ --> - + - - - - - + + + + - -