Package com.dotmarketing.portlets.report.action

Source Code of com.dotmarketing.portlets.report.action.ViewReportsAction

/**
* Copyright (c) 2000-2004 Liferay, LLC. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

package com.dotmarketing.portlets.report.action;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

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.RenderRequest;
import com.dotcms.repackage.javax.portlet.RenderResponse;
import com.dotcms.repackage.javax.portlet.WindowState;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;

import com.dotcms.repackage.org.apache.struts.action.ActionForm;
import com.dotcms.repackage.org.apache.struts.action.ActionForward;
import com.dotcms.repackage.org.apache.struts.action.ActionMapping;

import com.dotmarketing.beans.Permission;
import com.dotmarketing.beans.PermissionAsset;
import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.PermissionAPI;
import com.dotmarketing.business.Role;
import com.dotmarketing.db.HibernateUtil;
import com.dotmarketing.exception.DotHibernateException;
import com.dotmarketing.portal.struts.DotPortletAction;
import com.dotmarketing.portlets.report.factories.ReportFactory;
import com.dotmarketing.portlets.report.factories.ReportParameterFactory;
import com.dotmarketing.portlets.report.model.Report;
import com.dotmarketing.portlets.webforms.factories.WebFormFactory;
import com.dotmarketing.util.Config;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.UtilMethods;
import com.dotmarketing.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.util.Constants;
import com.liferay.portlet.ActionRequestImpl;
import com.liferay.util.FileUtil;
import com.liferay.util.servlet.SessionMessages;

/**
*
* @author  Jason Tesser
*
*/
public class ViewReportsAction extends DotPortletAction {

  public static final String REPORT_EDITOR_OR_ADMIN = "hasEditorOrAdmin";
  private static PermissionAPI permissionAPI;
 
  static {
    permissionAPI = APILocator.getPermissionAPI();
  }
 
  /*
   * Render View Report Portlet
   * @see com.liferay.portal.struts.PortletAction#render(com.dotcms.repackage.org.apache.struts.action.ActionMapping, com.dotcms.repackage.org.apache.struts.action.ActionForm, com.dotcms.repackage.javax.portlet.PortletConfig, com.dotcms.repackage.javax.portlet.RenderRequest, com.dotcms.repackage.javax.portlet.RenderResponse)
   */
  public ActionForward render(
      ActionMapping mapping, ActionForm form, PortletConfig config,
      RenderRequest req, RenderResponse res)
    throws Exception {

        Logger.debug(this, "Running ViewReportsAction!!!!");

    try {
      String[] formTypes = WebFormFactory.getWebFormsTypes();
      ArrayList<PermissionAsset> pas = ReportFactory.getAllReports();
      Report report, newReport;
//      User user = PublicUserFactory.getDefaultUser();
//      List<Role> userRoles;
      Permission permission;
      boolean reportExists;
      for (String formType: formTypes) {
        reportExists = false;
        for (PermissionAsset asset: pas) {
          report = (Report) asset.getAsset();
          if (formType.equals(report.getReportName()) && report.isWebFormReport()) {
            reportExists = true;
            break;
          }
        }
        if (!reportExists) {
          newReport = new Report();
          newReport.setReportName(formType);
          newReport.setReportDescription(formType);
          newReport.setDs("None");
          newReport.setWebFormReport(true);
          ReportFactory.saveReport(newReport);
          /*
          userRoles = com.dotmarketing.business.APILocator.getRoleAPI().addRoleToUser(user.getUserId());
          for (Role role: userRoles) {
            permission = new Permission(newReport.getInode(), Long.parseLong(role.getId()), permissionAPI.PERMISSION_READ);
            permissionAPI.save(permission);
            permission = new Permission(newReport.getInode(), Long.parseLong(role.getId()), permissionAPI.PERMISSION_USE);
            permissionAPI.save(permission);
            permission = new Permission(newReport.getInode(), Long.parseLong(role.getId()), permissionAPI.PERMISSION_WRITE);
            permissionAPI.save(permission);
            permission = new Permission(newReport.getInode(), Long.parseLong(role.getId()), permissionAPI.PERMISSION_EDIT);
            permissionAPI.save(permission);
            permission = new Permission(newReport.getInode(), Long.parseLong(role.getId()), permissionAPI.PERMISSION_PUBLISH);
            permissionAPI.save(permission);
          }
          */
         
          User systemUser = APILocator.getUserAPI().getSystemUser();
          //Role role = APILocator.getRoleAPI().loadRoleByKey("Report Administrator");
          /*
          permission = new Permission(newReport.getInode(), role.getId(), permissionAPI.PERMISSION_READ);
          permissionAPI.save(permission, newReport, systemUser, false);
          permission = new Permission(newReport.getInode(), role.getId(), permissionAPI.PERMISSION_USE);
          permissionAPI.save(permission, newReport, systemUser, false);
          permission = new Permission(newReport.getInode(), role.getId(), permissionAPI.PERMISSION_WRITE);
          permissionAPI.save(permission, newReport, systemUser, false);
          permission = new Permission(newReport.getInode(), role.getId(), permissionAPI.PERMISSION_EDIT);
          permissionAPI.save(permission, newReport, systemUser, false);
          permission = new Permission(newReport.getInode(), role.getId(), permissionAPI.PERMISSION_PUBLISH);
          permissionAPI.save(permission, newReport, systemUser, false);
          */
        }
      }
     
      User user = _getUser(req);
      pas = ReportFactory.getAllReports(user);
      req.setAttribute(WebKeys.Report.ReportList,pas);

      List<Role> roles = com.dotmarketing.business.APILocator.getRoleAPI().loadRolesForUser(user.getUserId());
      req.setAttribute(ViewReportsAction.REPORT_EDITOR_OR_ADMIN, false);
      for (Role role : roles) {
        if(role.getName().equals("Report Administrator") || role.getName().equals("Report Editor") || role.getName().equals("CMS Administrator")){
          req.setAttribute(ViewReportsAction.REPORT_EDITOR_OR_ADMIN, true);
          break;
        }
      }

      if (req.getWindowState().equals(WindowState.NORMAL)) {
        return mapping.findForward("portlet.ext.report.view");
      }
      return mapping.findForward("portlet.ext.report.view_reports");
    }
    catch (Exception e) {
      req.setAttribute(PageContext.EXCEPTION, e);
      return mapping.findForward(Constants.COMMON_ERROR);
    }
  }
 
  /*
   * Process View Portlet requested actions
   * @see com.liferay.portal.struts.PortletAction#processAction(com.dotcms.repackage.org.apache.struts.action.ActionMapping, com.dotcms.repackage.org.apache.struts.action.ActionForm, com.dotcms.repackage.javax.portlet.PortletConfig, com.dotcms.repackage.javax.portlet.ActionRequest, com.dotcms.repackage.javax.portlet.ActionResponse)
   */
  @Override
  public void processAction(ActionMapping mapping, ActionForm form, PortletConfig config, ActionRequest req, ActionResponse res)throws DotHibernateException  {
    ActionRequestImpl reqImpl = (ActionRequestImpl) req;
    HttpServletRequest httpReq = reqImpl.getHttpServletRequest();
    String cmd = req.getParameter(Constants.CMD);
        Logger.debug(this, "Inside ViewReportAction cmd=" + cmd);


        if ((cmd != null) && cmd.equals(Constants.DELETE)) {
        ArrayList<String> adminRoles = new ArrayList<String>();
        adminRoles.add("CMS Administrator");
        String reportToDeleteId = req.getParameter("reportToDelete");
        String[] reportIds = null;
        if (UtilMethods.isSet(req.getParameter("reportsToDelete"))) {
          if (req.getParameter("reportsToDelete") instanceof String)
            reportIds = req.getParameter("reportsToDelete").split(",");
          else
            reportIds = req.getParameterValues("reportsToDelete");
        }
            if(reportIds != null){
              for (String reportId : reportIds) {
                try{
                  Report report = ReportFactory.getReport(reportId);
                  _checkDeletePermissions(report, _getUser(req), httpReq, adminRoles);
                  deleteReport(report);
                }catch(Exception ex){
                  HibernateUtil.rollbackTransaction();
                  SessionMessages.add(req,"error", "message.report.delete.error");
                  Logger.error(this, "Problem Deleting Report with inode " + reportId, ex);
                }
          }
            }else if(reportToDeleteId != null){
              try{
                Report report = ReportFactory.getReport(reportToDeleteId);
                _checkDeletePermissions(report, _getUser(req), httpReq, adminRoles);
                deleteReport(report);
              }catch(Exception ex){
                HibernateUtil.rollbackTransaction();
                SessionMessages.add(req,"error", "message.report.delete.error");
                Logger.error(this, "Problem Deleting Report with inode " + reportToDeleteId, ex);
              }
            }else{
              SessionMessages.add(req,"error", "message.report.delete.error");
            }
//          }
        }
  }
 
  /*
   * Delete a seleted report
   * @param    report Report to delete
   * @exception  Exception
   */
  private void deleteReport(Report report) throws Exception{
        File f;
        String jrxmlPath;
        String jasperPath;
    HibernateUtil.startTransaction();
    PermissionAPI perAPI = APILocator.getPermissionAPI();
    perAPI.removePermissions(report);
      ReportFactory.deleteReport(report);     
      ReportParameterFactory.deleteReportsParameters(report);           
      WebFormFactory.removeWebFormsByType(report.getReportName());
      if (UtilMethods.isSet(Config.getStringProperty("ASSET_REAL_PATH"))) {
        jrxmlPath = Config.getStringProperty("ASSET_REAL_PATH") + File.separator + Config.getStringProperty("REPORT_PATH") + File.separator + report.getInode() + ".jrxml";
        jasperPath = Config.getStringProperty("ASSET_REAL_PATH") + File.separator + Config.getStringProperty("REPORT_PATH") + File.separator + report.getInode() + ".jasper";
      } else {
        jrxmlPath = FileUtil.getRealPath(File.separator + Config.getStringProperty("ASSET_PATH") + File.separator + Config.getStringProperty("REPORT_PATH") + File.separator + report.getInode() + ".jrxml");
        jasperPath = FileUtil.getRealPath(File.separator + Config.getStringProperty("ASSET_PATH") + File.separator + Config.getStringProperty("REPORT_PATH") + File.separator + report.getInode() + ".jasper");
      }
    f = new File(jrxmlPath);
    f.delete();
    f = new File(jasperPath);
    f.delete();
    //Delete the data in the DB if is a webFormReport
    if(report.isWebFormReport())
    {
      String formType = report.getReportName();     
      WebFormFactory.removeWebFormsByType(formType);
    }
      HibernateUtil.commitTransaction();
  }
}
TOP

Related Classes of com.dotmarketing.portlets.report.action.ViewReportsAction

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.