KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > campaigns > action > ViewReportAction


1 package com.dotmarketing.portlets.campaigns.action;
2
3 import javax.portlet.ActionRequest;
4 import javax.portlet.ActionResponse;
5 import javax.portlet.PortletConfig;
6 import javax.servlet.ServletOutputStream JavaDoc;
7 import javax.servlet.http.HttpServletResponse JavaDoc;
8
9 import org.apache.struts.action.ActionForm;
10 import org.apache.struts.action.ActionMapping;
11
12 import com.dotmarketing.factories.InodeFactory;
13 import com.dotmarketing.portal.struts.DotPortletAction;
14 import com.dotmarketing.portlets.campaigns.factories.CampaignFactory;
15 import com.dotmarketing.portlets.campaigns.factories.RecipientFactory;
16 import com.dotmarketing.portlets.campaigns.model.Campaign;
17 import com.dotmarketing.portlets.campaigns.model.Click;
18 import com.dotmarketing.portlets.mailinglists.factories.MailingListFactory;
19 import com.dotmarketing.util.Config;
20 import com.dotmarketing.util.Logger;
21 import com.dotmarketing.util.UtilMethods;
22 import com.dotmarketing.util.WebKeys;
23 import com.liferay.portal.ejb.RoleLocalManagerUtil;
24 import com.liferay.portal.ejb.UserLocalManagerUtil;
25 import com.liferay.portal.model.Role;
26 import com.liferay.portal.model.User;
27 import com.liferay.portal.util.Constants;
28 import com.liferay.portlet.ActionResponseImpl;
29
30 /**
31  * <a HREF="ViewQuestionsAction.java.htm"><b><i>View Source</i></b></a>
32  *
33  * @author Maria Ahues
34  * @version $Revision: 1.5 $
35  *
36  */

37 public class ViewReportAction extends DotPortletAction {
38
39     /*
40      * @see com.liferay.portal.struts.PortletAction#render(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.portlet.PortletConfig, javax.portlet.RenderRequest, javax.portlet.RenderResponse)
41      */

42     public void processAction(
43              ActionMapping mapping, ActionForm form, PortletConfig config,
44              ActionRequest req, ActionResponse res)
45          throws Exception JavaDoc {
46
47         //wraps request to get session object
48
ActionResponseImpl resImpl = (ActionResponseImpl)res;
49         HttpServletResponse JavaDoc httpRes = resImpl.getHttpServletResponse();
50
51         String JavaDoc cmd = (req.getParameter(Constants.CMD)!=null) ? req.getParameter(Constants.CMD) : Constants.VIEW;
52
53         Logger.debug(this, "ViewReportAction :: cmd=" + cmd);
54
55         User user = _getUser(req);
56
57         //get the campaign
58
try {
59
60             Logger.debug(this, "I runned <sic> the RetrieveCampaignAction");
61             _retrieveCampaign(req, res, form, user);
62
63         }
64         catch (Exception JavaDoc ae) {
65             _handleException(ae, req);
66         }
67
68         if (cmd.equals(Constants.VIEW)) {
69
70             try {
71                 _viewCampaignReport(req,res,form, user);
72             }
73             catch (Exception JavaDoc ae) {
74                 _handleException(ae, req);
75             }
76             setForward(req,"portlet.ext.campaigns.view_report");
77
78         }
79
80         if (cmd.equals("view_all")) {
81
82             try {
83                 _viewCampaignAllReport(req,res,form, user);
84             }
85             catch (Exception JavaDoc ae) {
86                 _handleException(ae, req);
87             }
88             if (req.getParameter("csv") == null) {
89                 setForward(req,"portlet.ext.campaigns.view_report_detailed");
90             }
91             else {
92                 _writeCSV(httpRes,req,res,form,user);
93                 return;
94             }
95
96         }
97
98         if (cmd.equals("view_opened")) {
99
100             try {
101                 _viewCampaignReportOpened(req,res,form, user);
102             }
103             catch (Exception JavaDoc ae) {
104                 _handleException(ae, req);
105             }
106             if (req.getParameter("csv") == null) {
107                 setForward(req,"portlet.ext.campaigns.view_report_detailed");
108             }
109             else {
110                 _writeCSV(httpRes,req,res,form,user);
111                 return;
112             }
113
114         }
115
116         if (cmd.equals("view_unopened")) {
117
118             try {
119                 _viewCampaignReportUnOpened(req,res,form, user);
120             }
121             catch (Exception JavaDoc ae) {
122                 _handleException(ae, req);
123             }
124             if (req.getParameter("csv") == null) {
125                 setForward(req,"portlet.ext.campaigns.view_report_detailed");
126             }
127             else {
128                 _writeCSV(httpRes,req,res,form,user);
129                 return;
130             }
131         }
132         
133         if (cmd.equals("view_link")) {
134
135             try {
136                 _viewCampaignReportLink(req,res,form, user);
137             }
138             catch (Exception JavaDoc ae) {
139                 _handleException(ae, req);
140             }
141             if (req.getParameter("csv") == null) {
142                 setForward(req,"portlet.ext.campaigns.view_report_detailed");
143             }
144             else {
145                 _writeCSV(httpRes,req,res,form,user);
146                 return;
147             }
148         }
149         if (!UtilMethods.isSet(getForward(req))) {
150             Logger.debug(this, "I'm the ViewReportAction and I got nothing");
151             setForward(req,"portlet.ext.campaigns.view_report");
152         }
153
154     }
155     private void _retrieveCampaign(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception JavaDoc {
156
157         String JavaDoc inode = (req.getParameter("inode")!=null) ? req.getParameter("inode") : "0";
158         
159         Campaign c = null;
160         c = CampaignFactory.getCampaign(inode);
161         
162         if(c.getInode() ==0){
163             c = CampaignFactory.newInstance();
164             c.setUserId(user.getUserId());
165         }
166         req.setAttribute(WebKeys.CAMPAIGN_EDIT, c);
167         
168     }
169
170     private void _viewCampaignReportLink(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception JavaDoc {
171         
172         Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT);
173         Click click = (Click) InodeFactory.getInode(req.getParameter("clickId"), Click.class);
174         req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getRecipientsByCampaignAndClick(c, click));
175         req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "Users who clicked:" +click.getLink());
176         req.setAttribute(WebKeys.CLICK_EDIT, click);
177         
178     }
179
180     private void _viewCampaignReportUnOpened(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception JavaDoc {
181         Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT);
182         req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getUnopenedRecipientsByCampaign(c));
183         req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "Unopened");
184     }
185     private void _viewCampaignReportOpened(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception JavaDoc {
186         Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT);
187         req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getOpenedRecipientsByCampaign(c));
188         req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "Opened");
189     }
190     private void _viewCampaignAllReport(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception JavaDoc {
191         Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT);
192         req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getAllRecipientsByCampaign(c));
193         req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "All");
194     }
195     private void _viewCampaignReport(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception JavaDoc {
196         Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT);
197     }
198
199
200     private void _writeCSV(HttpServletResponse JavaDoc httpRes,ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception JavaDoc {
201
202         ServletOutputStream JavaDoc out = httpRes.getOutputStream();
203     
204         boolean isCampaignManagerViewer = false;
205         String JavaDoc campaignManagerViewerRoleId = "";
206         try {
207             Role campaignManagerViewerRole = RoleLocalManagerUtil.getRoleByName(user.getCompanyId(), Config.getStringProperty("CAMPAIGN_MANAGER_VIEWER"));
208             campaignManagerViewerRoleId = campaignManagerViewerRole.getRoleId();
209         }
210         catch (Exception JavaDoc e) {}
211
212         try {
213             Role[] userRoles = (Role[])UserLocalManagerUtil.getRoles(user.getUserId()).toArray(new Role[0]);
214             for (int i = 0; i < userRoles.length; i++) {
215                 Role userRole = (Role) userRoles[i];
216                 if (userRole.getRoleId().equals(campaignManagerViewerRoleId)) {
217                     isCampaignManagerViewer = true;
218                 }
219             }
220         }
221         catch (Exception JavaDoc e) {
222             
223         }
224         
225         httpRes.setContentType("application/octet-stream");
226         httpRes.setHeader("Content-Disposition", "attachment; filename=\"report" + System.currentTimeMillis() +".csv\"");
227
228         //httpRes.setContentType("text/csv");
229
//httpRes.setHeader("Content-Disposition", "attachment; filename=\"report" + System.currentTimeMillis() +".csv\"");
230

231         //print the header
232
com.dotmarketing.portlets.campaigns.model.Campaign camp = (com.dotmarketing.portlets.campaigns.model.Campaign) req.getAttribute(com.dotmarketing.util.WebKeys.CAMPAIGN_EDIT);
233         java.util.List JavaDoc allClicks = com.dotmarketing.portlets.campaigns.factories.ClickFactory.getClicksByParentOrderByCount(camp);
234         java.util.List JavaDoc recipients = (java.util.List JavaDoc) req.getAttribute(com.dotmarketing.util.WebKeys.RECIPIENT_LIST);
235
236         if (!isCampaignManagerViewer) {
237             out.print("Name, eMail, Sent Date, Opened Date");
238         }
239         else {
240             out.print("Name, Sent Date, Opened Date");
241         }
242         
243         java.util.Iterator JavaDoc i = allClicks.iterator();
244         int x = 1;
245         while(i.hasNext()){
246             com.dotmarketing.portlets.campaigns.model.Click c = (com.dotmarketing.portlets.campaigns.model.Click) i.next();
247             out.print(", Clicks on : " + c.getLink());
248         }
249         out.print("\r\n");
250
251         java.util.Iterator JavaDoc iter = recipients.iterator();
252
253         while(iter.hasNext()){
254
255             com.dotmarketing.portlets.campaigns.model.Recipient r = (com.dotmarketing.portlets.campaigns.model.Recipient) iter.next();
256             String JavaDoc name = r.getName();
257             if(UtilMethods.isSet(r.getLastname())){
258                 name = name+" "+r.getLastname();
259             }
260             out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(name) +"\",");
261             if (!isCampaignManagerViewer) {
262                 out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(r.getEmail()) +"\",");
263             }
264             out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(com.dotmarketing.util.UtilMethods.dateToHTMLDate(r.getSent()))+"\",");
265             out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(com.dotmarketing.util.UtilMethods.dateToHTMLDate(r.getOpened()))+"\",");
266             java.util.List JavaDoc clicks = com.dotmarketing.factories.InodeFactory.getChildrenClass(r, com.dotmarketing.portlets.campaigns.model.Click.class);
267             i = allClicks.iterator();
268             while(i.hasNext()){
269                 int cCount = 0;
270                 com.dotmarketing.portlets.campaigns.model.Click c = (com.dotmarketing.portlets.campaigns.model.Click) i.next();
271                 java.util.Iterator JavaDoc i2 = clicks.iterator();
272                 boolean printClick = false;
273                 while(i2.hasNext()){
274                     com.dotmarketing.portlets.campaigns.model.Click c2 = (com.dotmarketing.portlets.campaigns.model.Click) i2.next();
275                     if(c.getLink() != null && c2.getLink() != null && c.getLink().equals(c2.getLink())){
276                         cCount = c.getClickCount();
277                     }
278                 }
279                 out.print("\"" + cCount +"\",");
280         
281             }
282             out.print("\r\n");
283         }
284         out.flush();
285         out.close();
286         
287     }
288
289 }
Popular Tags