org.xmlportletfactory.portal.example01.PortletOnePortlet.java Source code

Java tutorial

Introduction

Here is the source code for org.xmlportletfactory.portal.example01.PortletOnePortlet.java

Source

/**
 *     Copyright (C) 2009-2012  Jack A. Rider All rights reserved.
 * 
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) 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 General Public License for more details.
 */

package org.xmlportletfactory.portal.example01;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.ParseException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.Event;
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.PortletURL;
import javax.portlet.ProcessAction;
import javax.portlet.ProcessEvent;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.xml.namespace.QName;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.portlet.PortletFileUpload;
import org.apache.commons.beanutils.BeanComparator;

import org.xmlportletfactory.portal.example01.model.PortletOne;
import org.xmlportletfactory.portal.example01.model.impl.PortletOneImpl;
import org.xmlportletfactory.portal.example01.service.PortletOneLocalServiceUtil;

import com.liferay.portal.kernel.cache.MultiVMPoolUtil;
import com.liferay.portal.kernel.dao.orm.Criterion;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
import com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.json.JSONArray;
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.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.security.permission.PermissionChecker;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.ServiceContextFactory;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.util.bridges.mvc.MVCPortlet;

/**
 * Portlet implementation class PortletOne
 */
public class PortletOnePortlet extends MVCPortlet {

    public void init() throws PortletException {

        // Edit Mode Pages
        editJSP = getInitParameter("edit-jsp");

        // Help Mode Pages
        helpJSP = getInitParameter("help-jsp");

        // View Mode Pages
        viewJSP = getInitParameter("view-jsp");

        // View Mode Edit PortletOne
        editPortletOneJSP = getInitParameter("edit-PortletOne-jsp");
    }

    protected void include(String path, RenderRequest renderRequest, RenderResponse renderResponse)
            throws IOException, PortletException {

        PortletRequestDispatcher portletRequestDispatcher = getPortletContext().getRequestDispatcher(path);

        if (portletRequestDispatcher == null) {
            // do nothing
            // _log.error(path + " is not a valid include");
        } else {
            portletRequestDispatcher.include(renderRequest, renderResponse);
        }
    }

    public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
            throws IOException, PortletException {

        String jsp = (String) renderRequest.getParameter("view");
        if (jsp == null || jsp.equals("")) {
            showViewDefault(renderRequest, renderResponse);
        } else if (jsp.equalsIgnoreCase("editPortletOne")) {
            try {
                showViewEditPortletOne(renderRequest, renderResponse);
            } catch (Exception ex) {
                _log.debug(ex);
                try {
                    showViewDefault(renderRequest, renderResponse);
                } catch (Exception ex1) {
                    _log.debug(ex1);
                }
            }
        }
    }

    public void doEdit(RenderRequest renderRequest, RenderResponse renderResponse)
            throws IOException, PortletException {

        showEditDefault(renderRequest, renderResponse);
        System.out.println("doEdit called");
    }

    public void doHelp(RenderRequest renderRequest, RenderResponse renderResponse)
            throws IOException, PortletException {

        include(helpJSP, renderRequest, renderResponse);
        System.out.println("doHelp called");
    }

    @SuppressWarnings("unchecked")
    public void showViewDefault(RenderRequest renderRequest, RenderResponse renderResponse)
            throws IOException, PortletException {

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

        long groupId = themeDisplay.getScopeGroupId();

        PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

        boolean hasAddPermission = permissionChecker.hasPermission(groupId,
                "org.xmlportletfactory.portal.example01.model", groupId, "ADD_PORTLETONE");

        List<PortletOne> tempResults = Collections.EMPTY_LIST;
        try {
            String orderByType = renderRequest.getParameter("orderByType");
            String orderByCol = renderRequest.getParameter("orderByCol");
            OrderByComparator comparator = PortletOneComparator.getPortletOneOrderByComparator(orderByCol,
                    orderByType);
            MultiVMPoolUtil.clear();

            tempResults = PortletOneLocalServiceUtil.findAllInGroup(groupId, comparator);

        } catch (Exception e) {
            _log.debug(e);
        }
        renderRequest.setAttribute("highlightRowWithKey", renderRequest.getParameter("highlightRowWithKey"));
        renderRequest.setAttribute("containerStart", renderRequest.getParameter("containerStart"));
        renderRequest.setAttribute("containerEnd", renderRequest.getParameter("containerEnd"));
        renderRequest.setAttribute("tempResults", tempResults);
        renderRequest.setAttribute("hasAddPermission", hasAddPermission);

        PortletURL addPortletOneURL = renderResponse.createActionURL();
        addPortletOneURL.setParameter("javax.portlet.action", "newPortletOne");
        renderRequest.setAttribute("addPortletOneURL", addPortletOneURL.toString());

        PortletURL PortletOneFilterURL = renderResponse.createRenderURL();
        PortletOneFilterURL.setParameter("javax.portlet.action", "doView");
        renderRequest.setAttribute("PortletOneFilterURL", PortletOneFilterURL.toString());

        include(viewJSP, renderRequest, renderResponse);
    }

    public void showViewEditPortletOne(RenderRequest renderRequest, RenderResponse renderResponse)
            throws Exception {

        SimpleDateFormat formatDia = new SimpleDateFormat("dd");
        SimpleDateFormat formatMes = new SimpleDateFormat("MM");
        SimpleDateFormat formatAno = new SimpleDateFormat("yyyy");
        SimpleDateFormat formatHora = new SimpleDateFormat("HH");
        SimpleDateFormat formatMinuto = new SimpleDateFormat("mm");

        PortletURL editPortletOneURL = renderResponse.createActionURL();
        String editType = (String) renderRequest.getParameter("editType");

        PortletOne portletOne = null;
        if (editType.equalsIgnoreCase("edit")) {
            editPortletOneURL.setParameter("javax.portlet.action", "updatePortletOne");
            long PortletOneId = Long.parseLong(renderRequest.getParameter("PortletOneId"));
            portletOne = PortletOneLocalServiceUtil.getPortletOne(PortletOneId);
            String PortletOneDescription = portletOne.getPortletOneDescription() + "";
            renderRequest.setAttribute("PortletOneDescription", PortletOneDescription);
            renderRequest.setAttribute("portletOne", portletOne);
        } else {
            editPortletOneURL.setParameter("javax.portlet.action", "addPortletOne");
            PortletOne errorPortletOne = (PortletOne) renderRequest.getAttribute("errorPortletOne");
            if (errorPortletOne != null) {
                if (editType.equalsIgnoreCase("update")) {
                    editPortletOneURL.setParameter("javax.portlet.action", "updatePortletOne");
                }
                renderRequest.setAttribute("portletOne", errorPortletOne);
            } else {
                PortletOneImpl blankPortletOne = new PortletOneImpl();
                blankPortletOne.setPortletOneId(0);
                blankPortletOne.setPortletOneDescription("");
                renderRequest.setAttribute("portletOne", blankPortletOne);
            }

        }

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

        renderRequest.setAttribute("editPortletOneURL", editPortletOneURL.toString());

        include(editPortletOneJSP, renderRequest, renderResponse);
    }

    private String dateToJsp(ActionRequest request, Date date) {
        PortletPreferences prefs = request.getPreferences();
        return dateToJsp(prefs, date);
    }

    private String dateToJsp(RenderRequest request, Date date) {
        PortletPreferences prefs = request.getPreferences();
        return dateToJsp(prefs, date);
    }

    private String dateToJsp(PortletPreferences prefs, Date date) {
        SimpleDateFormat format = new SimpleDateFormat(prefs.getValue("PortletOne-date-format", "yyyy/MM/dd"));
        String stringDate = format.format(date);
        return stringDate;
    }

    private String dateTimeToJsp(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");
        String stringDate = format.format(date);
        return stringDate;
    }

    public void showEditDefault(RenderRequest renderRequest, RenderResponse renderResponse)
            throws PortletException, IOException {

        include(editJSP, renderRequest, renderResponse);
    }

    /* Portlet Actions */

    @ProcessAction(name = "newPortletOne")
    public void newPortletOne(ActionRequest request, ActionResponse response) {
        response.setRenderParameter("view", "editPortletOne");
        response.setRenderParameter("editType", "add");
    }

    @ProcessAction(name = "addPortletOne")
    public void addPortletOne(ActionRequest request, ActionResponse response) throws Exception {
        PortletOne portletOne = PortletOneFromRequest(request);
        ArrayList<String> errors = PortletOneValidator.validatePortletOne(portletOne, request);

        if (errors.isEmpty()) {
            try {
                PortletOneLocalServiceUtil.addPortletOne(portletOne);
                MultiVMPoolUtil.clear();
                response.setRenderParameter("view", "");
                SessionMessages.add(request, "PortletOne-added-successfully");
            } catch (Exception cvex) {
                SessionErrors.add(request, "please-enter-a-unique-code");
                response.setRenderParameter("view", "editPortletOne");
                response.setRenderParameter("editType", "add");
                response.setRenderParameter("PortletOneId", portletOne.getPortletOneId() + "");
                response.setRenderParameter("PortletOneDescription", portletOne.getPortletOneDescription() + "");
            }
        } else {
            for (String error : errors) {
                SessionErrors.add(request, error);
            }
            response.setRenderParameter("view", "editPortletOne");
            response.setRenderParameter("editType", "add");
            response.setRenderParameter("PortletOneId", portletOne.getPortletOneId() + "");
            response.setRenderParameter("PortletOneDescription", portletOne.getPortletOneDescription() + "");
        }
    }

    @ProcessAction(name = "eventPortletOne")
    public void eventPortletOne(ActionRequest request, ActionResponse response) throws Exception {
        long key = ParamUtil.getLong(request, "resourcePrimKey");
        int containerStart = ParamUtil.getInteger(request, "containerStart");
        int containerEnd = ParamUtil.getInteger(request, "containerEnd");
        if (Validator.isNotNull(key)) {
            response.setRenderParameter("highlightRowWithKey", Long.toString(key));
            response.setRenderParameter("containerStart", Integer.toString(containerStart));
            response.setRenderParameter("containerEnd", Integer.toString(containerEnd));
        }
    }

    @ProcessAction(name = "editPortletOne")
    public void editPortletOne(ActionRequest request, ActionResponse response) throws Exception {
        long key = ParamUtil.getLong(request, "resourcePrimKey");
        if (Validator.isNotNull(key)) {
            response.setRenderParameter("PortletOneId", Long.toString(key));
            response.setRenderParameter("view", "editPortletOne");
            response.setRenderParameter("editType", "edit");
        }
    }

    @ProcessAction(name = "deletePortletOne")
    public void deletePortletOne(ActionRequest request, ActionResponse response) throws Exception {
        System.out.println("enter deletePortletOne");
        long id = ParamUtil.getLong(request, "resourcePrimKey");
        if (Validator.isNotNull(id)) {
            PortletOne portletOne = PortletOneLocalServiceUtil.getPortletOne(id);
            PortletOneLocalServiceUtil.deletePortletOne(portletOne);
            MultiVMPoolUtil.clear();
            SessionMessages.add(request, "PortletOne-deleted-successfully");
        } else {
            SessionErrors.add(request, "PortletOne-error-deleting");
        }
        System.out.println("done deletePortletOne");
    }

    @ProcessAction(name = "updatePortletOne")
    public void updatePortletOne(ActionRequest request, ActionResponse response) throws Exception {
        PortletOne portletOne = PortletOneFromRequest(request);
        ArrayList<String> errors = PortletOneValidator.validatePortletOne(portletOne, request);

        if (errors.isEmpty()) {
            try {
                PortletOneLocalServiceUtil.updatePortletOne(portletOne);
                MultiVMPoolUtil.clear();
                response.setRenderParameter("view", "");
                SessionMessages.add(request, "PortletOne-updated-successfully");
            } catch (Exception cvex) {
                SessionErrors.add(request, "please-enter-a-unique-code");
                response.setRenderParameter("view", "editPortletOne");
                response.setRenderParameter("editType", "update");
                response.setRenderParameter("PortletOneId", portletOne.getPortletOneId() + "");
                response.setRenderParameter("PortletOneDescription", portletOne.getPortletOneDescription() + "");
            }
        } else {
            for (String error : errors) {
                SessionErrors.add(request, error);
            }
            response.setRenderParameter("PortletOneId)", Long.toString(portletOne.getPrimaryKey()));
            response.setRenderParameter("view", "editPortletOne");
            response.setRenderParameter("editType", "update");
            response.setRenderParameter("PortletOneId", portletOne.getPortletOneId() + "");
            response.setRenderParameter("PortletOneDescription", portletOne.getPortletOneDescription() + "");
        }
    }

    @ProcessAction(name = "setPortletOnePref")
    public void setPortletOnePref(ActionRequest request, ActionResponse response) throws Exception {

        String rowsPerPage = ParamUtil.getString(request, "PortletOne-rows-per-page");
        String dateFormat = ParamUtil.getString(request, "PortletOne-date-format");
        String datetimeFormat = ParamUtil.getString(request, "PortletOne-datetime-format");

        ArrayList<String> errors = new ArrayList();
        if (PortletOneValidator.validateEditPortletOne(rowsPerPage, dateFormat, datetimeFormat, errors)) {
            response.setRenderParameter("PortletOne-rows-per-page", "");
            response.setRenderParameter("PortletOne-date-format", "");
            response.setRenderParameter("PortletOne-datetime-format", "");

            PortletPreferences prefs = request.getPreferences();
            prefs.setValue("PortletOne-rows-per-page", rowsPerPage);
            prefs.setValue("PortletOne-date-format", dateFormat);
            prefs.setValue("PortletOne-datetime-format", datetimeFormat);
            prefs.store();

            SessionMessages.add(request, "PortletOne-prefs-success");
        }
    }

    private PortletOne PortletOneFromRequest(ActionRequest request) {
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        PortletOneImpl portletOne = new PortletOneImpl();
        try {
            portletOne.setPortletOneId(ParamUtil.getLong(request, "PortletOneId"));
        } catch (Exception nfe) {
            //Controled en Validator
        }
        portletOne.setPortletOneDescription(ParamUtil.getString(request, "PortletOneDescription"));
        try {
            portletOne.setPrimaryKey(ParamUtil.getLong(request, "resourcePrimKey"));
        } catch (NumberFormatException nfe) {
            //Controled en Validator
        }
        portletOne.setCompanyId(themeDisplay.getCompanyId());
        portletOne.setGroupId(themeDisplay.getScopeGroupId());
        portletOne.setUserId(themeDisplay.getUserId());
        return portletOne;
    }

    protected String editPortletOneJSP;
    protected String editJSP;
    protected String helpJSP;
    protected String viewJSP;

    private static Log _log = LogFactoryUtil.getLog(PortletOnePortlet.class);

}