PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/jira-project/jira-components/jira-core/src/main/java/com/atlassian/jira/web/action/admin/issuetypes/ViewIssueTypes.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 175 lines | 142 code | 33 blank | 0 comment | 2 complexity | 64a37362ca05964f702f4923dfab06ba MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.web.action.admin.issuetypes;
  2. import com.atlassian.event.api.EventPublisher;
  3. import com.atlassian.jira.config.IssueTypeService;
  4. import com.atlassian.jira.config.SubTaskManager;
  5. import com.atlassian.jira.config.properties.APKeys;
  6. import com.atlassian.jira.issue.fields.FieldManager;
  7. import com.atlassian.jira.issue.fields.config.FieldConfigScheme;
  8. import com.atlassian.jira.issue.fields.config.manager.FieldConfigSchemeManager;
  9. import com.atlassian.jira.issue.fields.config.manager.IssueTypeSchemeManager;
  10. import com.atlassian.jira.issue.issuetype.IssueType;
  11. import com.atlassian.jira.security.xsrf.RequiresXsrfCheck;
  12. import com.atlassian.jira.util.lang.Pair;
  13. import com.atlassian.jira.web.action.admin.constants.AbstractViewConstants;
  14. import com.atlassian.jira.web.action.admin.issuetypes.events.IssueTypeCreatedFromViewIssueTypesPageEvent;
  15. import com.atlassian.jira.web.action.admin.translation.TranslationManager;
  16. import com.atlassian.sal.api.websudo.WebSudoRequired;
  17. import com.google.common.collect.ImmutableList;
  18. import org.ofbiz.core.entity.GenericEntityException;
  19. import java.util.Collection;
  20. import java.util.Collections;
  21. import java.util.List;
  22. import static com.atlassian.jira.config.IssueTypeService.IssueTypeCreateInput;
  23. import static com.atlassian.jira.config.IssueTypeService.IssueTypeCreateInput.Type.STANDARD;
  24. import static com.atlassian.jira.config.IssueTypeService.IssueTypeCreateInput.Type.SUBTASK;
  25. @WebSudoRequired
  26. public class ViewIssueTypes extends AbstractViewConstants<IssueType> implements AddIssueTypeAction {
  27. public static final String NEW_ISSUE_TYPE_DEFAULT_ICON = "/images/icons/issuetypes/genericissue.png";
  28. private String style;
  29. private final FieldManager fieldManager;
  30. private final FieldConfigSchemeManager configSchemeManager;
  31. private final IssueTypeSchemeManager issueTypeSchemeManager;
  32. private final IssueTypeManageableOption issueTypeManageableOption;
  33. private final EventPublisher eventPublisher;
  34. private final IssueTypeService issueTypeService;
  35. public ViewIssueTypes(
  36. final FieldManager fieldManager,
  37. final FieldConfigSchemeManager configSchemeManager,
  38. final IssueTypeSchemeManager issueTypeSchemeManager,
  39. final TranslationManager translationManager,
  40. final IssueTypeManageableOption issueTypeManageableOption,
  41. final EventPublisher eventPublisher,
  42. final IssueTypeService issueTypeService) {
  43. super(translationManager);
  44. this.fieldManager = fieldManager;
  45. this.configSchemeManager = configSchemeManager;
  46. this.issueTypeSchemeManager = issueTypeSchemeManager;
  47. this.issueTypeManageableOption = issueTypeManageableOption;
  48. this.eventPublisher = eventPublisher;
  49. this.issueTypeService = issueTypeService;
  50. setIconurl(NEW_ISSUE_TYPE_DEFAULT_ICON);
  51. }
  52. protected String getConstantEntityName() {
  53. return "IssueType";
  54. }
  55. protected String getNiceConstantName() {
  56. return getText("admin.issue.constant.issuetype.lowercase");
  57. }
  58. protected Collection<IssueType> getConstants() {
  59. return ImmutableList.copyOf(issueTypeService.getIssueTypes(getLoggedInUser()));
  60. }
  61. protected void clearCaches() {
  62. getConstantsManager().refreshIssueTypes();
  63. fieldManager.refresh();
  64. }
  65. protected String getIssueConstantField() {
  66. return "type";
  67. }
  68. protected IssueType getConstant(String id) {
  69. return issueTypeService.getIssueType(getLoggedInUser(), id).getOrNull();
  70. }
  71. protected String getRedirectPage() {
  72. return "ViewIssues.jspa";
  73. }
  74. @RequiresXsrfCheck
  75. public String doAddIssueType() throws Exception {
  76. final boolean isSubTask = SubTaskManager.SUB_TASK_ISSUE_TYPE_STYLE.equals(getStyle());
  77. final IssueTypeCreateInput typeInput = IssueTypeCreateInput.builder()
  78. .setDescription(getDescription())
  79. .setName(getName())
  80. .setType(isSubTask ? SUBTASK : STANDARD)
  81. .build();
  82. final IssueTypeService.CreateValidationResult createIssueTypeValidationResult =
  83. issueTypeService.validateCreateIssueType(getLoggedInUser(), typeInput);
  84. if (createIssueTypeValidationResult.isValid()) {
  85. issueTypeService.createIssueType(getLoggedInUser(), createIssueTypeValidationResult);
  86. eventPublisher.publish(new IssueTypeCreatedFromViewIssueTypesPageEvent());
  87. return redirectToView();
  88. } else {
  89. addErrors(createIssueTypeValidationResult.getErrorCollection().getErrors());
  90. return ERROR;
  91. }
  92. }
  93. public String doAddNewIssueType() {
  94. return INPUT;
  95. }
  96. @Override
  97. protected void addConstant() throws GenericEntityException {
  98. throw new UnsupportedOperationException("Use doAddIssueType command instead!");
  99. }
  100. protected String redirectToView() {
  101. return returnCompleteWithInlineRedirect("ViewIssueTypes.jspa");
  102. }
  103. protected String getDefaultPropertyName() {
  104. return APKeys.JIRA_CONSTANT_DEFAULT_ISSUE_TYPE;
  105. }
  106. @Override
  107. public ManageableOptionType getManageableOption() {
  108. return issueTypeManageableOption;
  109. }
  110. @Override
  111. public List<Pair<String, Object>> getHiddenFields() {
  112. return Collections.emptyList();
  113. }
  114. public String getActionType() {
  115. return "view";
  116. }
  117. public Collection getAllRelatedSchemes(String id) {
  118. return issueTypeSchemeManager.getAllRelatedSchemes(id);
  119. }
  120. public List getSchemes() {
  121. return configSchemeManager.getConfigSchemesForField(fieldManager.getIssueTypeField());
  122. }
  123. public FieldConfigScheme getDefaultScheme() {
  124. return issueTypeSchemeManager.getDefaultIssueTypeScheme();
  125. }
  126. @Override
  127. public String getStyle() {
  128. return style;
  129. }
  130. @Override
  131. public void setStyle(String style) {
  132. this.style = style;
  133. }
  134. @Override
  135. public String getSubmitUrl() {
  136. return "AddIssueType.jspa";
  137. }
  138. @Override
  139. public String getCancelUrl() {
  140. return "ViewIssueTypes.jspa";
  141. }
  142. }