001
014
015 package com.liferay.portlet.documentlibrary.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
028 import java.util.ArrayList;
029 import java.util.Arrays;
030 import java.util.List;
031 import java.util.Set;
032
033 import javax.servlet.http.HttpServletRequest;
034
035
038 public class DLConfigurationDisplayContext {
039
040 public DLConfigurationDisplayContext(
041 HttpServletRequest request,
042 DLPortletInstanceSettings dlPortletInstanceSettings) {
043
044 _dlPortletInstanceSettings = dlPortletInstanceSettings;
045
046 _dlActionsDisplayContext = new DLActionsDisplayContext(
047 request, dlPortletInstanceSettings);
048 _themeDisplay = (ThemeDisplay)request.getAttribute(
049 WebKeys.THEME_DISPLAY);
050 }
051
052 public List<KeyValuePair> getAvailableDisplayViews() {
053 if (_availableDisplayViews == null) {
054 _populateDisplayViews();
055 }
056
057 return _availableDisplayViews;
058 }
059
060 public List<KeyValuePair> getAvailableEntryColumns() {
061 if (_availableEntryColumns == null) {
062 _populateEntryColumns();
063 }
064
065 return _availableEntryColumns;
066 }
067
068 public List<KeyValuePair> getCurrentDisplayViews() {
069 if (_currentDisplayViews == null) {
070 _populateDisplayViews();
071 }
072
073 return _currentDisplayViews;
074 }
075
076 public List<KeyValuePair> getCurrentEntryColumns() {
077 if (_currentEntryColumns == null) {
078 _populateEntryColumns();
079 }
080
081 return _currentEntryColumns;
082 }
083
084 public DLActionsDisplayContext getDLActionsDisplayContext() {
085 return _dlActionsDisplayContext;
086 }
087
088 private String[] _getAllEntryColumns() {
089 String allEntryColumns = "name,size,status";
090
091 if (PropsValues.DL_FILE_ENTRY_BUFFERED_INCREMENT_ENABLED) {
092 allEntryColumns += ",downloads";
093 }
094
095 if (_dlActionsDisplayContext.isShowActions()) {
096 allEntryColumns += ",action";
097 }
098
099 allEntryColumns += ",modified-date,create-date";
100
101 return StringUtil.split(allEntryColumns);
102 }
103
104 private void _populateDisplayViews() {
105 String[] displayViews = _dlPortletInstanceSettings.getDisplayViews();
106
107 _currentDisplayViews = new ArrayList<KeyValuePair>();
108
109 for (String displayView : displayViews) {
110 _currentDisplayViews.add(
111 new KeyValuePair(
112 displayView,
113 LanguageUtil.get(_themeDisplay.getLocale(), displayView)));
114 }
115
116 Arrays.sort(displayViews);
117
118 _availableDisplayViews = new ArrayList<KeyValuePair>();
119
120 Set<String> allDisplayViews = SetUtil.fromArray(
121 PropsValues.DL_DISPLAY_VIEWS);
122
123 for (String displayView : allDisplayViews) {
124 if (Arrays.binarySearch(displayViews, displayView) < 0) {
125 _availableDisplayViews.add(
126 new KeyValuePair(
127 displayView,
128 LanguageUtil.get(
129 _themeDisplay.getLocale(), displayView)));
130 }
131 }
132
133 _availableDisplayViews = ListUtil.sort(
134 _availableDisplayViews, new KeyValuePairComparator(false, true));
135 }
136
137 private void _populateEntryColumns() {
138 String[] entryColumns = _dlPortletInstanceSettings.getEntryColumns();
139
140 _currentEntryColumns = new ArrayList<KeyValuePair>();
141
142 for (String entryColumn : entryColumns) {
143 _currentEntryColumns.add(
144 new KeyValuePair(
145 entryColumn,
146 LanguageUtil.get(_themeDisplay.getLocale(), entryColumn)));
147 }
148
149 Arrays.sort(entryColumns);
150
151 _availableEntryColumns = new ArrayList<KeyValuePair>();
152
153 Set<String> allEntryColumns = SetUtil.fromArray(_getAllEntryColumns());
154
155 for (String entryColumn : allEntryColumns) {
156 if (Arrays.binarySearch(entryColumns, entryColumn) < 0) {
157 _availableEntryColumns.add(
158 new KeyValuePair(
159 entryColumn,
160 LanguageUtil.get(
161 _themeDisplay.getLocale(), entryColumn)));
162 }
163 }
164
165 _availableEntryColumns = ListUtil.sort(
166 _availableEntryColumns, new KeyValuePairComparator(false, true));
167 }
168
169 private List<KeyValuePair> _availableDisplayViews;
170 private List<KeyValuePair> _availableEntryColumns;
171 private List<KeyValuePair> _currentDisplayViews;
172 private List<KeyValuePair> _currentEntryColumns;
173 private DLActionsDisplayContext _dlActionsDisplayContext;
174 private DLPortletInstanceSettings _dlPortletInstanceSettings;
175 private ThemeDisplay _themeDisplay;
176
177 }