From 52a0e8907195a5919116ea598edb349ea6608d94 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 30 Jan 2013 17:13:33 +0100 Subject: [PATCH] jira-integration: Add predefined WorkReportType for JIRA connector * The predefined type will have a line description value to store comments in each line. * As for the case of personal timesheets the new type will be hidden for the users in the list of timesheets templates. FEA: ItEr77S16JiraAndTimConnectorContributionIntegration --- .../entities/PredefinedWorkReportTypes.java | 15 ++++++++++++++- .../workreports/entities/WorkReportType.java | 7 +++++++ .../entities/WorkReportTypeBootstrap.java | 13 +++++++++++++ .../web/workreports/IWorkReportTypeModel.java | 2 +- .../workreports/WorkReportTypeCRUDController.java | 2 +- .../web/workreports/WorkReportTypeModel.java | 13 ++++++++++++- 6 files changed, 48 insertions(+), 4 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/PredefinedWorkReportTypes.java b/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/PredefinedWorkReportTypes.java index f6d243cab..16c78b57a 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/PredefinedWorkReportTypes.java +++ b/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/PredefinedWorkReportTypes.java @@ -19,6 +19,8 @@ */ package org.libreplan.business.workreports.entities; +import org.libreplan.business.workreports.valueobjects.DescriptionField; + /** * Defines the default {@link WorkReportType WorkReportTypes}. * @@ -27,7 +29,9 @@ package org.libreplan.business.workreports.entities; */ public enum PredefinedWorkReportTypes { DEFAULT("Default", false, false, false), - PERSONAL_TIMESHEETS("Personal timesheets", false, true, false); + PERSONAL_TIMESHEETS("Personal timesheets", false, true, false), + JIRA_TIMESHEETS("JIRA timesheets", false, false, false, + DescriptionField.create("Comment", 255)); private WorkReportType workReportType; @@ -41,6 +45,15 @@ public enum PredefinedWorkReportTypes { .setOrderElementIsSharedInLines(orderElementIsSharedInLines); } + private PredefinedWorkReportTypes(String name, boolean dateIsSharedByLines, + boolean resourceIsSharedInLines, + boolean orderElementIsSharedInLines, + DescriptionField lineDescriptionField) { + this(name, dateIsSharedByLines, resourceIsSharedInLines, + orderElementIsSharedInLines); + workReportType.addDescriptionFieldToEndLine(lineDescriptionField); + } + public WorkReportType getWorkReportType() { return workReportType; } diff --git a/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportType.java b/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportType.java index f644dd7b5..38c7741f9 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportType.java +++ b/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportType.java @@ -532,4 +532,11 @@ public class WorkReportType extends IntegrationEntity implements IHumanIdentifia .getName()); } + public boolean isJiraTimesheetsType() { + if (StringUtils.isBlank(name)) { + return false; + } + return name.equals(PredefinedWorkReportTypes.JIRA_TIMESHEETS.getName()); + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportTypeBootstrap.java b/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportTypeBootstrap.java index a6bee16dd..d5bbfc4ab 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportTypeBootstrap.java +++ b/libreplan-business/src/main/java/org/libreplan/business/workreports/entities/WorkReportTypeBootstrap.java @@ -60,6 +60,7 @@ public class WorkReportTypeBootstrap implements IWorkReportTypeBootstrap { } } else { createPersonalTimesheetsWorkReportTypeIfNeeded(); + createJiraTimesheetsWorkReportTypeIfNeeded(); } } @@ -86,4 +87,16 @@ public class WorkReportTypeBootstrap implements IWorkReportTypeBootstrap { } } + private void createJiraTimesheetsWorkReportTypeIfNeeded() { + try { + workReportTypeDAO + .findUniqueByName(PredefinedWorkReportTypes.JIRA_TIMESHEETS + .getName()); + } catch (NonUniqueResultException e) { + throw new RuntimeException(e); + } catch (InstanceNotFoundException e) { + createAndSaveWorkReportType(PredefinedWorkReportTypes.JIRA_TIMESHEETS); + } + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/IWorkReportTypeModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/IWorkReportTypeModel.java index 7df4f44a2..9af6b736a 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/IWorkReportTypeModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/IWorkReportTypeModel.java @@ -56,7 +56,7 @@ public interface IWorkReportTypeModel extends IIntegrationEntityModel { * * @return A {@link List} of {@link WorkReportType} */ - List getWorkReportTypesExceptPersonalTimeSheets(); + List getWorkReportTypesExceptPersonalAndJiraTimesheets(); /** * Stores the current {@link WorkReportType}. diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeCRUDController.java index d4aba980b..c2cddb529 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeCRUDController.java @@ -116,7 +116,7 @@ public class WorkReportTypeCRUDController extends BaseCRUDController getWorkReportTypes() { - return workReportTypeModel.getWorkReportTypesExceptPersonalTimeSheets(); + return workReportTypeModel.getWorkReportTypesExceptPersonalAndJiraTimesheets(); } public WorkReportType getWorkReportType() { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeModel.java index 7a242fa73..e39981e5a 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportTypeModel.java @@ -118,12 +118,15 @@ public class WorkReportTypeModel extends IntegrationEntityModel implements @Override @Transactional(readOnly = true) - public List getWorkReportTypesExceptPersonalTimeSheets() { + public List getWorkReportTypesExceptPersonalAndJiraTimesheets() { List list = workReportTypeDAO.list(WorkReportType.class); try { list.remove(workReportTypeDAO .findUniqueByName(PredefinedWorkReportTypes.PERSONAL_TIMESHEETS .getName())); + list.remove(workReportTypeDAO + .findUniqueByName(PredefinedWorkReportTypes.JIRA_TIMESHEETS + .getName())); } catch (NonUniqueResultException e) { throw new RuntimeException(e); } catch (InstanceNotFoundException e) { @@ -155,6 +158,10 @@ public class WorkReportTypeModel extends IntegrationEntityModel implements throw new IllegalArgumentException( "Personal timesheets timesheet template cannot be edited"); } + if (workReportType.isJiraTimesheetsType()) { + throw new IllegalArgumentException( + "Personal timesheets timesheet template cannot be edited"); + } setListing(false); editing = true; @@ -224,6 +231,10 @@ public class WorkReportTypeModel extends IntegrationEntityModel implements throw new IllegalArgumentException( "Personal timesheets timesheet template cannot be removed"); } + if (workReportType.isJiraTimesheetsType()) { + throw new IllegalArgumentException( + "Personal timesheets timesheet template cannot be removed"); + } try { workReportTypeDAO.remove(workReportType.getId());