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