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
This commit is contained in:
Manuel Rego Casasnovas 2013-01-30 11:25:33 +01:00
parent 65458cfc9f
commit 851357d760

View file

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