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