PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/swizzle-jiramacro/src/main/java/org/codehaus/swizzle/jiramacro/SwizzleJiraIssuesMacro.java

https://gitlab.com/mfriedenhagen/swizzle
Java | 167 lines | 120 code | 28 blank | 19 comment | 16 complexity | 211b9e04822658a8565b00942b423c62 MD5 | raw file
  1. /**
  2. *
  3. * Copyright 2006 David Blevins
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.codehaus.swizzle.jiramacro;
  18. import org.codehaus.swizzle.jira.Issue;
  19. import com.atlassian.confluence.renderer.radeox.macros.AbstractHtmlGeneratingMacro;
  20. import com.atlassian.confluence.renderer.radeox.macros.MacroUtils;
  21. import com.atlassian.confluence.util.velocity.VelocityUtils;
  22. import org.radeox.macro.parameter.MacroParameter;
  23. import java.io.IOException;
  24. import java.net.URL;
  25. import java.util.HashMap;
  26. import java.util.Iterator;
  27. import java.util.LinkedHashMap;
  28. import java.util.List;
  29. import java.util.Map;
  30. /**
  31. * @version $Revision$ $Date$
  32. */
  33. public class SwizzleJiraIssuesMacro extends AbstractHtmlGeneratingMacro {
  34. private static final Map<String, String> iconMapping;
  35. static {
  36. iconMapping = new HashMap<String, String>();
  37. iconMapping.put("Bug", "bug.gif");
  38. iconMapping.put("New Feature", "newfeature.gif");
  39. iconMapping.put("Task", "task.gif");
  40. iconMapping.put("Sub-task", "issue_subtask.gif");
  41. iconMapping.put("Improvement", "improvement.gif");
  42. iconMapping.put("Blocker", "priority_blocker.gif");
  43. iconMapping.put("Critical", "priority_critical.gif");
  44. iconMapping.put("Major", "priority_major.gif");
  45. iconMapping.put("Minor", "priority_minor.gif");
  46. iconMapping.put("Trivial", "priority_trivial.gif");
  47. iconMapping.put("Assigned", "status_assigned.gif");
  48. iconMapping.put("Closed", "status_closed.gif");
  49. iconMapping.put("In Progress", "status_inprogress.gif");
  50. iconMapping.put("Need Info", "status_needinfo.gif");
  51. iconMapping.put("Open", "status_open.gif");
  52. iconMapping.put("Reopened", "status_reopened.gif");
  53. iconMapping.put("Resolved", "status_resolved.gif");
  54. iconMapping.put("Unassigned", "status_unassigned.gif");
  55. }
  56. private final Map columnsMap;
  57. public SwizzleJiraIssuesMacro() {
  58. columnsMap = new LinkedHashMap();
  59. columnsMap.put("type", "T");
  60. columnsMap.put("key", "Key");
  61. columnsMap.put("summary", "Summary");
  62. columnsMap.put("assignee", "Assignee");
  63. columnsMap.put("reporter", "Reporter");
  64. columnsMap.put("priority", "Pr");
  65. columnsMap.put("status", "Status");
  66. columnsMap.put("resolution", "Res");
  67. columnsMap.put("created", "Created");
  68. columnsMap.put("updated", "Updated");
  69. columnsMap.put("due", "Due");
  70. columnsMap.put("votes", "Votes");
  71. }
  72. public String getHtml(MacroParameter macroParameter) throws IllegalArgumentException, IOException {
  73. String issuesRef = (String) macroParameter.getParams().get("issues");
  74. String columnsString = (String) macroParameter.getParams().get("columns");
  75. String title = (String) macroParameter.getParams().get("title");
  76. String style = (String) macroParameter.getParams().get("style") + "";
  77. String template = "swizzlejiraissues.vm";
  78. if (style.equals("progress")) {
  79. template = "swizzlejiraissues-progress.vm";
  80. }
  81. List issues = IssuesUtil.getIssues(issuesRef);
  82. if (issues == null) {
  83. return "No issues specified. Usage {swizzlejiraissues:issues=$as.param($issues)}";
  84. }
  85. String iconsUrl = null;
  86. if (issues.size() > 0) {
  87. Issue issue = (Issue) issues.get(0);
  88. String link = issue.getLink();
  89. iconsUrl = link.replaceFirst("/browse/.*$", "/images/icons/");
  90. if (title == null) {
  91. URL url = new URL(issue.getLink());
  92. title = url.getHost();
  93. }
  94. }
  95. if (title == null) {
  96. title = "issues";
  97. }
  98. Map columns = new LinkedHashMap();
  99. if (columnsString != null && columnsString.length() > 0) {
  100. String[] columnNames = columnsString.split(" *; *");
  101. for (int i = 0; i < columnNames.length; i++) {
  102. String columnName = columnNames[i];
  103. if (columnsMap.containsKey(columnName)) {
  104. columns.put(columnName, columnsMap.get(columnName.toLowerCase()));
  105. }
  106. }
  107. } else {
  108. columns = columnsMap;
  109. }
  110. Map context = MacroUtils.defaultVelocityContext();
  111. for (Iterator iterator = columns.entrySet().iterator(); iterator.hasNext();) {
  112. Map.Entry entry = (Map.Entry) iterator.next();
  113. Object key = entry.getKey();
  114. Object value = entry.getValue();
  115. System.out.println("columns entry: " + key + "=" + value);
  116. }
  117. context.put("columns", columns);
  118. context.put("issues", issues);
  119. context.put("clickableUrl", "");
  120. context.put("title", title);
  121. context.put("icons", prepareIconMap(iconsUrl));
  122. return VelocityUtils.getRenderedTemplate("swizzle/jira/templates/" + template, context);
  123. }
  124. private Map prepareIconMap(String iconsUrl) {
  125. Map map = new HashMap();
  126. Map<String,String> iconMappings = new HashMap<String, String>(iconMapping);
  127. for (Map.Entry<String, String> entry : iconMappings.entrySet()) {
  128. String key = entry.getKey();
  129. String icon = entry.getValue();
  130. icon = (icon.matches("https?://.*")) ? icon : iconsUrl + icon;
  131. map.put(key, icon);
  132. }
  133. map.put("spacer", iconsUrl.replace("images/icons/", "images/border/spacer.gif"));
  134. return map;
  135. }
  136. public String getName() {
  137. return "swizzlejiraissues";
  138. }
  139. }