001
014
015 package com.liferay.portlet.documentlibrarydisplay.context;
016
017 import com.liferay.portal.kernel.language.LanguageUtil;
018 import com.liferay.portal.kernel.util.KeyValuePair;
019 import com.liferay.portal.kernel.util.KeyValuePairComparator;
020 import com.liferay.portal.kernel.util.ListUtil;
021 import com.liferay.portal.kernel.util.SetUtil;
022 import com.liferay.portal.kernel.util.StringUtil;
023 import com.liferay.portal.theme.ThemeDisplay;
024 import com.liferay.portal.util.PropsValues;
025 import com.liferay.portal.util.WebKeys;
026 import com.liferay.portlet.documentlibrary.DLPortletInstanceSettings;
027 import com.liferay.portlet.documentlibrary.context.DLActionsDisplayContext;
028
029 import java.util.ArrayList;
030 import java.util.Arrays;
031 import java.util.List;
032 import java.util.Set;
033
034 import javax.servlet.http.HttpServletRequest;
035
036
039 public class DLDisplayConfigurationDisplayContext {
040
041 public DLDisplayConfigurationDisplayContext(
042 HttpServletRequest request,
043 DLPortletInstanceSettings dlPortletInstanceSettings) {
044
045 _dlPortletInstanceSettings = dlPortletInstanceSettings;
046
047 _dlActionsDisplayContext = new DLActionsDisplayContext(
048 request, dlPortletInstanceSettings);
049 _themeDisplay = (ThemeDisplay)request.getAttribute(
050 WebKeys.THEME_DISPLAY);
051 }
052
053 public List<KeyValuePair> getAvailableFileEntryColumns() {
054 if (_availableFileEntryColumns == null) {
055 _populateFileEntryColumns();
056 }
057
058 return _availableFileEntryColumns;
059 }
060
061 public List<KeyValuePair> getAvailableFolderColumns() {
062 if (_availableFolderColumns == null) {
063 _populateFolderColumns();
064 }
065
066 return _availableFolderColumns;
067 }
068
069 public List<KeyValuePair> getCurrentFileEntryColumns() {
070 if (_currentFileEntryColumns == null) {
071 _populateFileEntryColumns();
072 }
073
074 return _currentFileEntryColumns;
075 }
076
077 public List<KeyValuePair> getCurrentFolderColumns() {
078 if (_currentFolderColumns == null) {
079 _populateFolderColumns();
080 }
081
082 return _currentFolderColumns;
083 }
084
085 public DLActionsDisplayContext getDLActionsDisplayContext() {
086 return _dlActionsDisplayContext;
087 }
088
089 private String[] _getAllFileEntryColumns() {
090 String allFileEntryColumns = "name,size";
091
092 if (PropsValues.DL_FILE_ENTRY_BUFFERED_INCREMENT_ENABLED) {
093 allFileEntryColumns += ",downloads";
094 }
095
096 allFileEntryColumns += ",locked";
097
098 if (_dlActionsDisplayContext.isShowActions()) {
099 allFileEntryColumns += ",action";
100 }
101
102 return StringUtil.split(allFileEntryColumns);
103 }
104
105 private String[] _getAllFolderColumns() {
106 String allFolderColumns = "name,num-of-folders,num-of-documents";
107
108 if (_dlActionsDisplayContext.isShowActions()) {
109 allFolderColumns += ",action";
110 }
111
112 return StringUtil.split(allFolderColumns);
113 }
114
115 private void _populateFileEntryColumns() {
116 String[] fileEntryColumns =
117 _dlPortletInstanceSettings.getFileEntryColumns();
118
119 _currentFileEntryColumns = new ArrayList<KeyValuePair>();
120
121 for (String fileEntryColumn : fileEntryColumns) {
122 _currentFileEntryColumns.add(
123 new KeyValuePair(
124 fileEntryColumn,
125 LanguageUtil.get(
126 _themeDisplay.getLocale(), fileEntryColumn)));
127 }
128
129 _availableFileEntryColumns = new ArrayList<KeyValuePair>();
130
131 Arrays.sort(fileEntryColumns);
132
133 Set<String> allFileEntryColumns = SetUtil.fromArray(
134 _getAllFileEntryColumns());
135
136 for (String fileEntryColumn : allFileEntryColumns) {
137 if (Arrays.binarySearch(fileEntryColumns, fileEntryColumn) < 0) {
138 _availableFileEntryColumns.add(
139 new KeyValuePair(
140 fileEntryColumn,
141 LanguageUtil.get(
142 _themeDisplay.getLocale(), fileEntryColumn)));
143 }
144 }
145
146 _availableFileEntryColumns = ListUtil.sort(
147 _availableFileEntryColumns,
148 new KeyValuePairComparator(false, true));
149 }
150
151 private void _populateFolderColumns() {
152 String[] folderColumns = _dlPortletInstanceSettings.getFolderColumns();
153
154 _currentFolderColumns = new ArrayList<KeyValuePair>();
155
156 for (String folderColumn : folderColumns) {
157 _currentFolderColumns.add(
158 new KeyValuePair(
159 folderColumn,
160 LanguageUtil.get(_themeDisplay.getLocale(), folderColumn)));
161 }
162
163 _availableFolderColumns = new ArrayList<KeyValuePair>();
164
165 Arrays.sort(folderColumns);
166
167 Set<String> allFolderColumns = SetUtil.fromArray(
168 _getAllFolderColumns());
169
170 for (String folderColumn : allFolderColumns) {
171 if (Arrays.binarySearch(folderColumns, folderColumn) < 0) {
172 _availableFolderColumns.add(
173 new KeyValuePair(
174 folderColumn,
175 LanguageUtil.get(
176 _themeDisplay.getLocale(), folderColumn)));
177 }
178 }
179
180 _availableFolderColumns = ListUtil.sort(
181 _availableFolderColumns, new KeyValuePairComparator(false, true));
182 }
183
184 private List<KeyValuePair> _availableFileEntryColumns;
185 private List<KeyValuePair> _availableFolderColumns;
186 private List<KeyValuePair> _currentFileEntryColumns;
187 private List<KeyValuePair> _currentFolderColumns;
188 private DLActionsDisplayContext _dlActionsDisplayContext;
189 private DLPortletInstanceSettings _dlPortletInstanceSettings;
190 private ThemeDisplay _themeDisplay;
191
192 }