Package com.dotmarketing.portlets.communications.action

Source Code of com.dotmarketing.portlets.communications.action.EditCommunicationsAction

package com.dotmarketing.portlets.communications.action;

import static com.dotmarketing.business.PermissionAPI.PERMISSION_WRITE;

import java.net.URLDecoder;
import java.util.StringTokenizer;

import com.dotcms.repackage.javax.portlet.ActionRequest;
import com.dotcms.repackage.javax.portlet.ActionResponse;
import com.dotcms.repackage.javax.portlet.PortletConfig;
import javax.servlet.http.HttpServletRequest;

import com.dotcms.repackage.org.apache.commons.beanutils.BeanUtils;
import com.dotcms.repackage.org.apache.struts.action.ActionForm;
import com.dotcms.repackage.org.apache.struts.action.ActionMapping;

import com.dotmarketing.db.HibernateUtil;
import com.dotmarketing.exception.DotHibernateException;
import com.dotmarketing.factories.InodeFactory;
import com.dotmarketing.portal.struts.DotPortletAction;
import com.dotmarketing.portlets.communications.factories.CommunicationsFactory;
import com.dotmarketing.portlets.communications.model.Communication;
import com.dotmarketing.portlets.communications.struts.CommunicationsForm;
import com.dotmarketing.portlets.htmlpages.model.HTMLPage;
import com.dotmarketing.portlets.virtuallinks.factories.VirtualLinkFactory;
import com.dotmarketing.portlets.virtuallinks.model.VirtualLink;
import com.dotmarketing.util.InodeUtils;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.UtilMethods;
import com.dotmarketing.util.Validator;
import com.dotmarketing.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.struts.ActionException;
import com.liferay.portal.util.Constants;
import com.liferay.portlet.ActionRequestImpl;
import com.liferay.util.servlet.SessionMessages;

/**
* Edit Communication objects
* @author Oswaldo
*
*/
public class EditCommunicationsAction extends DotPortletAction {
 
  @SuppressWarnings("unchecked")
  public void processAction(
      ActionMapping mapping, ActionForm form, PortletConfig config,
      ActionRequest req, ActionResponse res)
  throws Exception {
   
    String cmd = (req.getParameter(Constants.CMD)!=null)? req.getParameter(Constants.CMD) : Constants.EDIT;
    String referer = req.getParameter("referer");
   
    //wraps request to get session object
    ActionRequestImpl reqImpl = (ActionRequestImpl)req;
    HttpServletRequest httpReq = reqImpl.getHttpServletRequest();
   
    if ((referer!=null) && (referer.length()!=0)) {
      referer = URLDecoder.decode(referer,"UTF-8");
    }
   
    Logger.debug(this, "EditCommunicationsAction cmd=" + cmd);
   
    HibernateUtil.startTransaction();
   
    User user = _getUser(req);
   
    try {
      _retrieveCommunication(req, res, config, form, user);
     
    } catch (ActionException ae) {
      _handleException(ae, req);
    }
   
    /*
     * We are editing the Communication
     */
    if ((cmd != null) && cmd.equals(Constants.EDIT)) {
      try {
        _editCommunication(req, res, config, form, user);
        setForward(req,"portlet.ext.communications.edit_communication");
       
      } catch (ActionException ae) {
        _handleException(ae, req);
      }
    }
   
    /*
     * If we are updating the Communication, copy the information
     * from the struts bean to the hbm inode and run the
     * update action and return to the list
     */
    else if ((cmd != null) && cmd.equals(Constants.ADD)) {
      try {
       
        if (Validator.validate(req,form,mapping)) {
          _saveCommunication(req, res, config, form, user);
          _sendToReferral(req,res,referer);
        }
       
      } catch (ActionException ae) {
        _handleException(ae, req);
      }
     
    }
    /*
     * If we are deleting the Communication,
     * run the delete action and return to the list
     *
     */
    else if ((cmd != null) && cmd.equals(Constants.DELETE)) {
      try {
        _deleteCommunication(req, res, config, form, user);
      } catch (ActionException ae) {
        _handleException(ae, req);
      }
      _sendToReferral(req,res,referer);
    }
    /*
     * If we are deleting the Communications,
     * run the delete action and return to the list
     *
     */
    else if ("deleteComms".equals(cmd)) {
          try {
                if (_deleteSelectedCommunications(req)) {
                SessionMessages.add(req, "message", "message.communications.deleted");
                } else {
                  SessionMessages.add(req, "message", "message.communications.not-deleted");
                }
          } catch (Exception e) {
        _handleException(e,req);
      }
         
          _sendToReferral(req, res, referer);
        }

        HibernateUtil.commitTransaction();
    if(req.getAttribute(com.dotmarketing.util.WebKeys.COMMUNICATION_EDIT_FORM) == null){
      CommunicationsForm cform = (CommunicationsForm) form;
      if(!UtilMethods.isSet(cform.getModDate())){
        cform.setModDate(new java.util.Date());
        cform.setModifiedBy(user.getUserId());
      }
      req.setAttribute(com.dotmarketing.util.WebKeys.COMMUNICATION_EDIT_FORM, cform);
    }
    setForward(req,"portlet.ext.communications.edit_communication");
   
   
  }
 
  ///// ************** ALL METHODS HERE *************************** ////////
 
  public void _retrieveCommunication(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
  throws Exception {
   
    String inode = (req.getParameter("inode")!=null) ? req.getParameter("inode") : "";
   
    Communication c = null;
    c = CommunicationsFactory.getCommunication(inode);
   
    if(!InodeUtils.isSet(c.getInode())){
      c = CommunicationsFactory.newInstance();
      req.setAttribute(WebKeys.COMMUNICATION_EDIT_FORM_PERMISSION, true);
    }
   
    req.setAttribute(WebKeys.COMMUNICATION_EDIT, c);
   
  }
 
  public void _editCommunication(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
  throws Exception {
   
    CommunicationsForm cfform = (CommunicationsForm) form;
    Communication c = (Communication) req.getAttribute(WebKeys.COMMUNICATION_EDIT);
   
    BeanUtils.copyProperties(cfform, c);
   
    if(cfform.getModDate() == null)
      cfform.setModDate(new java.util.Date());
     
    //add the html page to the Communication
    HTMLPage page = (HTMLPage) InodeFactory.getChildOfClass(c, HTMLPage.class);
    if (InodeUtils.isSet(page.getIdentifier())) {
      cfform.setHtmlPage(page.getIdentifier());
    }
   
    VirtualLink vl = (VirtualLink) InodeFactory.getChildOfClass(c, VirtualLink.class);
    if (InodeUtils.isSet(vl.getInode())) {
      cfform.setTrackBackLinkInode(vl.getInode());
    }
    req.setAttribute(WebKeys.COMMUNICATION_EDIT_FORM, cfform);
  }
 
  public void _saveCommunication(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
  throws Exception {
   
    Communication c = (Communication) req.getAttribute(WebKeys.COMMUNICATION_EDIT);
    CommunicationsForm cfform = (CommunicationsForm) form;
   
    BeanUtils.copyProperties(req.getAttribute(WebKeys.COMMUNICATION_EDIT), cfform);
   
    if(cfform.getModDate() == null){
      c.setModDate(new java.util.Date());
    }
   
    c.setModifiedBy(user.getUserId());
   
    _checkUserPermissions(c, user, PERMISSION_WRITE);
   
    if (req.getParameter("typeContent").equals("HTMLPage") &&
        !cfform.getCommunicationType().equalsIgnoreCase("alert")) {
      c.setTextMessage("");
    }
    if (!cfform.getCommunicationType().equalsIgnoreCase("email")) {
      c.setFromEmail("");
      c.setFromName("");
      c.setEmailSubject("");
      c.setHtmlPage(null);
      cfform.setHtmlPage(null);
    }
    if (!cfform.getCommunicationType().equalsIgnoreCase("external")) {
      c.setTrackBackLinkInode(null);
      c.setExternalCommunicationIdentifier("");
      cfform.setTrackBackLinkInode(null);
    }

    try {

      // HibernateUtil.saveOrUpdate(c);
      HibernateUtil.saveOrUpdate(c);

    } catch (DotHibernateException dhe) {
      SessionMessages.add(req, "error", "error.communications.not-saved");
      //setForward(req,"portlet.ext.communications.edit_communication");
      throw new ActionException(dhe.getMessage());
    }

   
    // wipe the old HTML page entries
    HTMLPage page = (HTMLPage) InodeFactory.getChildOfClass(c, HTMLPage.class);
    if (InodeUtils.isSet(page.getInode()))
      c.deleteChild(page);
   
    if (req.getParameter("typeContent").equals("HTMLPage")) {
      //try to get the Communication's page
      if (InodeUtils.isSet(cfform.getHtmlPage())) {
        page = (HTMLPage) InodeFactory.getInode(String.valueOf(cfform.getHtmlPage()), HTMLPage.class);
        if (InodeUtils.isSet(page.getInode())) {
          c.addChild(page);
          c.setHtmlPage(page.getIdentifier());
        }
      }
    }
   
    // wipe the old VirtualLink entries
    VirtualLink vl = (VirtualLink) InodeFactory.getChildOfClass(c, VirtualLink.class);
    if (InodeUtils.isSet(vl.getInode()))
      c.deleteChild(vl);
   
    //try to get the Communication's virtual link
    if (InodeUtils.isSet(cfform.getTrackBackLinkInode())) {
      vl = VirtualLinkFactory.getVirtualLink(String.valueOf(cfform.getTrackBackLinkInode()));
      if (InodeUtils.isSet(vl.getInode())) {
        c.addChild(vl);
        c.setTrackBackLinkInode(vl.getInode());
      }
    }
       
    //add message
    SessionMessages.add(req, "message", "message.communications.saved");
   
  }
 
 
  public void _deleteCommunication(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
  throws Exception {
   
    Communication c = (Communication) req.getAttribute(WebKeys.COMMUNICATION_EDIT);
    CommunicationsFactory.deleteCommunication(c, user.getUserId());
    SessionMessages.add(req, "message", "message.communications.deleted");
   
  }
 
    public boolean _deleteSelectedCommunications(ActionRequest req) {
      try {
        String communicationsStr = req.getParameter("comms");
       
        if ((communicationsStr == null) || (communicationsStr.trim().equals("")))
          return true;
       
        StringTokenizer tokens = new StringTokenizer(communicationsStr, ",");
        String token;
       
        for (; tokens.hasMoreTokens();) {
          if (!((token = tokens.nextToken().trim()).equals("")))
            CommunicationsFactory.deleteCommunication(token);
        }
       
        return true;
      } catch (Exception e) {
        return false;
      }
    }
}
TOP

Related Classes of com.dotmarketing.portlets.communications.action.EditCommunicationsAction

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.