/********************************************************************************* * The contents of this file are subject to the Common Public Attribution * License Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.openemm.org/cpal1.html. The License is based on the Mozilla * Public License Version 1.1 but Sections 14 and 15 have been added to cover * use of software over a computer network and provide for limited attribution * for the Original Developer. In addition, Exhibit A has been modified to be * consistent with Exhibit B. * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is OpenEMM. * The Original Developer is the Initial Developer. * The Initial Developer of the Original Code is AGNITAS AG. All portions of * the code written by AGNITAS AG are Copyright (c) 2009 AGNITAS AG. All Rights * Reserved. * * Contributor(s): AGNITAS AG. ********************************************************************************/ package org.agnitas.ecs.web; import java.io.IOException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.agnitas.beans.Mailing; import org.agnitas.dao.MailingDao; import org.agnitas.ecs.EcsGlobals; import org.agnitas.ecs.backend.beans.ClickStatColor; import org.agnitas.ecs.backend.dao.EmbeddedClickStatDao; import org.agnitas.ecs.service.EcsRecipientsProvider; import org.agnitas.ecs.web.forms.EcsMailingStatForm; import org.agnitas.util.AgnUtils; import org.agnitas.web.StrutsActionBase; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import java.util.Collection; /** * Action class that handles embedded click statistics page. * * @author Vyacheslav Stepanov */ public class EcsMailingStatAction extends StrutsActionBase { /** * Service object that provides with * test/admin recipients of mailing's mailinglist */ private EcsRecipientsProvider recipientsProvider; /** * Setter for recipients provider * * @param recipientsProvider recipients provider */ public void setRecipientsProvider(EcsRecipientsProvider recipientsProvider) { this.recipientsProvider = recipientsProvider; } private EmbeddedClickStatDao ecsDao; public void setEmbeddedClickStatDao(EmbeddedClickStatDao ecsDao) { this.ecsDao = ecsDao; } private MailingDao mailingDao; public void setMailingDao(MailingDao mailingDao) { this.mailingDao = mailingDao; } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException { ActionMessages errors = new ActionMessages(); // check logon if(!AgnUtils.isUserLoggedIn(request)) { return mapping.findForward("logon"); } // initialize form EcsMailingStatForm aForm; if(form != null) { aForm = (EcsMailingStatForm) form; } else { aForm = new EcsMailingStatForm(); } // Initialization of the ECS page is now auto-detected initEcsPage(request, aForm); // Checks for test recipients or admins if(!hasPreviewRecipients(aForm, request)) { errors.add("heatmap_errors", new ActionMessage("error.preview.no_recipient")); } if (!errors.isEmpty()) { aForm.setHeatmapErrors( errors); this.saveErrors(request, errors); } else { aForm.setHeatmapErrors( null); } return mapping.findForward("quick_view"); } /** * Method inits data for ECS-page: sets list of test recipients, * sets default view mode and default recipient, sets company id * * @param request request * @param aForm form */ private void initEcsPage(HttpServletRequest request, EcsMailingStatForm aForm) { if( aForm.getInitializedMailingId() != aForm.getMailingId() || request.getParameter("init") != null) { // get test recipients for drowp-down list int companyId = AgnUtils.getCompanyID(request); Map<Integer, String> recipients = recipientsProvider.getTestAndAdminRecipients(aForm.getMailingId(), companyId); aForm.setTestRecipients(recipients); // set color codes and ranges Collection<ClickStatColor> rangeColors = ecsDao.getClickStatColors(companyId); aForm.setRangeColors(rangeColors); // set company id aForm.setCompanyId(companyId); //set shortname of Mailing Mailing mailing = mailingDao.getMailing(aForm.getMailingId(), companyId); aForm.setShortname(mailing.getShortname()); aForm.setDescription(mailing.getDescription()); // set statistics server URL aForm.setStatServerUrl(AgnUtils.getEMMProperty("system.url")); // set default recipient if(!recipients.isEmpty()) { aForm.setSelectedRecipient(recipients.keySet().iterator().next()); } else { aForm.setSelectedRecipient(0); } // set default view mode and frame size aForm.setViewMode(EcsGlobals.MODE_GROSS_CLICKS); aForm.setFrameSize(1); aForm.setInitializedMailingId( aForm.getMailingId()); } } protected boolean hasPreviewRecipients(EcsMailingStatForm form, HttpServletRequest request) { return this.mailingDao.hasPreviewRecipients(form.getMailingId(), getCompanyID(request)); } }