/** * 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.PortletKeys; 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 Iván 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) || portletName.equals(PortletKeys.MY_WORKFLOW_TASK) || portletResource.equals(DLPortletKeys.DOCUMENT_LIBRARY_ADMIN) || portletResource.equals(PortletKeys.MY_WORKFLOW_TASK)) { 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; }