1 package com.atlassian.jira.export;
2
3 import java.util.Iterator;
4 import java.util.List;
5
6 import org.apache.log4j.Category;
7 import org.apache.log4j.Logger;
8
9 import com.atlassian.jira.ComponentManager;
10 import com.atlassian.jira.issue.CustomFieldManager;
11 import com.atlassian.jira.issue.Issue;
12 import com.atlassian.jira.issue.fields.FieldManager;
13 import com.atlassian.jira.issue.fields.layout.column.ColumnLayoutItem;
14 import com.atlassian.jira.issue.fields.layout.column.ColumnLayoutManager;
15 import com.atlassian.jira.issue.fields.layout.column.EditableColumnLayout;
16 import com.atlassian.jira.issue.search.SearchRequest;
17 import com.atlassian.jira.plugin.report.DefaultIssueBeanHelper;
18 import com.atlassian.jira.web.util.OutlookDateManager;
19 import com.atlassian.jira.workflow.transition.AutoTransitionManager;
20 import com.opensymphony.user.User;
21
22
23
24
25
26
27
28
29 public class RequestHTMLExportManager extends AIssueExportManager {
30
31 private static final Category log = Logger.getInstance(RequestHTMLExportManager.class);
32
33 protected DefaultIssueBeanHelper issueBeanHelper = DefaultIssueBeanHelper.getInstance();
34
35 protected AutoTransitionManager autoTransitionManager;
36
37 protected ColumnLayoutManager columnLayoutManager;
38
39 protected FieldManager fieldManager;
40
41 protected CustomFieldManager customFieldManager;
42
43 protected OutlookDateManager outlookDateManager;
44
45 private List columnLayoutItems;
46
47
48
49 public RequestHTMLExportManager() {
50 super();
51 autoTransitionManager = (AutoTransitionManager) ComponentManager.getComponentInstanceOfType(AutoTransitionManager.class);
52 columnLayoutManager = (ColumnLayoutManager) ComponentManager.getComponentInstanceOfType(ColumnLayoutManager.class);
53 fieldManager = (FieldManager) ComponentManager.getComponentInstanceOfType(FieldManager.class);
54 customFieldManager = (CustomFieldManager) ComponentManager.getComponentInstanceOfType(CustomFieldManager.class);
55 outlookDateManager = (OutlookDateManager) ComponentManager.getComponentInstanceOfType(OutlookDateManager.class);
56
57 }
58
59
60
61
62 protected void initExport() throws ExportException {
63 StringBuffer buf = new StringBuffer();
64 buf.append("<html><body><table>");
65 getWriter().write(buf.toString());
66 }
67
68
69
70
71 protected void writeHeader(final Issue _issue) throws ExportException {
72 StringBuffer buf = new StringBuffer();
73 buf.append("<tr >");
74 getWriter().write(buf.toString());
75 }
76
77
78
79
80 protected void writeData(final Issue _issue) throws ExportException {
81 StringBuffer buf = new StringBuffer();
82 try {
83 for (Iterator itColumnLayoutItems = getColumnLayoutItemsFromSearchRequest().iterator(); itColumnLayoutItems.hasNext();) {
84 ColumnLayoutItem item = (ColumnLayoutItem) itColumnLayoutItems.next();
85 String outputValue = null;
86 outputValue = item.getHtml(java.util.Collections.EMPTY_MAP,_issue);
87 buf.append("<td >").append(outputValue).append("</td >");
88 }
89 getWriter().write(buf.toString());
90 if (getWriter().checkError()) {
91 throw new ExportException("Error occcured during Write !");
92 }
93 } catch (Exception e) {
94 throw new ExportException(e);
95 }
96 }
97
98
99
100
101 protected void writeFooter(final Issue _issue) throws ExportException {
102 StringBuffer buf = new StringBuffer();
103 buf.append("</tr >");
104 getWriter().write(buf.toString());
105 }
106
107
108
109
110 protected void endExport() throws ExportException {
111 StringBuffer buf = new StringBuffer();
112 buf.append("</table></body></html>");
113 getWriter().write(buf.toString());
114 super.endExport();
115 }
116
117
118
119
120
121 protected List getColumnLayoutItemsFromSearchRequest() throws ExportException {
122 if (columnLayoutItems == null) {
123 SearchRequest searchRequest = getRequestProvider().getSearchRequest();
124 User userSearcher = getRequestProvider().getUserSearcher();
125 try {
126 if (searchRequest != null && userSearcher != null) {
127 EditableColumnLayout ecl = this.columnLayoutManager.getEditableSearchRequestColumnLayout(userSearcher, searchRequest);
128 return ecl.getColumnLayoutItems();
129 }
130 } catch (Exception e) {
131 throw new ExportException(e);
132 }
133 }
134 return columnLayoutItems;
135 }
136
137 }