From 851357d760ce5970b61b925bbe811415d4b4774f Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 30 Jan 2013 11:25:33 +0100 Subject: [PATCH] jira-integration: Several refactorizations in JiraTimesheetSynchronizer * Extract save part to a separated method as syncJiraTimesheetWithJiraIssues doesn't deal with workReportModel and it could cause misunderstandings. * Move some parts just needed for newly created objects inside the ifs. * Use properly EffortDuration to create a new one from seconds. * Avoid find in another transaction as transaction is already opened. FEA: ItEr77S16JiraAndTimConnectorContributionIntegration --- .../importers/JiraTimesheetSynchronizer.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/JiraTimesheetSynchronizer.java b/libreplan-webapp/src/main/java/org/libreplan/importers/JiraTimesheetSynchronizer.java index 12f46756e..566f186fd 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/importers/JiraTimesheetSynchronizer.java +++ b/libreplan-webapp/src/main/java/org/libreplan/importers/JiraTimesheetSynchronizer.java @@ -143,6 +143,10 @@ public class JiraTimesheetSynchronizer implements IJiraTimesheetSynchronizer { } } + saveWorkReportIfNotEmpty(); + } + + private void saveWorkReportIfNotEmpty() { if (workReportModel.getWorkReport().getWorkReportLines().size() > 0) { workReportModel.confirmSave(); } @@ -159,13 +163,13 @@ public class JiraTimesheetSynchronizer implements IJiraTimesheetSynchronizer { WorkReport workReport = findWorkReport(code); if (workReport == null) { workReportModel.initCreate(workReportType); + workReport = workReportModel.getWorkReport(); + workReport.setCode(code); } else { workReportModel.initEdit(workReport); } workReportModel.setCodeAutogenerated(false); - workReport = workReportModel.getWorkReport(); - workReport.setCode(code); return workReport; } @@ -192,16 +196,13 @@ public class JiraTimesheetSynchronizer implements IJiraTimesheetSynchronizer { + workLogItem.getId()); } catch (InstanceNotFoundException e) { workReportLine = WorkReportLine.create(workReport); + workReport.addWorkReportLine(workReportLine); } Resource resource = getWorker(workLogItem.getAuthor().getName()); if (resource != null) { - updateWorkReportLine(workReportLine, orderElement, workLogItem, resource); - if (workReportLine.isNewObject()) { - workReport.addWorkReportLine(workReportLine); - } } } @@ -230,9 +231,7 @@ public class JiraTimesheetSynchronizer implements IJiraTimesheetSynchronizer { workReportLine.setDate(workLogItem.getStarted()); workReportLine.setResource(resource); workReportLine.setOrderElement(orderElement); - workReportLine.setEffort(EffortDuration - .hours(EffortDuration.Granularity.HOURS - .convertFromSeconds(timeSpent))); + workReportLine.setEffort(EffortDuration.seconds(timeSpent)); workReportLine.setTypeOfWorkHours(typeOfWorkHours); updateOrCreateDescriptionValuesAndAddToWorkReportLine(workReportLine, @@ -309,7 +308,7 @@ public class JiraTimesheetSynchronizer implements IJiraTimesheetSynchronizer { */ private WorkReport findWorkReport(String code) { try { - return workReportDAO.findByCodeAnotherTransaction(code); + return workReportDAO.findByCode(code); } catch (InstanceNotFoundException e) { } return null;