001
014
015 package com.liferay.portal.kernel.trash;
016
017 import aQute.bnd.annotation.ProviderType;
018
019 import com.liferay.portal.kernel.exception.PortalException;
020 import com.liferay.portal.kernel.exception.SystemException;
021 import com.liferay.portal.kernel.json.JSONFactoryUtil;
022 import com.liferay.portal.kernel.json.JSONObject;
023 import com.liferay.portal.kernel.log.Log;
024 import com.liferay.portal.kernel.log.LogFactoryUtil;
025 import com.liferay.portal.kernel.util.StringPool;
026 import com.liferay.portal.model.ContainerModel;
027 import com.liferay.portal.model.SystemEvent;
028 import com.liferay.portal.model.SystemEventConstants;
029 import com.liferay.portal.model.TrashedModel;
030 import com.liferay.portal.security.permission.ActionKeys;
031 import com.liferay.portal.security.permission.PermissionChecker;
032 import com.liferay.portal.service.ServiceContext;
033 import com.liferay.portal.service.SystemEventLocalServiceUtil;
034 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
035 import com.liferay.portlet.asset.model.AssetRenderer;
036 import com.liferay.portlet.asset.model.AssetRendererFactory;
037 import com.liferay.portlet.trash.model.TrashEntry;
038
039 import java.util.Collections;
040 import java.util.List;
041 import java.util.Locale;
042
043 import javax.portlet.PortletRequest;
044
045
052 @ProviderType
053 public abstract class BaseTrashHandler implements TrashHandler {
054
055 @Override
056 public SystemEvent addDeletionSystemEvent(
057 long userId, long groupId, long classPK, String classUuid,
058 String referrerClassName)
059 throws PortalException {
060
061 JSONObject extraDataJSONObject = JSONFactoryUtil.createJSONObject();
062
063 extraDataJSONObject.put("inTrash", true);
064
065 return SystemEventLocalServiceUtil.addSystemEvent(
066 userId, groupId, getSystemEventClassName(), classPK, classUuid,
067 referrerClassName, SystemEventConstants.TYPE_DELETE,
068 extraDataJSONObject.toString());
069 }
070
071
075 @Deprecated
076 @Override
077 public void checkDuplicateEntry(
078 long classPK, long containerModelId, String newName)
079 throws PortalException {
080
081 checkRestorableEntry(classPK, containerModelId, newName);
082 }
083
084
088 @Deprecated
089 @Override
090 public void checkDuplicateTrashEntry(
091 TrashEntry trashEntry, long containerModelId, String newName)
092 throws PortalException {
093
094 checkRestorableEntry(trashEntry, containerModelId, newName);
095 }
096
097 @Override
098 @SuppressWarnings("unused")
099 public void checkRestorableEntry(
100 long classPK, long containerModelId, String newName)
101 throws PortalException {
102 }
103
104 @Override
105 @SuppressWarnings("unused")
106 public void checkRestorableEntry(
107 TrashEntry trashEntry, long containerModelId, String newName)
108 throws PortalException {
109 }
110
111 @Override
112 @SuppressWarnings("unused")
113 public ContainerModel getContainerModel(long containerModelId)
114 throws PortalException {
115
116 return null;
117 }
118
119
122 @Deprecated
123 @Override
124 public String getContainerModelClassName() {
125 return getContainerModelClassName(0);
126 }
127
128 @Override
129 public String getContainerModelClassName(long classPK) {
130 return StringPool.BLANK;
131 }
132
133
136 @Deprecated
137 @Override
138 public String getContainerModelName() {
139 return StringPool.BLANK;
140 }
141
142
145 @Override
146 public String getContainerModelName(long classPK) throws PortalException {
147 return StringPool.BLANK;
148 }
149
150 @Override
151 @SuppressWarnings("unused")
152 public List<ContainerModel> getContainerModels(
153 long classPK, long containerModelId, int start, int end)
154 throws PortalException {
155
156 return Collections.emptyList();
157 }
158
159 @Override
160 @SuppressWarnings("unused")
161 public int getContainerModelsCount(long classPK, long containerModelId)
162 throws PortalException {
163
164 return 0;
165 }
166
167 @Override
168 public String getDeleteMessage() {
169 return "deleted-in-x";
170 }
171
172 @Override
173 public long getDestinationContainerModelId(
174 long classPK, long destinationContainerModelId) {
175
176 return destinationContainerModelId;
177 }
178
179 @Override
180 @SuppressWarnings("unused")
181 public ContainerModel getParentContainerModel(long classPK)
182 throws PortalException {
183
184 return null;
185 }
186
187 @Override
188 public ContainerModel getParentContainerModel(TrashedModel trashedModel)
189 throws PortalException {
190
191 if ((trashedModel == null) ||
192 !(trashedModel instanceof ContainerModel)) {
193
194 return null;
195 }
196
197 ContainerModel containerModel = (ContainerModel)trashedModel;
198
199 return getContainerModel(containerModel.getParentContainerModelId());
200 }
201
202 @Override
203 @SuppressWarnings("unused")
204 public List<ContainerModel> getParentContainerModels(long classPK)
205 throws PortalException {
206
207 return Collections.emptyList();
208 }
209
210 @Override
211 @SuppressWarnings("unused")
212 public String getRestoreContainedModelLink(
213 PortletRequest portletRequest, long classPK)
214 throws PortalException {
215
216 return StringPool.BLANK;
217 }
218
219 @Override
220 @SuppressWarnings("unused")
221 public String getRestoreContainerModelLink(
222 PortletRequest portletRequest, long classPK)
223 throws PortalException {
224
225 return StringPool.BLANK;
226 }
227
228 @Override
229 @SuppressWarnings("unused")
230 public String getRestoreMessage(PortletRequest portletRequest, long classPK)
231 throws PortalException {
232
233 return StringPool.BLANK;
234 }
235
236 @Override
237 public String getRootContainerModelClassName() {
238 return getContainerModelClassName(0);
239 }
240
241
244 @Override
245 public long getRootContainerModelId(long classPK) throws PortalException {
246 return 0;
247 }
248
249 @Override
250 public String getRootContainerModelName() {
251 return StringPool.BLANK;
252 }
253
254
257 @Override
258 public List<ContainerModel> getRootContainerModels(long groupId)
259 throws PortalException {
260
261 return Collections.emptyList();
262 }
263
264 @Override
265 public int getRootContainerModelsCount(long groupId) {
266 return 0;
267 }
268
269
272 @Override
273 public String getRootContainerModelTitle(
274 long containerModelId, Locale locale)
275 throws PortalException {
276
277 return StringPool.BLANK;
278 }
279
280 @Override
281 public String getSubcontainerModelName() {
282 return StringPool.BLANK;
283 }
284
285 @Override
286 public String getSystemEventClassName() {
287 return getClassName();
288 }
289
290 @Override
291 public String getTrashContainedModelName() {
292 return StringPool.BLANK;
293 }
294
295 @Override
296 @SuppressWarnings("unused")
297 public int getTrashContainedModelsCount(long classPK)
298 throws PortalException {
299
300 return 0;
301 }
302
303 @Override
304 @SuppressWarnings("unused")
305 public List<TrashRenderer> getTrashContainedModelTrashRenderers(
306 long classPK, int start, int end)
307 throws PortalException {
308
309 return Collections.emptyList();
310 }
311
312 @Override
313 public String getTrashContainerModelName() {
314 return StringPool.BLANK;
315 }
316
317 @Override
318 @SuppressWarnings("unused")
319 public int getTrashContainerModelsCount(long classPK)
320 throws PortalException {
321
322 return 0;
323 }
324
325 @Override
326 @SuppressWarnings("unused")
327 public List<TrashRenderer> getTrashContainerModelTrashRenderers(
328 long classPK, int start, int end)
329 throws PortalException {
330
331 return Collections.emptyList();
332 }
333
334 @Override
335 @SuppressWarnings("unused")
336 public TrashEntry getTrashEntry(long classPK) throws PortalException {
337 return null;
338 }
339
340 @Override
341 public TrashRenderer getTrashRenderer(long classPK) throws PortalException {
342 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
343
344 if (assetRendererFactory != null) {
345 AssetRenderer assetRenderer = assetRendererFactory.getAssetRenderer(
346 classPK);
347
348 if (assetRenderer instanceof TrashRenderer) {
349 return (TrashRenderer)assetRenderer;
350 }
351 }
352
353 return null;
354 }
355
356 @Override
357 public boolean hasTrashPermission(
358 PermissionChecker permissionChecker, long groupId, long classPK,
359 String trashActionId)
360 throws PortalException {
361
362 String actionId = trashActionId;
363
364 if (trashActionId.equals(ActionKeys.DELETE)) {
365 actionId = ActionKeys.DELETE;
366 }
367 else if (trashActionId.equals(TrashActionKeys.OVERWRITE)) {
368 actionId = ActionKeys.DELETE;
369 }
370 else if (trashActionId.equals(TrashActionKeys.MOVE)) {
371 return false;
372 }
373 else if (trashActionId.equals(TrashActionKeys.RENAME)) {
374 actionId = ActionKeys.UPDATE;
375 }
376 else if (trashActionId.equals(TrashActionKeys.RESTORE)) {
377 actionId = ActionKeys.DELETE;
378 }
379
380 return hasPermission(permissionChecker, classPK, actionId);
381 }
382
383 @Override
384 public boolean isContainerModel() {
385 return false;
386 }
387
388 @Override
389 public boolean isDeletable() {
390 return true;
391 }
392
393 @Override
394 @SuppressWarnings("unused")
395 public boolean isInTrashContainer(long classPK) throws PortalException {
396 return false;
397 }
398
399 @Override
400 public boolean isMovable() {
401 return false;
402 }
403
404 @Override
405 @SuppressWarnings("unused")
406 public boolean isRestorable(long classPK) throws PortalException {
407 return true;
408 }
409
410 @Override
411 public boolean isRootContainerModelMovable() {
412 return false;
413 }
414
415 @Override
416 @SuppressWarnings("unused")
417 public void moveEntry(
418 long userId, long classPK, long containerModelId,
419 ServiceContext serviceContext)
420 throws PortalException {
421 }
422
423 @Override
424 public void moveTrashEntry(
425 long userId, long classPK, long containerModelId,
426 ServiceContext serviceContext)
427 throws PortalException {
428
429 if (isRestorable(classPK)) {
430 restoreTrashEntry(userId, classPK);
431 }
432
433 _log.error(
434 "moveTrashEntry() is not implemented in " + getClass().getName());
435
436 throw new SystemException();
437 }
438
439 @Override
440 @SuppressWarnings("unused")
441 public void restoreRelatedTrashEntry(String className, long classPK)
442 throws PortalException {
443 }
444
445 @Override
446 @SuppressWarnings("unused")
447 public void updateTitle(long classPK, String title) throws PortalException {
448 }
449
450 protected AssetRendererFactory getAssetRendererFactory() {
451 return AssetRendererFactoryRegistryUtil.
452 getAssetRendererFactoryByClassName(getClassName());
453 }
454
455 protected abstract boolean hasPermission(
456 PermissionChecker permissionChecker, long classPK, String actionId)
457 throws PortalException;
458
459 private static final Log _log = LogFactoryUtil.getLog(
460 BaseTrashHandler.class);
461
462 }