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