View Javadoc

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   * FQCN : com.atlassian.jira.export.RequestHTMLExportManager
24   * @author Kaamelot
25   * @since 3.10.1.34
26   * Description : Provides a HTML Export based on Request Filter definition
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  	/** Default Constructor
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  	 * @see com.atlassian.jira.export.AIssueExportManager#initExport()
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  	 * @see com.atlassian.jira.export.AIssueExportManager#writeHeader(Issue)
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  	 * @see com.atlassian.jira.export.AIssueExportManager#writeData(Issue)
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  	 * @see com.atlassian.jira.export.AIssueExportManager#writeFooter(Issue)
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 	 * @see com.atlassian.jira.export.AIssueExportManager#endExport()
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 	 * @return List ColumnLayoutItems defined in the Current Search Request
119 	 * @throws ExportException n/a 
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 }