KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > webforms > action > GenerateWebFormsReportAction


1 package com.dotmarketing.portlets.webforms.action;
2
3 import java.io.IOException JavaDoc;
4 import java.util.ArrayList JavaDoc;
5 import java.util.Date JavaDoc;
6 import java.util.HashMap JavaDoc;
7 import java.util.Iterator JavaDoc;
8 import java.util.List JavaDoc;
9 import java.util.Map JavaDoc;
10
11 import javax.portlet.ActionRequest;
12 import javax.portlet.ActionResponse;
13 import javax.portlet.PortletConfig;
14 import javax.servlet.ServletOutputStream JavaDoc;
15 import javax.servlet.http.HttpServletResponse JavaDoc;
16
17 import org.apache.struts.action.ActionForm;
18 import org.apache.struts.action.ActionMapping;
19
20 import com.dotmarketing.portlets.webforms.factories.WebFormFactory;
21 import com.dotmarketing.portlets.webforms.model.WebForm;
22 import com.dotmarketing.util.Logger;
23 import com.dotmarketing.util.UtilMethods;
24 import com.liferay.portal.struts.PortletAction;
25 import com.liferay.portlet.ActionResponseImpl;
26 import com.liferay.util.servlet.SessionMessages;
27
28 public class GenerateWebFormsReportAction extends PortletAction {
29
30     public void processAction(
31             ActionMapping mapping, ActionForm form, PortletConfig config,
32             ActionRequest req, ActionResponse res)
33         throws Exception JavaDoc {
34         Logger.debug(this, "Running GenerateWebFormsReportAction!!");
35         
36         String JavaDoc cmd = req.getParameter("cmd");
37         String JavaDoc reportType = req.getParameter("report_type");
38         List JavaDoc<WebForm> list = new ArrayList JavaDoc ();
39         list = WebFormFactory.getWebFormsByType(reportType);
40         
41         if (UtilMethods.isSet(cmd) && cmd.equals("delete") && UtilMethods.isSet(reportType)) {
42             WebFormFactory.removeWebFormsByType(reportType);
43             SessionMessages.add(req, "message.webforms.content.deleted");
44             setForward(req, "portlet.ext.webforms.view");
45             return;
46         }
47         
48         String JavaDoc reportName = reportType + " Web Forms Report";
49         Date JavaDoc reportDate = new Date JavaDoc();
50         
51         String JavaDoc reportComments = "Web Forms Submitted for " + reportType;
52
53         String JavaDoc dateString = (new java.text.SimpleDateFormat JavaDoc("M-d-yyyy")).format(reportDate);
54         String JavaDoc reportFileName = reportType.replaceAll(" ", "") + "Report-" + dateString + ".xls";
55
56         List JavaDoc<String JavaDoc> reportHeaders = new ArrayList JavaDoc ();
57         List JavaDoc<String JavaDoc> customHeaders = new ArrayList JavaDoc ();
58
59         reportHeaders.add("Submit Date/Time");
60         
61         for (WebForm webForm : list) {
62
63             if (!reportHeaders.contains("Title") && UtilMethods.isSet(webForm.getTitle()))
64                 reportHeaders.add("Title");
65
66             if (!reportHeaders.contains("Prefix") && UtilMethods.isSet(webForm.getPrefix()))
67                 reportHeaders.add("Prefix");
68
69             if (!reportHeaders.contains("First Name") && UtilMethods.isSet(webForm.getFirstName()))
70                 reportHeaders.add("First Name");
71
72             if (!reportHeaders.contains("Middle Initial") && UtilMethods.isSet(webForm.getMiddleInitial()))
73                 reportHeaders.add("Middle Initial");
74
75             if (!reportHeaders.contains("Middle Name") && UtilMethods.isSet(webForm.getMiddleName()))
76                 reportHeaders.add("Middle Name");
77             
78             if (!reportHeaders.contains("Last Name") && UtilMethods.isSet(webForm.getLastName()))
79                 reportHeaders.add("Last Name");
80             
81             if (!reportHeaders.contains("Full Name") && UtilMethods.isSet(webForm.getFullName()))
82                 reportHeaders.add("Full Name");
83             
84             if (!reportHeaders.contains("Organization") && UtilMethods.isSet(webForm.getOrganization()))
85                 reportHeaders.add("Organization");
86             
87             if (!reportHeaders.contains("Address") && UtilMethods.isSet(webForm.getAddress()))
88                 reportHeaders.add("Address");
89             
90             if (!reportHeaders.contains("Address 1") && UtilMethods.isSet(webForm.getAddress1()))
91                 reportHeaders.add("Address 1");
92             
93             if (!reportHeaders.contains("Address 2") && UtilMethods.isSet(webForm.getAddress2()))
94                 reportHeaders.add("Address 2");
95             
96             if (!reportHeaders.contains("City") && UtilMethods.isSet(webForm.getCity()))
97                 reportHeaders.add("City");
98
99             if (!reportHeaders.contains("State") && UtilMethods.isSet(webForm.getState()))
100                 reportHeaders.add("State");
101
102             if (!reportHeaders.contains("Zip") && UtilMethods.isSet(webForm.getZip()))
103                 reportHeaders.add("Zip");
104             
105             if (!reportHeaders.contains("Country") && UtilMethods.isSet(webForm.getCountry()))
106                 reportHeaders.add("Country");
107
108             if (!reportHeaders.contains("Phone") && UtilMethods.isSet(webForm.getPhone()))
109                 reportHeaders.add("Phone");
110             
111             if (!reportHeaders.contains("Email") && UtilMethods.isSet(webForm.getEmail()))
112                 reportHeaders.add("Email");
113
114             if (UtilMethods.isSet(webForm.getCustomFields())) {
115                 String JavaDoc customFields = webForm.getCustomFields();
116                 String JavaDoc[] fields = customFields.split("\\|");
117                 for (String JavaDoc field : fields) {
118                     String JavaDoc[] splitted = field.split("=");
119                     if (splitted.length == 2) {
120                         String JavaDoc name = splitted[0];
121                         if (!reportHeaders.contains(name))
122                             reportHeaders.add(name);
123                         if (!customHeaders.contains(name))
124                             customHeaders.add(name);
125                     }
126                 }
127             }
128             
129             req.setAttribute("reportHeaders", reportHeaders);
130
131         }
132             
133         List JavaDoc reportData = new ArrayList JavaDoc ();
134         
135         for (WebForm webForm : list) {
136             
137             try {
138                 
139                 List JavaDoc row = new ArrayList JavaDoc ();
140                 
141                 Map JavaDoc customFieldsMap = new HashMap JavaDoc ();
142                 
143                 if (UtilMethods.isSet(webForm.getCustomFields())) {
144                     String JavaDoc customFields = webForm.getCustomFields();
145                     String JavaDoc[] fields = customFields.split("\\|");
146                     for (String JavaDoc field : fields) {
147                         String JavaDoc[] splitted = field.split("=");
148                         if (splitted.length == 2) {
149                             String JavaDoc name = splitted[0];
150                             String JavaDoc value = splitted[1];
151                             customFieldsMap.put(name, value);
152                         }
153                     }
154                 }
155
156                 row.add(UtilMethods.dateToHTMLDate(webForm.getSubmitDate()) + " " + UtilMethods.dateToHTMLTime(webForm.getSubmitDate()));
157                 
158                 List JavaDoc<String JavaDoc> subList = reportHeaders.subList(1, reportHeaders.size());
159                 for (String JavaDoc header : subList) {
160                     
161                     if (header.equals("Title"))
162                         row.add(UtilMethods.isSet(webForm.getTitle())?webForm.getTitle():"");
163                     else if (header.equals("Prefix"))
164                         row.add(UtilMethods.isSet(webForm.getPrefix())?webForm.getPrefix():"");
165                     else if (header.equals("First Name"))
166                         row.add(UtilMethods.isSet(webForm.getFirstName())?webForm.getFirstName():"");
167                     else if (header.equals("Middle Initial"))
168                         row.add(UtilMethods.isSet(webForm.getMiddleInitial())?webForm.getMiddleInitial():"");
169                     else if (header.equals("Middle Name"))
170                         row.add(UtilMethods.isSet(webForm.getMiddleName())?webForm.getMiddleName():"");
171                     else if (header.equals("Last Name"))
172                         row.add(UtilMethods.isSet(webForm.getLastName())?webForm.getLastName():"");
173                     else if (header.equals("Full Name"))
174                         row.add(UtilMethods.isSet(webForm.getFullName())?webForm.getFullName():"");
175                     else if (header.equals("Organization"))
176                         row.add(UtilMethods.isSet(webForm.getOrganization())?webForm.getOrganization():"");
177                     else if (header.equals("Address"))
178                         row.add(UtilMethods.isSet(webForm.getAddress())?webForm.getAddress():"");
179                     else if (header.equals("Address 1"))
180                         row.add(UtilMethods.isSet(webForm.getAddress1())?webForm.getAddress1():"");
181                     else if (header.equals("Address 2"))
182                         row.add(UtilMethods.isSet(webForm.getAddress2())?webForm.getAddress2():"");
183                     else if (header.equals("City"))
184                         row.add(UtilMethods.isSet(webForm.getCity())?webForm.getCity():"");
185                     else if (header.equals("State"))
186                         row.add(UtilMethods.isSet(webForm.getState())?webForm.getState():"");
187                     else if (header.equals("Zip"))
188                         row.add(UtilMethods.isSet(webForm.getZip())?webForm.getZip():"");
189                     else if (header.equals("Country"))
190                         row.add(UtilMethods.isSet(webForm.getCountry())?webForm.getCountry():"");
191                     else if (header.equals("Phone"))
192                         row.add(UtilMethods.isSet(webForm.getPhone())?webForm.getPhone():"");
193                     else if (header.equals("Email"))
194                         row.add(UtilMethods.isSet(webForm.getEmail())?webForm.getEmail():"");
195                     else {
196                         if (customFieldsMap.containsKey(header)) {
197                                 row.add(customFieldsMap.get(header));
198                         } else {
199                             row.add("");
200                         }
201                     }
202                 }
203                 reportData.add(row);
204             } catch (Exception JavaDoc e) {
205                 e.printStackTrace();
206             }
207         }
208         
209         _writeReport(reportName, reportHeaders, reportData, reportDate, reportFileName, reportComments, res);
210         
211         
212     }
213
214     private void _writeReport (String JavaDoc reportName, List JavaDoc reportHeaders, List JavaDoc reportData, Date JavaDoc reportDate,
215             String JavaDoc reportFileName, String JavaDoc reportComments, ActionResponse res) throws IOException JavaDoc {
216
217         HttpServletResponse JavaDoc response = ((ActionResponseImpl)res).getHttpServletResponse();
218         response.setContentType("application/octet-stream");
219         response.setHeader("Content-Disposition", "attachment; filename=\"" + reportFileName + "\"");
220
221         ServletOutputStream JavaDoc out = response.getOutputStream();
222         
223         int columns = 1;
224         
225         int dataSize = reportData.size();
226         int dataColums = 0;
227         if (dataSize > 0)
228             dataColums = ((List JavaDoc)reportData.get(0)).size();
229
230         if (dataSize > 0 && dataColums > 0) {
231             columns = ((List JavaDoc)reportData.get(0)).size();
232         } else if (reportHeaders.size()>0) {
233             columns = reportHeaders.size();
234         }
235         out.println("<table border=\"1\">");
236         out.println("<tr>");
237         out.println("<td colspan=\""+columns+"\"><font color=\"navy\"><b>"+reportName+" - Generated on: "+UtilMethods.dateToPrettyHTMLDate(reportDate)+"</b></font></td>");
238         out.println("</tr>");
239
240         if (UtilMethods.isSet(reportComments)) {
241             out.println("<tr>");
242             out.println("<td colspan=\""+columns+"\"><font color=\"navy\"><b>"+reportComments+"</b></font></td>");
243             out.println("</tr>");
244         }
245
246         out.println("<tr>");
247         out.println("<td colspan=\""+columns+"\"></td>");
248         out.println("</tr>");
249
250         if (reportHeaders != null) {
251             Iterator JavaDoc it = reportHeaders.iterator();
252             out.println("<tr>");
253             while (it.hasNext()) {
254                 String JavaDoc header = (String JavaDoc)it.next();
255                 out.println("<td bgcolor=\"blue\"><b><font color=\"white\">"+header+"</font></b></td>");
256             }
257             out.println("</tr>");
258         }
259
260         if (reportData.size() == 0) {
261             out.println("<tr>");
262             out.println("<td colspan=\"" + columns + "\" align=\"center\">No Records Found</td>");
263             out.println("</tr>");
264             
265         }
266         
267         Iterator JavaDoc it = reportData.iterator();
268         while (it.hasNext()) {
269             Object JavaDoc row = (Object JavaDoc) it.next();
270             
271             Iterator JavaDoc it2 = null;
272             
273             it2 = ((List JavaDoc)row).iterator();
274                 
275             out.println("<tr>");
276             while (it2.hasNext()) {
277                 String JavaDoc value = (String JavaDoc)it2.next();
278                 out.println("<td>"+value+"</td>");
279             }
280             out.println("</tr>");
281         }
282         out.println("</table>");
283     
284         out.flush();
285         out.close();
286     }
287
288 }
289
Popular Tags