com.liferay.journal.web.internal.display.context.JournalMoveEntriesDisplayContext.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.journal.web.internal.display.context.JournalMoveEntriesDisplayContext.java

Source

/**
 * Copyright (c) 2000-present 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 com.liferay.journal.web.internal.display.context;

import com.liferay.asset.kernel.AssetRendererFactoryRegistryUtil;
import com.liferay.asset.kernel.model.AssetRenderer;
import com.liferay.asset.kernel.model.AssetRendererFactory;
import com.liferay.journal.model.JournalArticle;
import com.liferay.journal.model.JournalFolder;
import com.liferay.journal.service.JournalArticleServiceUtil;
import com.liferay.journal.service.JournalFolderLocalServiceUtil;
import com.liferay.journal.service.JournalFolderServiceUtil;
import com.liferay.journal.service.permission.JournalArticlePermission;
import com.liferay.journal.service.permission.JournalFolderPermission;
import com.liferay.journal.web.asset.JournalArticleAssetRenderer;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.security.permission.PermissionChecker;
import com.liferay.portal.kernel.theme.PortletDisplay;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;

import java.util.ArrayList;
import java.util.List;

import javax.portlet.RenderResponse;

import javax.servlet.http.HttpServletRequest;

/**
 * @author Julio Camarero
 */
public class JournalMoveEntriesDisplayContext {

    public JournalMoveEntriesDisplayContext(LiferayPortletRequest liferayPortletRequest,
            LiferayPortletResponse liferayPortletResponse, String currentURL) throws PortalException {

        _liferayPortletRequest = liferayPortletRequest;
        _liferayPortletResponse = liferayPortletResponse;
        _currentURL = currentURL;

        _servletRequest = PortalUtil.getHttpServletRequest(_liferayPortletRequest);

        processFolders(getMoveFolders());
        processArticles(getMoveArticles());

        setViewAttributes();
    }

    public String getIconCssClass(JournalArticle article) throws PortalException {

        if (_journalArticleAssetRendererFactory == null) {
            _journalArticleAssetRendererFactory = AssetRendererFactoryRegistryUtil
                    .getAssetRendererFactoryByClass(JournalArticle.class);
        }

        AssetRenderer<JournalArticle> assetRenderer = _journalArticleAssetRendererFactory
                .getAssetRenderer(JournalArticleAssetRenderer.getClassPK(article));

        return assetRenderer.getIconCssClass();
    }

    public String getIconCssClass(JournalFolder folder) throws PortalException {
        if (_journalFolderAssetRendererFactory == null) {
            _journalFolderAssetRendererFactory = AssetRendererFactoryRegistryUtil
                    .getAssetRendererFactoryByClass(JournalFolder.class);
        }

        AssetRenderer<JournalFolder> assetRenderer = _journalFolderAssetRendererFactory
                .getAssetRenderer(folder.getFolderId());

        return assetRenderer.getIconCssClass();
    }

    public List<JournalArticle> getInvalidMoveArticles() {
        return _invalidMoveArticles;
    }

    public List<JournalFolder> getInvalidMoveFolders() {
        return _invalidMoveFolders;
    }

    public List<JournalArticle> getMoveArticles() throws PortalException {
        ThemeDisplay themeDisplay = (ThemeDisplay) _liferayPortletRequest.getAttribute(WebKeys.THEME_DISPLAY);

        List<JournalArticle> articles = new ArrayList<>();

        String[] articleIds = ParamUtil.getStringValues(_liferayPortletRequest, "rowIdsJournalArticle");

        for (String articleId : articleIds) {
            JournalArticle article = JournalArticleServiceUtil.fetchArticle(themeDisplay.getScopeGroupId(),
                    articleId);

            if (article != null) {
                articles.add(article);
            }
        }

        return articles;
    }

    public List<JournalFolder> getMoveFolders() throws PortalException {
        long[] folderIds = ParamUtil.getLongValues(_liferayPortletRequest, "rowIdsJournalFolder");

        List<JournalFolder> folders = new ArrayList<>();

        for (long folderId : folderIds) {
            JournalFolder folder = JournalFolderServiceUtil.fetchFolder(folderId);

            if (folder != null) {
                folders.add(folder);
            }
        }

        return folders;
    }

    public long getNewFolderId() {
        if (_newFolderId > 0) {
            return _newFolderId;
        }

        _newFolderId = ParamUtil.getLong(_liferayPortletRequest, "newFolderId");

        return _newFolderId;
    }

    public String getNewFolderName() throws PortalException {
        if (Validator.isNotNull(_newFolderName)) {
            return _newFolderName;
        }

        if (getNewFolderId() > 0) {
            JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(getNewFolderId());

            _newFolderName = folder.getName();
        } else {
            _newFolderName = LanguageUtil.get(_servletRequest, "home");
        }

        return _newFolderName;
    }

    public PermissionChecker getPermissionChecker() {
        if (_permissionChecker != null) {
            return _permissionChecker;
        }

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

        _permissionChecker = themeDisplay.getPermissionChecker();

        return _permissionChecker;
    }

    public String getRedirect() {
        if (_redirect != null) {
            return _redirect;
        }

        _redirect = ParamUtil.getString(_liferayPortletRequest, "redirect");

        return _redirect;
    }

    public List<JournalArticle> getValidMoveArticles() {
        return _validMoveArticles;
    }

    public List<JournalFolder> getValidMoveFolders() {
        return _validMoveFolders;
    }

    public void processArticles(List<JournalArticle> articles) throws PortalException {

        _validMoveArticles = new ArrayList<>();
        _invalidMoveArticles = new ArrayList<>();

        for (JournalArticle curArticle : articles) {
            boolean hasUpdatePermission = JournalArticlePermission.contains(getPermissionChecker(), curArticle,
                    ActionKeys.UPDATE);

            if (hasUpdatePermission) {
                _validMoveArticles.add(curArticle);
            } else {
                _invalidMoveArticles.add(curArticle);
            }
        }
    }

    public void processFolders(List<JournalFolder> folders) throws PortalException {

        _validMoveFolders = new ArrayList<>();
        _invalidMoveFolders = new ArrayList<>();

        for (JournalFolder curFolder : folders) {
            boolean hasUpdatePermission = JournalFolderPermission.contains(getPermissionChecker(), curFolder,
                    ActionKeys.UPDATE);

            if (hasUpdatePermission) {
                _validMoveFolders.add(curFolder);
            } else {
                _invalidMoveFolders.add(curFolder);
            }
        }
    }

    public void setViewAttributes() {
        PortalUtil.addPortletBreadcrumbEntry(_servletRequest, LanguageUtil.get(_servletRequest, "move-web-content"),
                _currentURL);

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

        PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

        portletDisplay.setShowBackIcon(true);
        portletDisplay.setURLBack(getRedirect());

        if (_liferayPortletResponse instanceof RenderResponse) {
            RenderResponse renderResponse = (RenderResponse) _liferayPortletResponse;

            renderResponse.setTitle(LanguageUtil.get(_servletRequest, "move-web-content"));
        }
    }

    private final String _currentURL;
    private List<JournalArticle> _invalidMoveArticles;
    private List<JournalFolder> _invalidMoveFolders;
    private AssetRendererFactory _journalArticleAssetRendererFactory;
    private AssetRendererFactory _journalFolderAssetRendererFactory;
    private final LiferayPortletRequest _liferayPortletRequest;
    private final LiferayPortletResponse _liferayPortletResponse;
    private long _newFolderId;
    private String _newFolderName;
    private PermissionChecker _permissionChecker;
    private String _redirect;
    private final HttpServletRequest _servletRequest;
    private List<JournalArticle> _validMoveArticles;
    private List<JournalFolder> _validMoveFolders;

}