Package org.infoglue.deliver.applications.inputhandlers

Source Code of org.infoglue.deliver.applications.inputhandlers.MailSender

/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/
package org.infoglue.deliver.applications.inputhandlers;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;

import org.infoglue.cms.security.InfoGluePrincipal;
import org.infoglue.cms.util.mail.MailServiceFactory;
import org.infoglue.deliver.applications.databeans.DatabaseWrapper;
import org.infoglue.deliver.applications.databeans.DeliveryContext;
import org.infoglue.deliver.controllers.kernel.impl.simple.BasicTemplateController;
import org.infoglue.deliver.controllers.kernel.impl.simple.ContentDeliveryController;
import org.infoglue.deliver.controllers.kernel.impl.simple.IntegrationDeliveryController;
import org.infoglue.deliver.controllers.kernel.impl.simple.NodeDeliveryController;
import org.infoglue.deliver.controllers.kernel.impl.simple.TemplateController;
import org.infoglue.deliver.util.VelocityTemplateProcessor;

/**
* This is the first implementation of the InfoGlueInputHandler which emails a recipent the feedback.
* This class needs a couple of parameters from the form-content. They are:
*
* MailSender.fromAddress = The address from where the mail should originate
* MailSender.toAddress   = The recipient of the feedback on the site.
* MailSender.subject     = The subject line we want in the emails.
* MailSender.template    = The template is as all other templates a way to present info and in this case to create an email body. Check out the examples.
*/

public class MailSender implements InfoGlueInputHandler
{
 
  /**
   * This is the method that is invoked by the calling action.
   */
 
  public void processInput(DatabaseWrapper databaseWrapper, Integer siteNodeId, Integer languageId, Integer contentId, Integer formContentId, HashMap parameters, HttpServletRequest request, InfoGluePrincipal infogluePrincipal) throws Exception
  {
    String template     = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_template", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false);
    String fromAddress   = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_fromAddress", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false);
    String toAddress     = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_toAddress", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false);
    String subject     = ContentDeliveryController.getContentDeliveryController().getContentAttribute(databaseWrapper.getDatabase(), formContentId, languageId, "MailSender_subject", siteNodeId, true, DeliveryContext.getDeliveryContext(), infogluePrincipal, false);
    String body         = renderMailBody(databaseWrapper, siteNodeId, languageId, contentId, template, parameters, request, infogluePrincipal);
   
    //MailServiceFactory.getService().send(fromAddress, toAddress, subject, body);
    MailServiceFactory.getService().send(fromAddress, toAddress, subject, body, "text/html", "UTF-8");
  }
 
 
 
  /**
   * This method creates a mail from a velocity-template.
   */
 
  private String renderMailBody(DatabaseWrapper databaseWrapper, Integer siteNodeId, Integer languageId, Integer contentId, String template, HashMap parameters, HttpServletRequest request, InfoGluePrincipal infogluePrincipal) throws Exception
  {
    parameters.put("templateLogic", getTemplateController(databaseWrapper, siteNodeId, languageId, contentId, request, infogluePrincipal));
   
    StringWriter tempString = new StringWriter();
    PrintWriter pw = new PrintWriter(tempString);
    new VelocityTemplateProcessor().renderTemplate(parameters, pw, template);
    return tempString.toString();
  }
 
 
       /**
   * This method should be much more sophisticated later and include a check to see if there is a
   * digital asset uploaded which is more specialized and can be used to act as serverside logic to the template.
   * The method also consideres wheter or not to invoke the preview-version with administrative functioality or the
   * normal site-delivery version.
   */
 
  public TemplateController getTemplateController(DatabaseWrapper databaseWrapper, Integer siteNodeId, Integer languageId, Integer contentId, HttpServletRequest request, InfoGluePrincipal infogluePrincipal) throws Exception
  {
      NodeDeliveryController nodeDeliveryController        = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId);
    IntegrationDeliveryController integrationDeliveryController  = IntegrationDeliveryController.getIntegrationDeliveryController(siteNodeId, languageId, contentId);
   
    TemplateController templateController = new BasicTemplateController(databaseWrapper, infogluePrincipal);
    templateController.setStandardRequestParameters(siteNodeId, languageId, contentId)
    templateController.setHttpRequest(request)
    templateController.setDeliveryControllers(nodeDeliveryController, null, integrationDeliveryController)
    return templateController;   
  }

}
TOP

Related Classes of org.infoglue.deliver.applications.inputhandlers.MailSender

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.