org.opencps.processmgt.portlet.ProcessOrderMenuPortlet.java Source code

Java tutorial

Introduction

Here is the source code for org.opencps.processmgt.portlet.ProcessOrderMenuPortlet.java

Source

/**
 * OpenCPS is the open source Core Public Services software
 * Copyright (C) 2016-present OpenCPS community
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 * 
 * This program 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 Affero General Public License for more details.
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>
 */
package org.opencps.processmgt.portlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletModeException;
import javax.portlet.PortletRequest;
import javax.portlet.PortletURL;
import javax.portlet.WindowStateException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.opencps.processmgt.model.ProcessStep;
import org.opencps.processmgt.service.ProcessOrderLocalServiceUtil;
import org.opencps.processmgt.util.ProcessOrderUtils;
// import org.opencps.processmgt.util.ProcessOrderUtils;
import org.opencps.util.WebKeys;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.json.JSONObject;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.portlet.LiferayPortletMode;
import com.liferay.portal.kernel.portlet.LiferayWindowState;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.HtmlUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.model.User;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.PortletURLFactoryUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

/**
 * @author khoavd
 */
public class ProcessOrderMenuPortlet extends MVCPortlet {

    private Log _log = LogFactoryUtil.getLog(ProcessOrderMenuPortlet.class);

    public void menuAction(ActionRequest actionRequest, ActionResponse actionResponse)
            throws PortalException, SystemException, WindowStateException, PortletModeException, IOException {

        String mvcPath = ParamUtil.getString(actionRequest, "mvcPath");

        String active = ParamUtil.getString(actionRequest, WebKeys.MENU_ACTIVE);

        ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

        PortletURL renderUrl = PortletURLFactoryUtil.create(actionRequest, themeDisplay.getPortletDisplay().getId(),
                themeDisplay.getPlid(), PortletRequest.RENDER_PHASE);

        renderUrl.setWindowState(LiferayWindowState.NORMAL);
        renderUrl.setPortletMode(LiferayPortletMode.VIEW);
        renderUrl.setParameter("mvcPath", mvcPath);

        HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(actionRequest);

        httpRequest.getSession().invalidate();
        httpRequest.getSession().setAttribute(WebKeys.MENU_ACTIVE, active);

        actionResponse.sendRedirect(renderUrl.toString());
    }

    public void menuCounterAction(ActionRequest actionRequest, ActionResponse actionResponse)
            throws PortalException, SystemException {

        Map<String, String> par = new HashMap<String, String>();

        User user = PortalUtil.getUser(actionRequest);

        ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

        long groupId = themeDisplay.getScopeGroupId();

        // now read your parameters, e.g. like this:
        // long someParameter = ParamUtil.getLong(request, "someParameter");

        List<ProcessStep> list = ProcessOrderUtils.getProcessSteps(groupId, user.getRoleIds());

        long counterVal = 1;

        for (ProcessStep item : list) {

            counterVal = ProcessOrderLocalServiceUtil.countProcessOrder(0l, item.getProcessStepId(), 0, 0);

            par.put("badge_" + item.getProcessStepId(), String.valueOf(counterVal));

            counterVal = ProcessOrderLocalServiceUtil.countProcessOrder(0l, item.getProcessStepId(),
                    themeDisplay.getUserId(), 0);

            par.put("badge_" + item.getProcessStepId(), String.valueOf(counterVal));

        }

        ajaxReturn(actionRequest, actionResponse, par);
    }

    private void ajaxReturn(ActionRequest actionRequest, ActionResponse actionResponse, Map<String, String> par) {

        try {

            HttpServletResponse httpResponse = PortalUtil.getHttpServletResponse(actionResponse);

            httpResponse.setContentType("text");

            JSONObject payloadJSON = JSONFactoryUtil.createJSONObject();

            for (Map.Entry<String, String> entry : par.entrySet()) {

                payloadJSON.put(entry.getKey(), HtmlUtil.escape(entry.getValue()));

            }

            httpResponse.getWriter().print(payloadJSON.toString());
            httpResponse.flushBuffer();

            SessionMessages.add(actionRequest,
                    PortalUtil.getPortletId(actionRequest) + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE);
            SessionMessages.add(actionRequest, PortalUtil.getPortletId(actionRequest)
                    + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_SUCCESS_MESSAGE);

        } catch (Exception e) {
            _log.error(e);
        }
    }
}