001
014
015 package com.liferay.portlet.documentlibrary.display.context.logic;
016
017 import com.liferay.portal.kernel.language.LanguageUtil;
018 import com.liferay.portal.kernel.util.ArrayUtil;
019 import com.liferay.portal.kernel.util.KeyValuePair;
020 import com.liferay.portal.kernel.util.KeyValuePairComparator;
021 import com.liferay.portal.kernel.util.ListUtil;
022 import com.liferay.portal.kernel.util.SetUtil;
023 import com.liferay.portal.kernel.util.StringUtil;
024 import com.liferay.portal.theme.ThemeDisplay;
025 import com.liferay.portal.util.PortletKeys;
026 import com.liferay.portal.util.PropsValues;
027 import com.liferay.portlet.documentlibrary.DLPortletInstanceSettings;
028 import com.liferay.portlet.documentlibrary.display.context.util.DLRequestHelper;
029 import com.liferay.portlet.documentlibrary.util.DLUtil;
030
031 import java.util.ArrayList;
032 import java.util.Arrays;
033 import java.util.List;
034 import java.util.Set;
035
036
039 public class DLPortletInstanceSettingsHelper {
040
041 public DLPortletInstanceSettingsHelper(DLRequestHelper dlRequestHelper) {
042 _dlRequestHelper = dlRequestHelper;
043 }
044
045 public List<KeyValuePair> getAvailableDisplayViews() {
046 if (_availableDisplayViews == null) {
047 _populateDisplayViews();
048 }
049
050 return _availableDisplayViews;
051 }
052
053 public List<KeyValuePair> getAvailableEntryColumns() {
054 if (_availableEntryColumns == null) {
055 _populateEntryColumns();
056 }
057
058 return _availableEntryColumns;
059 }
060
061 public List<KeyValuePair> getAvailableFileEntryColumns() {
062 if (_availableFileEntryColumns == null) {
063 _populateFileEntryColumns();
064 }
065
066 return _availableFileEntryColumns;
067 }
068
069 public List<KeyValuePair> getAvailableFolderColumns() {
070 if (_availableFolderColumns == null) {
071 _populateFolderColumns();
072 }
073
074 return _availableFolderColumns;
075 }
076
077 public List<KeyValuePair> getAvailableMimeTypes() {
078 if (_availableMimeTypes == null) {
079 _populateMimeTypes();
080 }
081
082 return _availableMimeTypes;
083 }
084
085 public List<KeyValuePair> getCurrentDisplayViews() {
086 if (_currentDisplayViews == null) {
087 _populateDisplayViews();
088 }
089
090 return _currentDisplayViews;
091 }
092
093 public List<KeyValuePair> getCurrentEntryColumns() {
094 if (_currentEntryColumns == null) {
095 _populateEntryColumns();
096 }
097
098 return _currentEntryColumns;
099 }
100
101 public List<KeyValuePair> getCurrentFileEntryColumns() {
102 if (_currentFileEntryColumns == null) {
103 _populateFileEntryColumns();
104 }
105
106 return _currentFileEntryColumns;
107 }
108
109 public List<KeyValuePair> getCurrentFolderColumns() {
110 if (_currentFolderColumns == null) {
111 _populateFolderColumns();
112 }
113
114 return _currentFolderColumns;
115 }
116
117 public List<KeyValuePair> getCurrentMimeTypes() {
118 if (_currentMimeTypes == null) {
119 _populateMimeTypes();
120 }
121
122 return _currentMimeTypes;
123 }
124
125 public String[] getEntryColumns() {
126 DLPortletInstanceSettings dlPortletInstanceSettings =
127 _dlRequestHelper.getDLPortletInstanceSettings();
128
129 String[] entryColumns = dlPortletInstanceSettings.getEntryColumns();
130
131 String portletName = _dlRequestHelper.getPortletName();
132
133 if (!isShowActions()) {
134 entryColumns = ArrayUtil.remove(entryColumns, "action");
135 }
136 else if (!portletName.equals(PortletKeys.DOCUMENT_LIBRARY) &&
137 !portletName.equals(PortletKeys.DOCUMENT_LIBRARY_ADMIN) &&
138 !ArrayUtil.contains(entryColumns, "action")) {
139
140 entryColumns = ArrayUtil.append(entryColumns, "action");
141 }
142
143 return entryColumns;
144 }
145
146 public String[] getFileEntryColumns() {
147 DLPortletInstanceSettings dlPortletInstanceSettings =
148 _dlRequestHelper.getDLPortletInstanceSettings();
149
150 String[] fileEntryColumns =
151 dlPortletInstanceSettings.getFileEntryColumns();
152
153 if (!isShowActions()) {
154 fileEntryColumns = ArrayUtil.remove(fileEntryColumns, "action");
155 }
156
157 return fileEntryColumns;
158 }
159
160 public String[] getFolderColumns() {
161 DLPortletInstanceSettings dlPortletInstanceSettings =
162 _dlRequestHelper.getDLPortletInstanceSettings();
163
164 String[] folderColumns = dlPortletInstanceSettings.getFolderColumns();
165
166 if (!isShowActions()) {
167 folderColumns = ArrayUtil.remove(folderColumns, "action");
168 }
169
170 return folderColumns;
171 }
172
173 public boolean isFolderMenuVisible() {
174 String portletName = _dlRequestHelper.getPortletName();
175
176 if (portletName.equals(PortletKeys.DOCUMENT_LIBRARY) ||
177 portletName.equals(PortletKeys.DOCUMENT_LIBRARY_ADMIN)) {
178
179 return true;
180 }
181
182 DLPortletInstanceSettings dlPortletInstanceSettings =
183 _dlRequestHelper.getDLPortletInstanceSettings();
184
185 return dlPortletInstanceSettings.isShowFolderMenu();
186 }
187
188 public boolean isShowActions() {
189 String portletName = _dlRequestHelper.getPortletName();
190 String portletResource = _dlRequestHelper.getPortletResource();
191
192 if (portletName.equals(PortletKeys.DOCUMENT_LIBRARY) ||
193 portletName.equals(PortletKeys.DOCUMENT_LIBRARY_ADMIN) ||
194 portletResource.equals(PortletKeys.DOCUMENT_LIBRARY) ||
195 portletResource.equals(PortletKeys.DOCUMENT_LIBRARY_ADMIN)) {
196
197 return true;
198 }
199
200 DLPortletInstanceSettings dlPortletInstanceSettings =
201 _dlRequestHelper.getDLPortletInstanceSettings();
202
203 return dlPortletInstanceSettings.isShowActions();
204 }
205
206 public boolean isShowTabs() {
207 String portletName = _dlRequestHelper.getPortletName();
208
209 if (portletName.equals(PortletKeys.DOCUMENT_LIBRARY) ||
210 portletName.equals(PortletKeys.DOCUMENT_LIBRARY_ADMIN)) {
211
212 return true;
213 }
214
215 DLPortletInstanceSettings dlPortletInstanceSettings =
216 _dlRequestHelper.getDLPortletInstanceSettings();
217
218 return dlPortletInstanceSettings.isShowTabs();
219 }
220
221 private String[] _getAllEntryColumns() {
222 String allEntryColumns = "name,size,status";
223
224 if (PropsValues.DL_FILE_ENTRY_BUFFERED_INCREMENT_ENABLED) {
225 allEntryColumns += ",downloads";
226 }
227
228 if (isShowActions()) {
229 allEntryColumns += ",action";
230 }
231
232 allEntryColumns += ",modified-date,create-date";
233
234 return StringUtil.split(allEntryColumns);
235 }
236
237 private String[] _getAllFileEntryColumns() {
238 String allFileEntryColumns = "name,size";
239
240 if (PropsValues.DL_FILE_ENTRY_BUFFERED_INCREMENT_ENABLED) {
241 allFileEntryColumns += ",downloads";
242 }
243
244 allFileEntryColumns += ",locked";
245
246 if (isShowActions()) {
247 allFileEntryColumns += ",action";
248 }
249
250 return StringUtil.split(allFileEntryColumns);
251 }
252
253 private String[] _getAllFolderColumns() {
254 String allFolderColumns = "name,num-of-folders,num-of-documents";
255
256 if (isShowActions()) {
257 allFolderColumns += ",action";
258 }
259
260 return StringUtil.split(allFolderColumns);
261 }
262
263 private void _populateDisplayViews() {
264 DLPortletInstanceSettings dlPortletInstanceSettings =
265 _dlRequestHelper.getDLPortletInstanceSettings();
266
267 String[] displayViews = dlPortletInstanceSettings.getDisplayViews();
268
269 _currentDisplayViews = new ArrayList<>();
270
271 for (String displayView : displayViews) {
272 _currentDisplayViews.add(
273 new KeyValuePair(
274 displayView,
275 LanguageUtil.get(
276 _dlRequestHelper.getLocale(), displayView)));
277 }
278
279 Arrays.sort(displayViews);
280
281 _availableDisplayViews = new ArrayList<>();
282
283 Set<String> allDisplayViews = SetUtil.fromArray(
284 PropsValues.DL_DISPLAY_VIEWS);
285
286 for (String displayView : allDisplayViews) {
287 if (Arrays.binarySearch(displayViews, displayView) < 0) {
288 _availableDisplayViews.add(
289 new KeyValuePair(
290 displayView,
291 LanguageUtil.get(
292 _dlRequestHelper.getLocale(), displayView)));
293 }
294 }
295
296 _availableDisplayViews = ListUtil.sort(
297 _availableDisplayViews, new KeyValuePairComparator(false, true));
298 }
299
300 private void _populateEntryColumns() {
301 DLPortletInstanceSettings dlPortletInstanceSettings =
302 _dlRequestHelper.getDLPortletInstanceSettings();
303
304 String[] entryColumns = dlPortletInstanceSettings.getEntryColumns();
305
306 _currentEntryColumns = new ArrayList<>();
307
308 for (String entryColumn : entryColumns) {
309 _currentEntryColumns.add(
310 new KeyValuePair(
311 entryColumn,
312 LanguageUtil.get(
313 _dlRequestHelper.getLocale(), entryColumn)));
314 }
315
316 Arrays.sort(entryColumns);
317
318 _availableEntryColumns = new ArrayList<>();
319
320 Set<String> allEntryColumns = SetUtil.fromArray(_getAllEntryColumns());
321
322 for (String entryColumn : allEntryColumns) {
323 if (Arrays.binarySearch(entryColumns, entryColumn) < 0) {
324 _availableEntryColumns.add(
325 new KeyValuePair(
326 entryColumn,
327 LanguageUtil.get(
328 _dlRequestHelper.getLocale(), entryColumn)));
329 }
330 }
331
332 _availableEntryColumns = ListUtil.sort(
333 _availableEntryColumns, new KeyValuePairComparator(false, true));
334 }
335
336 private void _populateFileEntryColumns() {
337 DLPortletInstanceSettings dlPortletInstanceSettings =
338 _dlRequestHelper.getDLPortletInstanceSettings();
339
340 String[] fileEntryColumns =
341 dlPortletInstanceSettings.getFileEntryColumns();
342
343 _currentFileEntryColumns = new ArrayList<>();
344
345 for (String fileEntryColumn : fileEntryColumns) {
346 _currentFileEntryColumns.add(
347 new KeyValuePair(
348 fileEntryColumn,
349 LanguageUtil.get(
350 _dlRequestHelper.getLocale(), fileEntryColumn)));
351 }
352
353 _availableFileEntryColumns = new ArrayList<>();
354
355 Arrays.sort(fileEntryColumns);
356
357 Set<String> allFileEntryColumns = SetUtil.fromArray(
358 _getAllFileEntryColumns());
359
360 for (String fileEntryColumn : allFileEntryColumns) {
361 if (Arrays.binarySearch(fileEntryColumns, fileEntryColumn) < 0) {
362 _availableFileEntryColumns.add(
363 new KeyValuePair(
364 fileEntryColumn,
365 LanguageUtil.get(
366 _dlRequestHelper.getLocale(), fileEntryColumn)));
367 }
368 }
369
370 _availableFileEntryColumns = ListUtil.sort(
371 _availableFileEntryColumns,
372 new KeyValuePairComparator(false, true));
373 }
374
375 private void _populateFolderColumns() {
376 DLPortletInstanceSettings dlPortletInstanceSettings =
377 _dlRequestHelper.getDLPortletInstanceSettings();
378
379 String[] folderColumns = dlPortletInstanceSettings.getFolderColumns();
380
381 _currentFolderColumns = new ArrayList<>();
382
383 for (String folderColumn : folderColumns) {
384 _currentFolderColumns.add(
385 new KeyValuePair(
386 folderColumn,
387 LanguageUtil.get(
388 _dlRequestHelper.getLocale(), folderColumn)));
389 }
390
391 _availableFolderColumns = new ArrayList<>();
392
393 Arrays.sort(folderColumns);
394
395 Set<String> allFolderColumns = SetUtil.fromArray(
396 _getAllFolderColumns());
397
398 for (String folderColumn : allFolderColumns) {
399 if (Arrays.binarySearch(folderColumns, folderColumn) < 0) {
400 _availableFolderColumns.add(
401 new KeyValuePair(
402 folderColumn,
403 LanguageUtil.get(
404 _dlRequestHelper.getLocale(), folderColumn)));
405 }
406 }
407
408 _availableFolderColumns = ListUtil.sort(
409 _availableFolderColumns, new KeyValuePairComparator(false, true));
410 }
411
412 private void _populateMimeTypes() {
413 DLPortletInstanceSettings dlPortletInstanceSettings =
414 _dlRequestHelper.getDLPortletInstanceSettings();
415
416 String[] mediaGalleryMimeTypes =
417 dlPortletInstanceSettings.getMimeTypes();
418
419 ThemeDisplay themeDisplay = _dlRequestHelper.getThemeDisplay();
420
421 _currentMimeTypes = new ArrayList<>();
422
423 for (String mimeType : mediaGalleryMimeTypes) {
424 _currentMimeTypes.add(
425 new KeyValuePair(
426 mimeType,
427 LanguageUtil.get(themeDisplay.getLocale(), mimeType)));
428 }
429
430 _availableMimeTypes = new ArrayList<>();
431
432 Set<String> allMediaGalleryMimeTypes =
433 DLUtil.getAllMediaGalleryMimeTypes();
434
435 for (String mimeType : allMediaGalleryMimeTypes) {
436 if (Arrays.binarySearch(mediaGalleryMimeTypes, mimeType) < 0) {
437 _availableMimeTypes.add(
438 new KeyValuePair(
439 mimeType,
440 LanguageUtil.get(themeDisplay.getLocale(), mimeType)));
441 }
442 }
443 }
444
445 private List<KeyValuePair> _availableDisplayViews;
446 private List<KeyValuePair> _availableEntryColumns;
447 private List<KeyValuePair> _availableFileEntryColumns;
448 private List<KeyValuePair> _availableFolderColumns;
449 private List<KeyValuePair> _availableMimeTypes;
450 private List<KeyValuePair> _currentDisplayViews;
451 private List<KeyValuePair> _currentEntryColumns;
452 private List<KeyValuePair> _currentFileEntryColumns;
453 private List<KeyValuePair> _currentFolderColumns;
454 private List<KeyValuePair> _currentMimeTypes;
455 private final DLRequestHelper _dlRequestHelper;
456
457 }