com.liferay.document.library.web.internal.display.context.logic.DLPortletInstanceSettingsHelper.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.document.library.web.internal.display.context.logic.DLPortletInstanceSettingsHelper.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.document.library.web.internal.display.context.logic;

import com.liferay.document.library.kernel.util.DLUtil;
import com.liferay.document.library.web.constants.DLPortletKeys;
import com.liferay.document.library.web.internal.display.context.util.DLRequestHelper;
import com.liferay.document.library.web.internal.settings.DLPortletInstanceSettings;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.kernel.util.KeyValuePair;
import com.liferay.portal.kernel.util.KeyValuePairComparator;
import com.liferay.portal.kernel.util.ListUtil;
import com.liferay.portal.kernel.util.SetUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.util.PropsValues;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;

/**
 * @author Ivn Zaera
 */
public class DLPortletInstanceSettingsHelper {

    public DLPortletInstanceSettingsHelper(DLRequestHelper dlRequestHelper) {
        _dlRequestHelper = dlRequestHelper;
    }

    public List<KeyValuePair> getAvailableDisplayViews() {
        if (_availableDisplayViews == null) {
            _populateDisplayViews();
        }

        return _availableDisplayViews;
    }

    public List<KeyValuePair> getAvailableEntryColumns() {
        if (_availableEntryColumns == null) {
            _populateEntryColumns();
        }

        return _availableEntryColumns;
    }

    public List<KeyValuePair> getAvailableFileEntryColumns() {
        if (_availableFileEntryColumns == null) {
            _populateFileEntryColumns();
        }

        return _availableFileEntryColumns;
    }

    public List<KeyValuePair> getAvailableFolderColumns() {
        if (_availableFolderColumns == null) {
            _populateFolderColumns();
        }

        return _availableFolderColumns;
    }

    public List<KeyValuePair> getAvailableMimeTypes() {
        if (_availableMimeTypes == null) {
            _populateMimeTypes();
        }

        return _availableMimeTypes;
    }

    public List<KeyValuePair> getCurrentDisplayViews() {
        if (_currentDisplayViews == null) {
            _populateDisplayViews();
        }

        return _currentDisplayViews;
    }

    public List<KeyValuePair> getCurrentEntryColumns() {
        if (_currentEntryColumns == null) {
            _populateEntryColumns();
        }

        return _currentEntryColumns;
    }

    public List<KeyValuePair> getCurrentFileEntryColumns() {
        if (_currentFileEntryColumns == null) {
            _populateFileEntryColumns();
        }

        return _currentFileEntryColumns;
    }

    public List<KeyValuePair> getCurrentFolderColumns() {
        if (_currentFolderColumns == null) {
            _populateFolderColumns();
        }

        return _currentFolderColumns;
    }

    public List<KeyValuePair> getCurrentMimeTypes() {
        if (_currentMimeTypes == null) {
            _populateMimeTypes();
        }

        return _currentMimeTypes;
    }

    public String[] getEntryColumns() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] entryColumns = dlPortletInstanceSettings.getEntryColumns();

        String portletName = _dlRequestHelper.getPortletName();

        if (!isShowActions()) {
            entryColumns = ArrayUtil.remove(entryColumns, "action");
        } else if (!portletName.equals(DLPortletKeys.DOCUMENT_LIBRARY)
                && !portletName.equals(DLPortletKeys.DOCUMENT_LIBRARY_ADMIN)
                && !ArrayUtil.contains(entryColumns, "action")) {

            entryColumns = ArrayUtil.append(entryColumns, "action");
        }

        return entryColumns;
    }

    public String[] getFileEntryColumns() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] fileEntryColumns = dlPortletInstanceSettings.getFileEntryColumns();

        if (!isShowActions()) {
            fileEntryColumns = ArrayUtil.remove(fileEntryColumns, "action");
        }

        return fileEntryColumns;
    }

    public String[] getFolderColumns() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] folderColumns = dlPortletInstanceSettings.getFolderColumns();

        if (!isShowActions()) {
            folderColumns = ArrayUtil.remove(folderColumns, "action");
        }

        return folderColumns;
    }

    public boolean isShowActions() {
        String portletName = _dlRequestHelper.getPortletName();
        String portletResource = _dlRequestHelper.getPortletResource();

        if (portletName.equals(DLPortletKeys.DOCUMENT_LIBRARY_ADMIN)
                || portletResource.equals(DLPortletKeys.DOCUMENT_LIBRARY_ADMIN)) {

            return true;
        }

        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        return dlPortletInstanceSettings.isShowActions();
    }

    public boolean isShowSearch() {
        String portletName = _dlRequestHelper.getPortletName();

        if (portletName.equals(DLPortletKeys.DOCUMENT_LIBRARY_ADMIN)) {
            return true;
        }

        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        return dlPortletInstanceSettings.isShowFoldersSearch();
    }

    public boolean isShowTabs() {
        String portletName = _dlRequestHelper.getPortletName();

        if (portletName.equals(DLPortletKeys.DOCUMENT_LIBRARY_ADMIN)) {
            return true;
        }

        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        return dlPortletInstanceSettings.isShowTabs();
    }

    private String[] _getAllEntryColumns() {
        String allEntryColumns = "name,size,status";

        if (PropsValues.DL_FILE_ENTRY_BUFFERED_INCREMENT_ENABLED) {
            allEntryColumns += ",downloads";
        }

        if (isShowActions()) {
            allEntryColumns += ",action";
        }

        allEntryColumns += ",modified-date,create-date";

        return StringUtil.split(allEntryColumns);
    }

    private String[] _getAllFileEntryColumns() {
        String allFileEntryColumns = "name,size";

        if (PropsValues.DL_FILE_ENTRY_BUFFERED_INCREMENT_ENABLED) {
            allFileEntryColumns += ",downloads";
        }

        allFileEntryColumns += ",locked";

        if (isShowActions()) {
            allFileEntryColumns += ",action";
        }

        return StringUtil.split(allFileEntryColumns);
    }

    private String[] _getAllFolderColumns() {
        String allFolderColumns = "name,num-of-folders,num-of-documents";

        if (isShowActions()) {
            allFolderColumns += ",action";
        }

        return StringUtil.split(allFolderColumns);
    }

    private void _populateDisplayViews() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] displayViews = dlPortletInstanceSettings.getDisplayViews();

        _currentDisplayViews = new ArrayList<>();

        for (String displayView : displayViews) {
            _currentDisplayViews.add(
                    new KeyValuePair(displayView, LanguageUtil.get(_dlRequestHelper.getLocale(), displayView)));
        }

        Arrays.sort(displayViews);

        _availableDisplayViews = new ArrayList<>();

        Set<String> allDisplayViews = SetUtil.fromArray(PropsValues.DL_DISPLAY_VIEWS);

        for (String displayView : allDisplayViews) {
            if (Arrays.binarySearch(displayViews, displayView) < 0) {
                _availableDisplayViews.add(
                        new KeyValuePair(displayView, LanguageUtil.get(_dlRequestHelper.getLocale(), displayView)));
            }
        }

        _availableDisplayViews = ListUtil.sort(_availableDisplayViews, new KeyValuePairComparator(false, true));
    }

    private void _populateEntryColumns() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] entryColumns = dlPortletInstanceSettings.getEntryColumns();

        _currentEntryColumns = new ArrayList<>();

        for (String entryColumn : entryColumns) {
            _currentEntryColumns.add(
                    new KeyValuePair(entryColumn, LanguageUtil.get(_dlRequestHelper.getLocale(), entryColumn)));
        }

        Arrays.sort(entryColumns);

        _availableEntryColumns = new ArrayList<>();

        Set<String> allEntryColumns = SetUtil.fromArray(_getAllEntryColumns());

        for (String entryColumn : allEntryColumns) {
            if (Arrays.binarySearch(entryColumns, entryColumn) < 0) {
                _availableEntryColumns.add(
                        new KeyValuePair(entryColumn, LanguageUtil.get(_dlRequestHelper.getLocale(), entryColumn)));
            }
        }

        _availableEntryColumns = ListUtil.sort(_availableEntryColumns, new KeyValuePairComparator(false, true));
    }

    private void _populateFileEntryColumns() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] fileEntryColumns = dlPortletInstanceSettings.getFileEntryColumns();

        _currentFileEntryColumns = new ArrayList<>();

        for (String fileEntryColumn : fileEntryColumns) {
            _currentFileEntryColumns.add(new KeyValuePair(fileEntryColumn,
                    LanguageUtil.get(_dlRequestHelper.getLocale(), fileEntryColumn)));
        }

        _availableFileEntryColumns = new ArrayList<>();

        Arrays.sort(fileEntryColumns);

        Set<String> allFileEntryColumns = SetUtil.fromArray(_getAllFileEntryColumns());

        for (String fileEntryColumn : allFileEntryColumns) {
            if (Arrays.binarySearch(fileEntryColumns, fileEntryColumn) < 0) {
                _availableFileEntryColumns.add(new KeyValuePair(fileEntryColumn,
                        LanguageUtil.get(_dlRequestHelper.getLocale(), fileEntryColumn)));
            }
        }

        _availableFileEntryColumns = ListUtil.sort(_availableFileEntryColumns,
                new KeyValuePairComparator(false, true));
    }

    private void _populateFolderColumns() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] folderColumns = dlPortletInstanceSettings.getFolderColumns();

        _currentFolderColumns = new ArrayList<>();

        for (String folderColumn : folderColumns) {
            _currentFolderColumns.add(
                    new KeyValuePair(folderColumn, LanguageUtil.get(_dlRequestHelper.getLocale(), folderColumn)));
        }

        _availableFolderColumns = new ArrayList<>();

        Arrays.sort(folderColumns);

        Set<String> allFolderColumns = SetUtil.fromArray(_getAllFolderColumns());

        for (String folderColumn : allFolderColumns) {
            if (Arrays.binarySearch(folderColumns, folderColumn) < 0) {
                _availableFolderColumns.add(new KeyValuePair(folderColumn,
                        LanguageUtil.get(_dlRequestHelper.getLocale(), folderColumn)));
            }
        }

        _availableFolderColumns = ListUtil.sort(_availableFolderColumns, new KeyValuePairComparator(false, true));
    }

    private void _populateMimeTypes() {
        DLPortletInstanceSettings dlPortletInstanceSettings = _dlRequestHelper.getDLPortletInstanceSettings();

        String[] mediaGalleryMimeTypes = dlPortletInstanceSettings.getMimeTypes();

        Arrays.sort(mediaGalleryMimeTypes);

        ThemeDisplay themeDisplay = _dlRequestHelper.getThemeDisplay();

        _currentMimeTypes = new ArrayList<>();

        for (String mimeType : mediaGalleryMimeTypes) {
            _currentMimeTypes.add(new KeyValuePair(mimeType, LanguageUtil.get(themeDisplay.getLocale(), mimeType)));
        }

        _availableMimeTypes = new ArrayList<>();

        Set<String> allMediaGalleryMimeTypes = DLUtil.getAllMediaGalleryMimeTypes();

        for (String mimeType : allMediaGalleryMimeTypes) {
            if (Arrays.binarySearch(mediaGalleryMimeTypes, mimeType) < 0) {
                _availableMimeTypes
                        .add(new KeyValuePair(mimeType, LanguageUtil.get(themeDisplay.getLocale(), mimeType)));
            }
        }
    }

    private List<KeyValuePair> _availableDisplayViews;
    private List<KeyValuePair> _availableEntryColumns;
    private List<KeyValuePair> _availableFileEntryColumns;
    private List<KeyValuePair> _availableFolderColumns;
    private List<KeyValuePair> _availableMimeTypes;
    private List<KeyValuePair> _currentDisplayViews;
    private List<KeyValuePair> _currentEntryColumns;
    private List<KeyValuePair> _currentFileEntryColumns;
    private List<KeyValuePair> _currentFolderColumns;
    private List<KeyValuePair> _currentMimeTypes;
    private final DLRequestHelper _dlRequestHelper;

}