ItEr38S14CUIntroducionPartesTraballoManualmenteItEr37S19 : Refactoring the work reports list using DTOs to sort it.

This commit is contained in:
Susana Montes Pedreira 2009-12-10 10:40:11 +01:00 committed by Javier Moran Rua
parent 32e2b77462
commit ade89cad76
6 changed files with 142 additions and 19 deletions

View file

@ -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);

View file

@ -104,7 +104,7 @@ public interface IWorkReportModel {
*
* @return
*/
List<WorkReport> getWorkReports();
List<WorkReportDTO> getWorkReportDTOs();
/**
* Returns true if WorkReport is being edited
@ -196,5 +196,4 @@ public interface IWorkReportModel {
* @return
*/
Integer getLength(DescriptionValue descriptionValue);
}

View file

@ -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<WorkReport> getWorkReports() {
return workReportModel.getWorkReports();
public List<WorkReportDTO> 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);

View file

@ -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;
}
}

View file

@ -247,7 +247,18 @@ public class WorkReportModel implements IWorkReportModel {
@Override
@Transactional(readOnly = true)
public List<WorkReport> getWorkReports() {
public List<WorkReportDTO> getWorkReportDTOs() {
// load the work reports
List<WorkReport> listWorkReports = getAllWorkReports();
List<WorkReportDTO> resultDTOs = new ArrayList<WorkReportDTO>();
for (WorkReport workReport : listWorkReports) {
WorkReportDTO workReportDTO = new WorkReportDTO(workReport);
resultDTOs.add(workReportDTO);
}
return resultDTOs;
}
private List<WorkReport> getAllWorkReports() {
List<WorkReport> result = new ArrayList<WorkReport>();
for (WorkReport each : workReportDAO.list(WorkReport.class)) {
each.getWorkReportType().getName();

View file

@ -19,21 +19,19 @@
-->
<window id="${arg.top_id}" title="${i18n:_('Work report listing')}">
<newdatasortablegrid id="listing" model="@{controller.workReports}" mold="paging"
pageSize="10">
<grid id="listing" mold="paging" pageSize="10"
model="@{controller.workReportDTOs}">
<columns sizable="true">
<newdatasortablecolumn label="${i18n:_('Date')}" sort="auto(date)" />
<newdatasortablecolumn label="${i18n:_('Resource')}" sort="auto(resource)" />
<newdatasortablecolumn label="${i18n:_('Order code')}" sort="auto(orderElement)" />
<newdatasortablecolumn label="${i18n:_('Type')}" sort="auto(workReportType.name)"/>
<newdatasortablecolumn label="${i18n:_('Actions')}" />
<column label="${i18n:_('Date Start')}" sort="auto(dateStart)"/>
<column label="${i18n:_('Date Finish')}" sort="auto(dateFinish)"/>
<column label="${i18n:_('Type')}" sort="auto(type)"/>
<column label="${i18n:_('Actions')}" />
</columns>
<rows>
<row self="@{each='workReport'}" value="@{workReport}">
<label value="@{workReport.date, converter='org.navalplanner.web.common.typeconverters.DateConverter'}" />
<label value="@{workReport.resource.description}" />
<label value="@{workReport.orderElement.name}" />
<label value="@{workReport.workReportType.name}" />
<row self="@{each='workReportDTO'}" value="@{workReportDTO}">
<label value="@{workReportDTO.dateStart, converter='org.navalplanner.web.common.typeconverters.DateConverter'}" />
<label value="@{workReportDTO.dateFinish, converter='org.navalplanner.web.common.typeconverters.DateConverter'}"/>
<label value="@{workReportDTO.type}" />
<hbox>
<button sclass="icono" image="/common/img/ico_editar1.png"
@ -50,5 +48,5 @@
</hbox>
</row>
</rows>
</newdatasortablegrid>
</grid>
</window>