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.StringPool;
022 import com.liferay.portal.kernel.util.Tuple;
023 import com.liferay.portal.kernel.util.Validator;
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
177 @Deprecated
178 @Override
179 public String getIconPath(PortletRequest portletRequest) {
180 return StringPool.BLANK;
181 }
182
183 @Override
184 public String getPortletId() {
185 return _portletId;
186 }
187
188 @Override
189 public String getSubtypeTitle(Locale locale) {
190 return LanguageUtil.get(locale, "subtype");
191 }
192
193 @Override
194 public String getTypeName(Locale locale) {
195 return ResourceActionsUtil.getModelResource(locale, getClassName());
196 }
197
198
201 @Deprecated
202 @Override
203 public String getTypeName(Locale locale, boolean hasSubtypes) {
204 return getTypeName(locale);
205 }
206
207 @Override
208 public String getTypeName(Locale locale, long subtypeId) {
209 return getTypeName(locale);
210 }
211
212 @Deprecated
213 @Override
214 public PortletURL getURLAdd(
215 LiferayPortletRequest liferayPortletRequest,
216 LiferayPortletResponse liferayPortletResponse)
217 throws PortalException {
218
219 return getURLAdd(liferayPortletRequest, liferayPortletResponse, 0);
220 }
221
222 @Override
223 @SuppressWarnings("unused")
224 public PortletURL getURLAdd(
225 LiferayPortletRequest liferayPortletRequest,
226 LiferayPortletResponse liferayPortletResponse, long classTypeId)
227 throws PortalException {
228
229 return null;
230 }
231
232 @Override
233 @SuppressWarnings("unused")
234 public PortletURL getURLView(
235 LiferayPortletResponse liferayPortletResponse,
236 WindowState windowState)
237 throws PortalException {
238
239 return null;
240 }
241
242 @Override
243 public boolean hasAddPermission(
244 PermissionChecker permissionChecker, long groupId, long classTypeId)
245 throws Exception {
246
247 return false;
248 }
249
250 @Deprecated
251 @Override
252 public boolean hasClassTypeFieldNames(long classTypeId, Locale locale)
253 throws Exception {
254
255 ClassTypeReader classTypeReader = getClassTypeReader();
256
257 ClassType classType = classTypeReader.getClassType(classTypeId, locale);
258
259 if (classType.getClassTypeFieldsCount() > 0) {
260 return true;
261 }
262
263 return false;
264 }
265
266 @Override
267 public boolean hasPermission(
268 PermissionChecker permissionChecker, long classPK, String actionId)
269 throws Exception {
270
271 return _PERMISSION;
272 }
273
274 @Override
275 public boolean isActive(long companyId) {
276 if (Validator.isNull(getPortletId())) {
277 return true;
278 }
279
280 Portlet portlet = PortletLocalServiceUtil.getPortletById(
281 companyId, getPortletId());
282
283 if (portlet == null) {
284 portlet = PortletLocalServiceUtil.getPortletById(getPortletId());
285 }
286
287 if (portlet == null) {
288 return false;
289 }
290
291 return portlet.isActive();
292 }
293
294 @Override
295 public boolean isCategorizable() {
296 return _categorizable;
297 }
298
299 @Override
300 public boolean isLinkable() {
301 return _linkable;
302 }
303
304 @Override
305 public boolean isListable(long classPK) {
306 return true;
307 }
308
309 @Override
310 public boolean isSearchable() {
311 return _searchable;
312 }
313
314 @Override
315 public boolean isSelectable() {
316 return _selectable;
317 }
318
319 @Override
320 public boolean isSupportsClassTypes() {
321 return _supportsClassTypes;
322 }
323
324 @Override
325 public void setClassName(String className) {
326 _className = className;
327 }
328
329 @Override
330 public void setPortletId(String portletId) {
331 _portletId = portletId;
332 }
333
334 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
335 throws PortalException {
336
337 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
338 }
339
340 protected void setCategorizable(boolean categorizable) {
341 _categorizable = categorizable;
342 }
343
344 protected void setLinkable(boolean linkable) {
345 _linkable = linkable;
346 }
347
348 protected void setSearchable(boolean searchable) {
349 _searchable = searchable;
350 }
351
352 protected void setSelectable(boolean selectable) {
353 _selectable = selectable;
354 }
355
356 protected void setSupportsClassTypes(boolean supportsClassTypes) {
357 _supportsClassTypes = supportsClassTypes;
358 }
359
360 protected Tuple toTuple(ClassTypeField classTypeField) {
361 return new Tuple(
362 classTypeField.getLabel(), classTypeField.getName(),
363 classTypeField.getType(), classTypeField.getClassTypeId());
364 }
365
366 private static final boolean _PERMISSION = true;
367
368 private boolean _categorizable = true;
369 private String _className;
370 private boolean _linkable;
371 private String _portletId;
372 private boolean _searchable;
373 private boolean _selectable = true;
374 private boolean _supportsClassTypes;
375
376 private static class NullClassTypeReader implements ClassTypeReader {
377
378 @Override
379 public List<ClassType> getAvailableClassTypes(
380 long[] groupIds, Locale locale) {
381
382 return Collections.emptyList();
383 }
384
385 @Override
386 public ClassType getClassType(long classTypeId, Locale locale)
387 throws PortalException {
388
389 throw new NoSuchClassTypeException();
390 }
391
392 }
393
394 }