org.xmlportletfactory.olafk.customer.InvoicesPortlet.java Source code

Java tutorial

Introduction

Here is the source code for org.xmlportletfactory.olafk.customer.InvoicesPortlet.java

Source

/**
 *     Copyright (C) 2009-2014  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.olafk.customer;

import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
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.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;

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.portlet.PortletRequest;
import javax.portlet.PortletConfig;
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.apache.poi.ss.usermodel.Workbook;
import com.liferay.portal.kernel.servlet.HttpHeaders;

import com.liferay.portal.kernel.dao.search.SearchContainer;

import org.xmlportletfactory.olafk.customer.model.Invoices;
import org.xmlportletfactory.olafk.customer.model.impl.InvoicesImpl;
import org.xmlportletfactory.olafk.customer.service.InvoicesLocalServiceUtil;
import org.xmlportletfactory.olafk.customer.service.permission.InvoicesPermission;
import org.xmlportletfactory.olafk.customer.service.permission.InvoicesEntryPermission;

import org.xmlportletfactory.olafk.customer.service.CustomerLocalServiceUtil;
import org.xmlportletfactory.olafk.customer.model.Customer;

import org.xmlportletfactory.olafk.customer.util.InvoicesUtil;

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.search.Document;
import com.liferay.portal.kernel.search.Field;
import com.liferay.portal.kernel.search.Hits;
import com.liferay.portal.kernel.search.Indexer;
import com.liferay.portal.kernel.search.IndexerRegistryUtil;
import com.liferay.portal.kernel.search.SearchContext;
import com.liferay.portal.kernel.search.SearchContextFactory;
import com.liferay.portal.kernel.util.JavaConstants;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.GetterUtil;
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.security.permission.ActionKeys;
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.portal.util.PortalUtil;
import com.liferay.portlet.PortalPreferences;
import com.liferay.portlet.PortletPreferencesFactoryUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

/**
 * Portlet implementation class Invoices
 */
public class InvoicesPortlet 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 Invoices
        editinvoicesJSP = getInitParameter("edit-invoices-jsp");

        // View Mode Entry Invoices
        viewinvoicesJSP = getInitParameter("view-invoices-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("editInvoices")) {
            try {
                showViewEditInvoices(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);
    }

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

        include(helpJSP, renderRequest, renderResponse);
    }

    @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 = InvoicesPermission.contains(permissionChecker, groupId, "ADD_INVOICES");

        boolean hasModelPermissions = InvoicesPermission.contains(permissionChecker, groupId,
                ActionKeys.PERMISSIONS);

        List<Invoices> tempResults = Collections.EMPTY_LIST;

        PortletPreferences prefs = renderRequest.getPreferences();

        String invoicesFilter = ParamUtil.getString(renderRequest, "invoicesFilter");

        String rowsPerPage = prefs.getValue("rows-per-page", "5");
        String viewType = prefs.getValue("view-type", "0");

        Integer cur = 1;
        int containerStart = 0;
        int containerEnd = 0;
        String orderByType = renderRequest.getParameter("orderByType");
        String orderByCol = renderRequest.getParameter("orderByCol");
        try {
            cur = ParamUtil.getInteger(renderRequest, "cur");

        } catch (Exception e) {
            cur = 1;
        }

        if (cur < 1) {
            cur = 1;
        }

        if (Validator.isNotNull(invoicesFilter) || !invoicesFilter.equalsIgnoreCase("")) {
            rowsPerPage = "100";
            cur = 1;
        }

        containerStart = (cur - 1) * Integer.parseInt(rowsPerPage);
        containerEnd = containerStart + Integer.parseInt(rowsPerPage);

        int total = 0;
        long customerId = 0;
        String customerIdStr = renderRequest.getPortletSession().getAttribute("customerId") + "";

        try {
            Customer customer = CustomerLocalServiceUtil.fetchCustomer(Long.parseLong(customerIdStr));
            if (!customerIdStr.trim().equalsIgnoreCase("") && Validator.isNotNull(customer)) {
                customerId = Long.parseLong(customerIdStr);
            }
        } catch (Exception e) {
            customerId = 0;
        }

        try {
            OrderByComparator comparator = InvoicesComparator.getInvoicesOrderByComparator(orderByCol, orderByType);
            tempResults = InvoicesLocalServiceUtil.findAllIncustomerIdGroup(customerId, groupId, comparator);
        } catch (Exception e) {
            _log.debug(e);
        }
        if (customerId == 0) {
            hasAddPermission = false;
        } else {
            renderRequest.getPortletSession().setAttribute("INVOICEScustomerId", customerId);
        }
        renderRequest.setAttribute("highlightRowWithKey", renderRequest.getParameter("highlightRowWithKey"));
        renderRequest.setAttribute("containerStart", containerStart);
        renderRequest.setAttribute("containerEnd", containerEnd);
        renderRequest.setAttribute("cur", cur);
        renderRequest.setAttribute("tempResults", tempResults);
        renderRequest.setAttribute("totalCount", total);
        renderRequest.setAttribute("rowsPerPage", rowsPerPage);
        renderRequest.setAttribute("hasAddPermission", hasAddPermission);
        renderRequest.setAttribute("hasModelPermissions", hasModelPermissions);
        renderRequest.setAttribute("orderByType", orderByType);
        renderRequest.setAttribute("orderByCol", orderByCol);
        renderRequest.setAttribute("invoicesFilter", invoicesFilter);

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

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

        include(viewJSP, renderRequest, renderResponse);
    }

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

        ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
        PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

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

        Invoices invoices = null;
        boolean viewEntryMode = false;
        if (editType.equalsIgnoreCase("edit")) {

            editInvoicesURL.setParameter("javax.portlet.action", "updateInvoices");

            long $fname = Long.parseLong(renderRequest.getParameter("invoiceId"));
            invoices = InvoicesLocalServiceUtil.getInvoices($fname);

            if (!InvoicesEntryPermission.contains(permissionChecker, invoices, ActionKeys.UPDATE)) {
                SessionErrors.add(renderRequest, "permission-error");
                return;
            }

            renderRequest.setAttribute("invoices", invoices);
        } else if (editType.equalsIgnoreCase("view")) {

            viewEntryMode = true;

            long $fname = Long.parseLong(renderRequest.getParameter("invoiceId"));
            invoices = InvoicesLocalServiceUtil.getInvoices($fname);

            if (!InvoicesEntryPermission.contains(permissionChecker, invoices, ActionKeys.VIEW)) {
                SessionErrors.add(renderRequest, "permission-error");
                return;
            }

            renderRequest.setAttribute("invoices", invoices);
        } else {

            if (!InvoicesPermission.contains(permissionChecker, themeDisplay.getScopeGroupId(), "ADD_INVOICES")) {
                SessionErrors.add(renderRequest, "permission-error");
                return;
            }

            editInvoicesURL.setParameter("javax.portlet.action", "addInvoices");
            Invoices errorInvoices = (Invoices) renderRequest.getAttribute("errorInvoices");
            if (errorInvoices != null) {
                if (editType.equalsIgnoreCase("update")) {
                    editInvoicesURL.setParameter("javax.portlet.action", "updateInvoices");
                }
                renderRequest.setAttribute("invoices", errorInvoices);

            } else {

                Invoices addInvoices = null;

                if (Validator.isNull(renderRequest.getParameter("addErrors"))) {

                    addInvoices = new InvoicesImpl();
                    addInvoices.setInvoiceId(0);
                    addInvoices.setCustomerId(
                            (Long) renderRequest.getPortletSession().getAttribute("INVOICEScustomerId"));
                    addInvoices.setDate(new Date());
                    addInvoices.setAmount(0);
                    addInvoices.setPaid(true);
                    String customerIdStr = (String) renderRequest.getPortletSession().getAttribute("claseId");
                    renderRequest.setAttribute("customerId", customerIdStr);
                } else {
                    addInvoices = InvoicesFromRequest(renderRequest);
                }
                renderRequest.setAttribute("invoices", addInvoices);
            }

        }

        renderRequest.setAttribute("editType", editType);

        if (!viewEntryMode) {
            renderRequest.setAttribute("editInvoicesURL", editInvoicesURL.toString());
            include(editinvoicesJSP, renderRequest, renderResponse);
        } else {
            include(viewinvoicesJSP, 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("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 = "newInvoices")
    public void newInvoices(ActionRequest request, ActionResponse response) throws Exception {
        InvoicesUtil.addParametersForAdd(response);
    }

    @ProcessAction(name = "addInvoices")
    public void addInvoices(ActionRequest request, ActionResponse response) throws Exception {
        Invoices invoices = InvoicesFromRequest(request);
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

        if (!InvoicesPermission.contains(permissionChecker, themeDisplay.getScopeGroupId(), "ADD_INVOICES")) {
            InvoicesUtil.addParametersForDefaultView(response);
            SessionErrors.add(request, "permission-error");
            return;
        }
        ArrayList<String> errors = InvoicesValidator.validateInvoices(invoices, request);

        if (errors.isEmpty()) {
            try {
                ServiceContext serviceContext = ServiceContextFactory.getInstance(Invoices.class.getName(),
                        request);
                InvoicesLocalServiceUtil.addInvoices(invoices, serviceContext);

                InvoicesUtil.addParametersForDefaultView(response);
                SessionMessages.add(request, "invoices-added-successfully");

            } catch (Exception cvex) {
                SessionErrors.add(request, "please-enter-a-unique-code");
                PortalUtil.copyRequestParameters(request, response);
                InvoicesUtil.addParametersForAddWithErrors(response);
            }
        } else {
            for (String error : errors) {
                SessionErrors.add(request, error);
            }
            PortalUtil.copyRequestParameters(request, response);
            InvoicesUtil.addParametersForAddWithErrors(response);
        }
    }

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

    @ProcessAction(name = "editInvoices")

    public void editInvoices(ActionRequest request, ActionResponse response) throws Exception {
        long key = ParamUtil.getLong(request, "resourcePrimKey");
        if (Validator.isNotNull(key)) {
            InvoicesUtil.addParametersForEdit(response, key);

        }
    }

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

        long id = ParamUtil.getLong(request, "resourcePrimKey");

        if (Validator.isNotNull(id)) {
            ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
            PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

            if (!InvoicesEntryPermission.contains(permissionChecker, id, ActionKeys.DELETE)) {
                InvoicesUtil.addParametersForDefaultView(response);
                SessionErrors.add(request, "permission-error");
                return;
            }

            Invoices invoices = InvoicesLocalServiceUtil.getInvoices(id);
            InvoicesLocalServiceUtil.deleteInvoicesEntry(invoices);
            SessionMessages.add(request, "invoices-deleted-successfully");
            response.setRenderParameter("invoiceId", "0");
        } else {
            SessionErrors.add(request, "invoices-error-deleting");
        }
    }

    @ProcessAction(name = "updateInvoices")
    public void updateInvoices(ActionRequest request, ActionResponse response) throws Exception {
        Invoices invoices = InvoicesFromRequest(request);
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

        if (!InvoicesEntryPermission.contains(permissionChecker, invoices, ActionKeys.UPDATE)) {
            InvoicesUtil.addParametersForDefaultView(response);
            SessionErrors.add(request, "permission-error");
            return;
        }

        ArrayList<String> errors = InvoicesValidator.validateInvoices(invoices, request);

        if (errors.isEmpty()) {
            try {
                ServiceContext serviceContext = ServiceContextFactory.getInstance(Invoices.class.getName(),
                        request);
                InvoicesLocalServiceUtil.updateInvoices(invoices, serviceContext);

                InvoicesUtil.addParametersForDefaultView(response);
                SessionMessages.add(request, "invoices-updated-successfully");

            } catch (Exception cvex) {
                SessionErrors.add(request, "please-enter-a-unique-code");
                InvoicesUtil.addParametersForEdit(response, null);
                request.setAttribute("invoices", invoices);
            }
        } else {
            for (String error : errors) {
                SessionErrors.add(request, error);
            }
            InvoicesUtil.addParametersForEdit(response, Long.toString(invoices.getPrimaryKey()));
            request.setAttribute("invoices", invoices);
        }
    }

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

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

        ArrayList<String> errors = new ArrayList();
        if (InvoicesValidator.validateEditInvoices(rowsPerPage, dateFormat, datetimeFormat, errors)) {
            response.setRenderParameter("rows-per-page", "");
            response.setRenderParameter("date-format", "");
            response.setRenderParameter("datetime-format", "");
            response.setRenderParameter("view-type", "");

            PortletPreferences prefs = request.getPreferences();

            prefs.setValue("rows-per-page", rowsPerPage);
            prefs.setValue("view-type", viewType);
            prefs.setValue("date-format", dateFormat);
            prefs.setValue("datetime-format", datetimeFormat);
            prefs.store();

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

    private Invoices InvoicesFromRequest(PortletRequest request) {
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        InvoicesImpl invoices = new InvoicesImpl();
        try {
            invoices.setInvoiceId(ParamUtil.getLong(request, "invoiceId"));
        } catch (Exception nfe) {
            //Controled en Validator
        }
        try {
            invoices.setCustomerId(ParamUtil.getLong(request, "customerId"));
        } catch (Exception nfe) {
            //Controled en Validator
        }
        PortletPreferences prefs = request.getPreferences();
        SimpleDateFormat format = new SimpleDateFormat(prefs.getValue("date-format", "yyyy/MM/dd"));
        int dateAno = ParamUtil.getInteger(request, "dateYear");
        int dateMes = ParamUtil.getInteger(request, "dateMonth") + 1;
        int dateDia = ParamUtil.getInteger(request, "dateDay");
        try {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
            invoices.setDate(formatter.parse(dateAno + "/" + dateMes + "/" + dateDia));
        } catch (ParseException e) {
            invoices.setDate(new Date());
        }
        try {
            invoices.setAmount(ParamUtil.getLong(request, "amount"));
        } catch (Exception nfe) {
            //Controled en Validator
        }
        invoices.setPaid(ParamUtil.getBoolean(request, "paid"));
        try {
            invoices.setPrimaryKey(ParamUtil.getLong(request, "resourcePrimKey"));
        } catch (NumberFormatException nfe) {
            //Controled en Validator
        }

        invoices.setCompanyId(themeDisplay.getCompanyId());
        invoices.setGroupId(themeDisplay.getScopeGroupId());
        invoices.setUserId(themeDisplay.getUserId());
        return invoices;
    }

    @ProcessEvent(qname = "{http://liferay.com/events}Customer.customerId")
    public void recieveEvent(EventRequest request, EventResponse response) throws Exception {
        Event event = request.getEvent();
        String customerId = (String) event.getValue();
        request.getPortletSession().setAttribute("customerId", customerId);
        response.setRenderParameter("customerId", customerId);
        QName qNameInvoices = new QName("http://liferay.com/events",
                "Invoices.${detailfile2.getConnectionFieldName()}");
        response.setEvent(qNameInvoices, "0");
    }

    public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse)
            throws PortletException, IOException {
        resourceResponse.setContentType("text/javascript");
        String resourceId = resourceRequest.getResourceID();

        if (Validator.isNotNull(resourceId) && resourceId.length() != 0) {

            if (resourceId.equalsIgnoreCase("exportFullInvoicesResourceURL")) {

                ThemeDisplay themeDisplay = (ThemeDisplay) resourceRequest.getAttribute(WebKeys.THEME_DISPLAY);
                Locale locale = themeDisplay.getLocale();
                PortletConfig portletConfig = (PortletConfig) resourceRequest
                        .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG);

                resourceResponse.setContentType("application/vnd.ms-excel");
                resourceResponse.setProperty("expires", "-1d");
                resourceResponse.setProperty("Pragma", "no-cache");
                resourceResponse.setProperty("Cache-control", "no-cache");
                resourceResponse.addProperty(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\" Invoices\"");

                try {
                    Workbook book = InvoicesExporter.generateFullExcel(themeDisplay.getScopeGroupId(),
                            portletConfig, locale);
                    OutputStream out = resourceResponse.getPortletOutputStream();
                    book.write(out);
                    out.flush();
                    out.close();
                } catch (SystemException e) {
                    e.printStackTrace();
                    throw new PortletException("Export Excel Error", e);
                }
            }

        }
    }

    protected String editinvoicesJSP;
    protected String editJSP;
    protected String helpJSP;
    protected String viewJSP;
    protected String viewinvoicesJSP;

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

}