Package com.dotmarketing.portlets.userfilter.action

Source Code of com.dotmarketing.portlets.userfilter.action.EditUserFilterAction

package com.dotmarketing.portlets.userfilter.action;

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

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Properties;

import com.dotcms.repackage.javax.portlet.ActionRequest;
import com.dotcms.repackage.javax.portlet.ActionResponse;
import com.dotcms.repackage.javax.portlet.PortletConfig;
import com.dotcms.repackage.javax.portlet.PortletSession;

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.dotcms.util.SecurityUtils;
import com.dotmarketing.beans.Permission;
import com.dotmarketing.beans.UserProxy;
import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.PermissionAPI;
import com.dotmarketing.db.HibernateUtil;
import com.dotmarketing.factories.InodeFactory;
import com.dotmarketing.portal.struts.DotPortletAction;
import com.dotmarketing.portlets.userfilter.factories.UserFilterFactory;
import com.dotmarketing.portlets.userfilter.model.UserFilter;
import com.dotmarketing.portlets.usermanager.action.ViewUserManagerListAction;
import com.dotmarketing.portlets.usermanager.struts.UserManagerListSearchForm;
import com.dotmarketing.util.Config;
import com.dotmarketing.util.InodeUtils;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.UtilMethods;
import com.dotmarketing.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portlet.ActionRequestImpl;
import com.liferay.util.servlet.SessionMessages;

import javax.servlet.http.HttpServletRequest;

public class EditUserFilterAction extends DotPortletAction {

  public void processAction(ActionMapping mapping, ActionForm form, PortletConfig config, ActionRequest req,
      ActionResponse res) throws Exception {

        // Getting the http request
        ActionRequestImpl reqImpl = (ActionRequestImpl) req;
        HttpServletRequest httpReq = reqImpl.getHttpServletRequest();

    String cmd = req.getParameter(com.liferay.portal.util.Constants.CMD);
    UserManagerListSearchForm searchForm = (UserManagerListSearchForm) form;

    _retrieveProperties(req, res, config, form);
    req.setAttribute(WebKeys.MAILING_LIST_VIEW, new ArrayList());
    if (com.liferay.portal.util.Constants.VIEW.equals(cmd)) {
      // viewing user filter
      try {
        _getUserFilter(form, req, res);

        req.setAttribute(WebKeys.USER_FILTER_LIST_INODE, searchForm.getUserFilterListInode());
        req.setAttribute(WebKeys.USER_FILTER_LIST_TITLE, searchForm.getUserFilterTitle());
        req.setAttribute(WebKeys.USERMANAGERLISTFORM, form);
        searchForm = (UserManagerListSearchForm) form;
        ViewUserManagerListAction._doSearch(searchForm, req, res);
       
        String referrer = req.getParameter("referrer");
        if (UtilMethods.isSet(referrer)) {
          res.sendRedirect(SecurityUtils.stripReferer(httpReq, referrer));
        } else {
          setForward(req, "portlet.ext.userfilter.edit_userfilter");
          return;
        }
      } catch (Exception e) {
        SessionMessages.add(req, "error", "message.userfilter.error.getting");
        _handleException(e, req);
      }
    }
    else if ("deleteUserFilter".equals(cmd)) {
      // deleting user filter
      try {

        _deleteUserFilter(form, req, res);

        String redirect = req.getParameter("redirect");
            redirect = URLDecoder.decode(redirect, "UTF-8");
            _sendToReferral(req, res, redirect);
            return;
      } catch (Exception e) {
        SessionMessages.add(req, "error", "message.userfilter.error.deleting_user_filter");
        _handleException(e, req);
      }
    }
    else if (com.liferay.portal.util.Constants.SAVE.equals(cmd)) {
      // Save / Update user filter
      try {
        _save(form, req, res);

        _getUserFilter(form, req, res);
       
        req.setAttribute(WebKeys.USER_FILTER_LIST_INODE, searchForm.getUserFilterListInode());
        req.setAttribute(WebKeys.USER_FILTER_LIST_TITLE, searchForm.getUserFilterTitle());
        req.setAttribute(WebKeys.USERMANAGERLISTFORM, form);
        searchForm = (UserManagerListSearchForm) form;
        ViewUserManagerListAction._doSearch(searchForm, req, res);

        String referrer = req.getParameter("referrer");
        if (UtilMethods.isSet(referrer)) {
          res.sendRedirect(SecurityUtils.stripReferer(httpReq, referrer));
        } else {
          setForward(req, "portlet.ext.userfilter.edit_userfilter");
          return;
        }
      } catch (Exception e) {
        SessionMessages.add(req, "error", "message.userfilter.error.creating");
        _handleException(e, req);
      }
    }
    else if (com.liferay.portal.util.Constants.SEARCH.equals(cmd)) {
      // Searching
      try {
        ViewUserManagerListAction._doSearch(searchForm, req, res);
        req.setAttribute(WebKeys.USER_FILTER_LIST_INODE, searchForm.getUserFilterListInode());
        req.setAttribute(WebKeys.USER_FILTER_LIST_TITLE, searchForm.getUserFilterTitle());
        req.setAttribute(WebKeys.USERMANAGERLISTFORM, form);
        setForward(req, "portlet.ext.userfilter.edit_userfilter");
        return;
      } catch (Exception e) {
        SessionMessages.add(req, "error", "message.userfilter.error.deleting_user");
        _handleException(e, req);
      }
    }
    else if (com.liferay.portal.util.Constants.DELETE.equals(cmd)) {
      // Deleting user
      try {
        _delete(form, req, res);

        if (UtilMethods.isSet(req.getParameter("returnPath"))) {
          setForward(req, SecurityUtils.stripReferer(httpReq, req.getParameter("returnPath")));
        }
        else {
          _getUserFilter(form, req, res);
         
          req.setAttribute(WebKeys.USER_FILTER_LIST_INODE, searchForm.getUserFilterListInode());
          req.setAttribute(WebKeys.USER_FILTER_LIST_TITLE, searchForm.getUserFilterTitle());
          req.setAttribute(WebKeys.USERMANAGERLISTFORM, form);
          searchForm = (UserManagerListSearchForm) form;
        }

        ViewUserManagerListAction._doSearch(searchForm, req, res);
        req.setAttribute(WebKeys.USERMANAGERLISTFORM, form);

        String referrer = req.getParameter("referrer");
        if (UtilMethods.isSet(referrer)) {
          res.sendRedirect(SecurityUtils.stripReferer(httpReq, referrer));
        } else {
          setForward(req, "portlet.ext.userfilter.edit_userfilter");
          return;
        }
      } catch (Exception e) {
        SessionMessages.add(req, "error", "message.userfilter.error.deleting_user");
        _handleException(e, req);
      }
    }
    else if (com.liferay.portal.util.Constants.EDIT.equals(cmd)) {
      _getUserFilter(form, req, res);
     
      req.setAttribute(WebKeys.USER_FILTER_LIST_INODE, searchForm.getUserFilterListInode());
      req.setAttribute(WebKeys.USER_FILTER_LIST_TITLE, searchForm.getUserFilterTitle());
      searchForm = (UserManagerListSearchForm) form;
      ViewUserManagerListAction._doSearch(searchForm, req, res);
      req.setAttribute(WebKeys.USERMANAGERLISTFORM, form);

      setForward(req, "portlet.ext.userfilter.edit_userfilter");
      return;
     
    }
    req.setAttribute(WebKeys.USERMANAGERLISTFORM, form);
    setForward(req, "portlet.ext.userfilter.edit_userfilter");
    }

  //Adding / Saving User Filter
  private void _save(ActionForm form, ActionRequest req, ActionResponse res)
  throws Exception {
    User user = _getUser(req);
    PermissionAPI perAPI = APILocator.getPermissionAPI();
    UserManagerListSearchForm mlForm = (UserManagerListSearchForm) form;
    UserFilter uf;
    if (InodeUtils.isSet(mlForm.getUserFilterListInode())) {
      uf = (UserFilter) InodeFactory.getInode(mlForm.getUserFilterListInode(), UserFilter.class);

      //removing permissions on the user filter\
      perAPI.removePermissions(uf);
    }
    else {
      uf = new UserFilter();
    }

    BeanUtils.copyProperties(uf, mlForm);
    uf.setCategories(mlForm.getCategoriesStr());
    HibernateUtil.startTransaction();
    HibernateUtil.saveOrUpdate(uf);
    HibernateUtil.commitTransaction();

    // read permission
    String[] readPermissions = req.getParameterValues("readRole");
    // write permission
    String[] writePermissions = req.getParameterValues("writeRole");
    //adding roles to user filter
    Permission permission = null;
    if (readPermissions != null) {
      for (int n = 0; n < readPermissions.length; n++) {
        permission = new Permission(uf.getInode(), readPermissions[n], PERMISSION_READ);
        perAPI.save(permission, uf, user, false);
      }
    }

    if (writePermissions != null) {
      for (int n = 0; n < writePermissions.length; n++) {
        permission = new Permission(uf.getInode(), writePermissions[n],  PERMISSION_WRITE);
        perAPI.save(permission, uf, user, false);
      }
    }
    mlForm.setUserFilterListInode(uf.getInode());
    SessionMessages.add(req, "message", "message.userfilter.save");
  }

  //Getting User Filter
  private void _getUserFilter(ActionForm form, ActionRequest req, ActionResponse res)
  throws Exception {
    String inode = req.getParameter("inode");
    UserManagerListSearchForm searchForm = (UserManagerListSearchForm) form;

    if (!InodeUtils.isSet(inode)) {
      inode = searchForm.getUserFilterListInode();
    }
   
    if (InodeUtils.isSet(inode)) {
      UserFilter uf = UserFilterFactory.getUserFilter(inode);
 
      searchForm.setUserFilterListInode(inode);
 
      BeanUtils.copyProperties(searchForm, uf);
      searchForm.setCategories(uf.getCategoriesArray());
    }
  }

  //Deleting User manager
  private void _delete(ActionForm form, ActionRequest req, ActionResponse res)
  throws Exception {

    String userId = req.getParameter("userID");
    String companyId = com.dotmarketing.cms.factories.PublicCompanyFactory.getDefaultCompany().getCompanyId();

    User user = APILocator.getUserAPI().loadUserById(userId,APILocator.getUserAPI().getSystemUser(),false);
    UserProxy userProxy = com.dotmarketing.business.APILocator.getUserProxyAPI().getUserProxy(user,APILocator.getUserAPI().getSystemUser(), false);
 
    //deletes user proxy
    InodeFactory.deleteInode(userProxy);
    //deletes liferay user
    APILocator.getUserAPI().delete(APILocator.getUserAPI().loadUserById(userId,APILocator.getUserAPI().getSystemUser(),false),com.dotmarketing.business.APILocator.getUserAPI().getSystemUser(), false);

    SessionMessages.add(req, "message", "message.usermanager.deleted");

  }

  //Deleting User Filter
  private void _deleteUserFilter(ActionForm form, ActionRequest req, ActionResponse res)
  throws Exception {
    UserManagerListSearchForm mlForm = (UserManagerListSearchForm) form;
    UserFilter uf;
    if (InodeUtils.isSet(mlForm.getUserFilterListInode())) {
      uf = (UserFilter) InodeFactory.getInode(mlForm.getUserFilterListInode(), UserFilter.class);

      //removing permissions on the user filter
      PermissionAPI perAPI = APILocator.getPermissionAPI();
      perAPI.removePermissions(uf);
     
      InodeFactory.deleteInode(uf);
      HibernateUtil.flush();
      HibernateUtil.closeSession();
      SessionMessages.add(req, "message", "message.userfilter.success.delete");
    }
    else {
      SessionMessages.add(req, "error", "message.userfilter.error.delete");
    }

  }
  private void _retrieveProperties(ActionRequest req,  ActionResponse res, PortletConfig config, ActionForm form)
  throws Exception {

    Properties properties = new Properties();
 
    try {
      //Loading properties file
 
            String filePath = Thread.currentThread().getContextClassLoader().getResource("user_manager_config.properties").getPath();
      BufferedInputStream is = new BufferedInputStream(new FileInputStream(filePath));
 
      if (is != null) {
        properties.load(is);
      }
      is.close();
    } catch (Exception e) {
      Logger.error(this, "Could not load this file = user_manager_config.properties", e);
    }
 
    PortletSession sess = req.getPortletSession();
    req.setAttribute(WebKeys.USERMANAGER_PROPERTIES, properties);
    sess.setAttribute(WebKeys.USERMANAGER_PROPERTIES, properties);
  }

}
TOP

Related Classes of com.dotmarketing.portlets.userfilter.action.EditUserFilterAction

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.