it.webscience.kpeople.web.portlet.report.action.ViewAction.java Source code

Java tutorial

Introduction

Here is the source code for it.webscience.kpeople.web.portlet.report.action.ViewAction.java

Source

/**
 * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved. This library is
 * free software; you can redistribute it and/or modify it under the terms of
 * the GNU Lesser General Public License as published by the Free Software
 * Foundation; either version 2.1 of the License, or (at your option) any later
 * version. This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
 * for more details.
 */

package it.webscience.kpeople.web.portlet.report.action;

import it.webscience.kpeople.event.login.KpeopleUserUtil;
import it.webscience.kpeople.service.cross.UserServiceStub;
import it.webscience.kpeople.service.cross.UserServiceStub.User;
import it.webscience.kpeople.service.process.ProcessServiceStub;
import it.webscience.kpeople.service.process.ProcessServiceStub.Process;
import it.webscience.kpeople.service.processType.ProcessTypeServiceStub;
import it.webscience.kpeople.service.processType.ProcessTypeServiceStub.ProcessType;
import it.webscience.kpeople.util.KpeoplePortletConfigurationUtil;
import it.webscience.kpeople.util.PropsKeys;
import it.webscience.kpeople.util.StubUtil;

import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.JavaConstants;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;

/**
 * @author Brian Wing Shun Chan
 */
public class ViewAction extends Action {

    /** logger. */
    private static Log logger = LogFactoryUtil.getLog(ViewAction.class);

    private int currUserId;

    /**
     * <p>
     * Process the specified non-HTTP request, and create the corresponding
     * non-HTTP response (or forward to another web component that will create
     * it), with provision for handling exceptions thrown by the business logic.
     * @param mapping
     *            The ActionMapping used to select this instance
     * @param form
     *            The optional ActionForm bean for this request (if any)
     * @param req
     *            The non-HTTP request we are processing
     * @param res
     *            The non-HTTP response we are creating
     * @exception Exception
     *                if the application business logic throws an exception.
     * @return action forward
     */
    @Override
    public final ActionForward execute(final ActionMapping mapping, final ActionForm form,
            final HttpServletRequest req, final HttpServletResponse res) throws Exception {

        return this.render(mapping, form, req, res);
    }

    /**
     * metodo render.
     * @param mapping
     *            The ActionMapping used to select this instance
     * @param form
     *            The optional ActionForm bean for this request (if any)
     * @param req
     *            The non-HTTP request we are processing
     * @param res
     *            The non-HTTP response we are creating
     * @return action forward
     * @throws SystemException
     * @throws PortalException
     */
    private ActionForward render(final ActionMapping mapping, final ActionForm form, final HttpServletRequest req,
            final HttpServletResponse res) throws PortalException, SystemException {

        String src = getSrc(req);

        String hpmUserId = KpeopleUserUtil.getCurrUserHpmId(req);
        currUserId = KpeopleUserUtil.getCurrUserId(req);

        String hpmProcessId = ParamUtil.getString(req, "processId");

        PortletRequest aReq = (PortletRequest) req.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST);

        PortletPreferences preferences = aReq.getPreferences();

        String widthChart = preferences.getValue("widthChart", "");
        String heightChart = preferences.getValue("heightChart", "");

        String actionValue = preferences.getValue("reportType",
                ReportBrowserConstants.CHART_COMMUNICAZIONI_DESTINATARIO);

        if (actionValue.equalsIgnoreCase(ReportBrowserConstants.CHART_COMMUNICAZIONI_DESTINATARIO)
                || actionValue.equalsIgnoreCase(ReportBrowserConstants.CHART_COMMUNICAZIONI_MITTENTE)) {

            try {

                popolaForm(req);

                String ordinaPerRadio = ParamUtil.getString(req, ReportBrowserConstants.ORDINA_PER_RADIO);
                String idProcessType = null;
                if (Validator.isNotNull(ordinaPerRadio)) {
                    if (ordinaPerRadio.equals(ReportBrowserConstants.FILTER_BY_TYPE)) {
                        idProcessType = ParamUtil.getString(req, ReportBrowserConstants.TYPE);
                        if (idProcessType.equals(ReportBrowserConstants.ALL)) {
                            idProcessType = null;
                        }
                    }

                    if (ordinaPerRadio.equals(ReportBrowserConstants.FILTER_BY_PROCESS)) {
                        hpmProcessId = ParamUtil.getString(req, ReportBrowserConstants.PROCESS);
                        if (hpmProcessId.equals(ReportBrowserConstants.ALL)) {
                            hpmProcessId = null;
                        }

                    }

                    hpmUserId = ParamUtil.getString(req, ReportBrowserConstants.USER);

                }
                src += actionValue + "&nameUser=" + hpmUserId;
                if (Validator.isNotNull(hpmProcessId)) {
                    src += "&hpmProcessId=" + hpmProcessId;
                }

                if (Validator.isNotNull(idProcessType)) {
                    src += "&idProcessType=" + idProcessType;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

        if (actionValue.equalsIgnoreCase(ReportBrowserConstants.KPI_PROCESS_XACTION)) {

            if (Validator.isNotNull(ParamUtil.getString(req, ReportBrowserConstants.FILTER_BY_KPI))) {
                src += ParamUtil.getString(req, ReportBrowserConstants.FILTER_BY_KPI);
            } else {
                src += actionValue;
            }
        }

        if (actionValue.equalsIgnoreCase(ReportBrowserConstants.PIVOT_PROCESS_XACTION)
                || actionValue.equalsIgnoreCase(ReportBrowserConstants.PIVOT_COMMUNICATION_XACTION)) {
            src += actionValue;
            src += "&userid=anonym&password=anonym";
        }

        if (Validator.isNotNull(widthChart)) {
            src += "&widthChart=" + widthChart;
        }

        if (Validator.isNotNull(heightChart)) {
            src += "&heightChart=" + heightChart;
        }

        if (logger.isDebugEnabled()) {
            logger.debug("REPORT render src param: " + src);
        }

        req.setAttribute("REPORT_SRC", src);

        if (logger.isInfoEnabled()) {
            logger.info("REPORT render src: " + src);
        }
        return mapping.findForward("/report/view");
    }

    private void popolaForm(HttpServletRequest req) throws Exception {

        ProcessTypeServiceStub.ProcessType[] processTypes = (ProcessType[]) req.getSession()
                .getAttribute("processTypes");

        if (Validator.isNull(processTypes)) {
            setProcessTypes(req);
        }

        Process[] processes = (Process[]) req.getSession()
                .getAttribute(ReportBrowserConstants.ATTR_PROCESSES_FOUND);
        if (Validator.isNull(processes)) {
            getAllProcess(req);
        }

        UserServiceStub.User[] users = (User[]) req.getSession().getAttribute(ReportBrowserConstants.ALL_USERS);

        if (Validator.isNull(users)) {
            getAllUsers(req);
        }

    }

    /**
     * metodo che legge il src dalle preferences.
     * @param HttpServletRequest
     *            the portlet renderRequest
     * @return string src
     */
    protected final String getSrc(final HttpServletRequest req) {

        String src = new KpeoplePortletConfigurationUtil().getBiSrc();

        return src;
    }

    private void setProcessTypes(final HttpServletRequest req) throws Exception {

        String targetEndpoint = new StubUtil().buildTarget(PropsKeys.WSO2SERVER_SERVICE_PROCESS_TYPE_ENDPOINT);

        // chiamata al web service: recupero dei tipi di processo
        int idUser = currUserId;
        ProcessTypeServiceStub.User ptUser = new ProcessTypeServiceStub.User();
        ptUser.setIdUser(idUser);

        ProcessTypeServiceStub.GetProcessTypes processTypeSend = new ProcessTypeServiceStub.GetProcessTypes();
        processTypeSend.setUser(ptUser);
        ProcessTypeServiceStub.ProcessType[] processTypes = new ProcessTypeServiceStub(targetEndpoint)
                .getProcessTypes(processTypeSend).get_return();
        //req.setAttribute("processTypes", processTypes);
        req.getSession().setAttribute("processTypes", processTypes);
    }

    private void getAllProcess(final HttpServletRequest req) throws Exception {

        String targetEndpoint = new StubUtil().buildTarget(PropsKeys.WSO2SERVER_SERVICE_PROCESS_ENDPOINT);

        int idUser = currUserId;
        Process[] results = null;

        ProcessServiceStub.User psUser = new ProcessServiceStub.User();
        psUser.setIdUser(idUser);

        String freeText = "";

        ProcessServiceStub.FindProcesses findProcess = new ProcessServiceStub.FindProcesses();

        ProcessServiceStub.ProcessFilter filter = new ProcessServiceStub.ProcessFilter();
        filter.setFreeText(freeText);

        /** ordinamento default nel caso di ricerca semplice */
        filter.setSort(new ProcessServiceStub.SortCriteria());
        filter.getSort().setFieldName("ORDER_BY_LAST_UPDATE");
        filter.getSort().setOrder("DESC");

        findProcess.setFilter(filter);
        findProcess.setUser(psUser);

        ProcessServiceStub stub = new ProcessServiceStub(targetEndpoint);
        ProcessServiceStub.FindProcessesResponse response = stub.findProcesses(findProcess);

        if (logger.isDebugEnabled()) {
            logger.debug("Ricerca semplice. Filter: " + filter);
            logger.debug("Processi trovati: " + response.get_return().length);
        }

        results = response.get_return();
        //req.setAttribute(ReportBrowserConstants.ATTR_PROCESSES_FOUND, results);
        req.getSession().setAttribute(ReportBrowserConstants.ATTR_PROCESSES_FOUND, results);
    }

    /**
     * Chiama il servizio per il recupero degli utenti da LDAP.
     * @return elenco utenti
     * @throws Exception eccezione durante la chiamata del servizio
     */
    private void getAllUsers(final HttpServletRequest req) throws Exception {
        String targetEndpoint = new StubUtil().buildTarget(PropsKeys.WSO2SERVER_SERVICE_USER_ENDPOINT);

        UserServiceStub userStub = new UserServiceStub(targetEndpoint);

        UserServiceStub.GetUserByUsername sendParameter = new UserServiceStub.GetUserByUsername();
        sendParameter.setUser(new UserServiceStub.User());

        UserServiceStub.GetUserByUsernameResponse response = userStub.getUserByUsername(sendParameter);
        UserServiceStub.User[] users = response.get_return();

        req.getSession().setAttribute(ReportBrowserConstants.ALL_USERS, users);

    }
}