001
014
015 package com.liferay.portlet.asset.model;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.language.LanguageUtil;
019 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
020 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
021 import com.liferay.portal.kernel.util.Tuple;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.kernel.util.WebKeys;
024 import com.liferay.portal.model.Portlet;
025 import com.liferay.portal.security.permission.PermissionChecker;
026 import com.liferay.portal.security.permission.ResourceActionsUtil;
027 import com.liferay.portal.service.PortletLocalServiceUtil;
028 import com.liferay.portal.theme.ThemeDisplay;
029 import com.liferay.portal.util.PortalUtil;
030 import com.liferay.portlet.asset.NoSuchClassTypeException;
031 import com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil;
032
033 import java.util.ArrayList;
034 import java.util.Collections;
035 import java.util.HashMap;
036 import java.util.List;
037 import java.util.Locale;
038 import java.util.Map;
039
040 import javax.portlet.PortletRequest;
041 import javax.portlet.PortletURL;
042 import javax.portlet.WindowState;
043
044
050 public abstract class BaseAssetRendererFactory<T>
051 implements AssetRendererFactory<T> {
052
053 @Override
054 public AssetEntry getAssetEntry(long assetEntryId) throws PortalException {
055 return AssetEntryLocalServiceUtil.getEntry(assetEntryId);
056 }
057
058 @Override
059 public AssetEntry getAssetEntry(String className, long classPK)
060 throws PortalException {
061
062 return AssetEntryLocalServiceUtil.getEntry(className, classPK);
063 }
064
065 @Override
066 public AssetRenderer<T> getAssetRenderer(long classPK)
067 throws PortalException {
068
069 return getAssetRenderer(classPK, TYPE_LATEST_APPROVED);
070 }
071
072 @Override
073 @SuppressWarnings("unused")
074 public AssetRenderer<T> getAssetRenderer(long groupId, String urlTitle)
075 throws PortalException {
076
077 return null;
078 }
079
080 @Override
081 public String getClassName() {
082 return _className;
083 }
084
085 @Override
086 public long getClassNameId() {
087 return PortalUtil.getClassNameId(getClassName());
088 }
089
090 @Deprecated
091 @Override
092 public Tuple getClassTypeFieldName(
093 long classTypeId, String fieldName, Locale locale)
094 throws Exception {
095
096 ClassTypeReader classTypeReader = getClassTypeReader();
097
098 ClassType classType = classTypeReader.getClassType(classTypeId, locale);
099
100 List<ClassTypeField> classTypeFields = classType.getClassTypeFields();
101
102 for (ClassTypeField classTypeField : classTypeFields) {
103 if (fieldName.equals(classTypeField.getName())) {
104 return toTuple(classTypeField);
105 }
106 }
107
108 return null;
109 }
110
111 @Deprecated
112 @Override
113 public List<Tuple> getClassTypeFieldNames(
114 long classTypeId, Locale locale, int start, int end)
115 throws Exception {
116
117 ClassTypeReader classTypeReader = getClassTypeReader();
118
119 ClassType classType = classTypeReader.getClassType(classTypeId, locale);
120
121 List<ClassTypeField> classTypeFields = classType.getClassTypeFields(
122 start, end);
123
124 List<Tuple> tuples = new ArrayList<>(classTypeFields.size());
125
126 for (ClassTypeField classTypeField : classTypeFields) {
127 tuples.add(toTuple(classTypeField));
128 }
129
130 return tuples;
131 }
132
133 @Deprecated
134 @Override
135 public int getClassTypeFieldNamesCount(long classTypeId, Locale locale)
136 throws Exception {
137
138 ClassTypeReader classTypeReader = getClassTypeReader();
139
140 ClassType classType = classTypeReader.getClassType(classTypeId, locale);
141
142 return classType.getClassTypeFieldsCount();
143 }
144
145 @Override
146 public ClassTypeReader getClassTypeReader() {
147 return new NullClassTypeReader();
148 }
149
150 @Deprecated
151 @Override
152 public Map<Long, String> getClassTypes(long[] groupIds, Locale locale)
153 throws Exception {
154
155 ClassTypeReader classTypeReader = getClassTypeReader();
156
157 List<ClassType> classTypes = classTypeReader.getAvailableClassTypes(
158 groupIds, locale);
159
160 Map<Long, String> classTypesMap = new HashMap<>();
161
162 for (ClassType classType : classTypes) {
163 classTypesMap.put(classType.getClassTypeId(), classType.getName());
164 }
165
166 return classTypesMap;
167 }
168
169 @Override
170 public String getIconCssClass() {
171 return null;
172 }
173
174 @Override
175 public String getIconPath(PortletRequest portletRequest) {
176 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
177 WebKeys.THEME_DISPLAY);
178
179 return getIconPath(themeDisplay);
180 }
181
182 @Override
183 public String getPortletId() {
184 return _portletId;
185 }
186
187 @Override
188 public String getSubtypeTitle(Locale locale) {
189 return LanguageUtil.get(locale, "subtype");
190 }
191
192 @Override
193 public String getTypeName(Locale locale) {
194 return ResourceActionsUtil.getModelResource(locale, getClassName());
195 }
196
197
200 @Deprecated
201 @Override
202 public String getTypeName(Locale locale, boolean hasSubtypes) {
203 return getTypeName(locale);
204 }
205
206 @Override
207 public String getTypeName(Locale locale, long subtypeId) {
208 return getTypeName(locale);
209 }
210
211 @Deprecated
212 @Override
213 public PortletURL getURLAdd(
214 LiferayPortletRequest liferayPortletRequest,
215 LiferayPortletResponse liferayPortletResponse)
216 throws PortalException {
217
218 return getURLAdd(liferayPortletRequest, liferayPortletResponse, 0);
219 }
220
221 @Override
222 @SuppressWarnings("unused")
223 public PortletURL getURLAdd(
224 LiferayPortletRequest liferayPortletRequest,
225 LiferayPortletResponse liferayPortletResponse, long classTypeId)
226 throws PortalException {
227
228 return null;
229 }
230
231 @Override
232 @SuppressWarnings("unused")
233 public PortletURL getURLView(
234 LiferayPortletResponse liferayPortletResponse,
235 WindowState windowState)
236 throws PortalException {
237
238 return null;
239 }
240
241 @Override
242 public boolean hasAddPermission(
243 PermissionChecker permissionChecker, long groupId, long classTypeId)
244 throws Exception {
245
246 return false;
247 }
248
249 @Deprecated
250 @Override
251 public boolean hasClassTypeFieldNames(long classTypeId, Locale locale)
252 throws Exception {
253
254 ClassTypeReader classTypeReader = getClassTypeReader();
255
256 ClassType classType = classTypeReader.getClassType(classTypeId, locale);
257
258 if (classType.getClassTypeFieldsCount() > 0) {
259 return true;
260 }
261
262 return false;
263 }
264
265 @Override
266 public boolean hasPermission(
267 PermissionChecker permissionChecker, long classPK, String actionId)
268 throws Exception {
269
270 return _PERMISSION;
271 }
272
273 @Override
274 public boolean isActive(long companyId) {
275 if (Validator.isNull(getPortletId())) {
276 return true;
277 }
278
279 Portlet portlet = PortletLocalServiceUtil.getPortletById(
280 companyId, getPortletId());
281
282 if (portlet == null) {
283 portlet = PortletLocalServiceUtil.getPortletById(getPortletId());
284 }
285
286 if (portlet == null) {
287 return false;
288 }
289
290 return portlet.isActive();
291 }
292
293 @Override
294 public boolean isCategorizable() {
295 return _categorizable;
296 }
297
298 @Override
299 public boolean isLinkable() {
300 return _linkable;
301 }
302
303 @Override
304 public boolean isListable(long classPK) {
305 return true;
306 }
307
308 @Override
309 public boolean isSearchable() {
310 return _searchable;
311 }
312
313 @Override
314 public boolean isSelectable() {
315 return _selectable;
316 }
317
318 @Override
319 public boolean isSupportsClassTypes() {
320 return _supportsClassTypes;
321 }
322
323 @Override
324 public void setClassName(String className) {
325 _className = className;
326 }
327
328 @Override
329 public void setPortletId(String portletId) {
330 _portletId = portletId;
331 }
332
333 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
334 throws PortalException {
335
336 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
337 }
338
339 protected String getIconPath(ThemeDisplay themeDisplay) {
340 return themeDisplay.getPathThemeImages() + "/common/page.png";
341 }
342
343 protected void setCategorizable(boolean categorizable) {
344 _categorizable = categorizable;
345 }
346
347 protected void setLinkable(boolean linkable) {
348 _linkable = linkable;
349 }
350
351 protected void setSearchable(boolean searchable) {
352 _searchable = searchable;
353 }
354
355 protected void setSelectable(boolean selectable) {
356 _selectable = selectable;
357 }
358
359 protected void setSupportsClassTypes(boolean supportsClassTypes) {
360 _supportsClassTypes = supportsClassTypes;
361 }
362
363 protected Tuple toTuple(ClassTypeField classTypeField) {
364 return new Tuple(
365 classTypeField.getLabel(), classTypeField.getName(),
366 classTypeField.getType(), classTypeField.getClassTypeId());
367 }
368
369 private static final boolean _PERMISSION = true;
370
371 private boolean _categorizable = true;
372 private String _className;
373 private boolean _linkable;
374 private String _portletId;
375 private boolean _searchable;
376 private boolean _selectable = true;
377 private boolean _supportsClassTypes;
378
379 private static class NullClassTypeReader implements ClassTypeReader {
380
381 @Override
382 public List<ClassType> getAvailableClassTypes(
383 long[] groupIds, Locale locale) {
384
385 return Collections.emptyList();
386 }
387
388 @Override
389 public ClassType getClassType(long classTypeId, Locale locale)
390 throws PortalException {
391
392 throw new NoSuchClassTypeException();
393 }
394
395 }
396
397 }