001
014
015 package com.liferay.taglib.util;
016
017 import com.liferay.portal.kernel.servlet.SessionMessages;
018 import com.liferay.portal.kernel.trash.TrashHandler;
019 import com.liferay.portal.kernel.trash.TrashHandlerRegistryUtil;
020 import com.liferay.portal.kernel.trash.TrashRenderer;
021 import com.liferay.portal.kernel.util.ObjectValuePair;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.kernel.util.WebKeys;
024 import com.liferay.portal.theme.ThemeDisplay;
025 import com.liferay.portal.util.PortalUtil;
026
027 import java.util.ArrayList;
028 import java.util.HashMap;
029 import java.util.List;
030 import java.util.Map;
031
032 import javax.portlet.ActionRequest;
033
034
037 public class TrashUndoUtil {
038
039 public static void addRestoreData(
040 ActionRequest actionRequest,
041 List<ObjectValuePair<String, Long>> entries)
042 throws Exception {
043
044 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
045 WebKeys.THEME_DISPLAY);
046
047 if ((entries == null) || entries.isEmpty()) {
048 return;
049 }
050
051 List<String> restoreClassNames = new ArrayList<>();
052 List<String> restoreEntryLinks = new ArrayList<>();
053 List<String> restoreEntryMessages = new ArrayList<>();
054 List<String> restoreLinks = new ArrayList<>();
055 List<String> restoreMessages = new ArrayList<>();
056
057 for (ObjectValuePair<String, Long> entry : entries) {
058 TrashHandler trashHandler =
059 TrashHandlerRegistryUtil.getTrashHandler(entry.getKey());
060
061 String restoreEntryLink = trashHandler.getRestoreContainedModelLink(
062 actionRequest, entry.getValue());
063 String restoreLink = trashHandler.getRestoreContainerModelLink(
064 actionRequest, entry.getValue());
065 String restoreMessage = trashHandler.getRestoreMessage(
066 actionRequest, entry.getValue());
067
068 if (Validator.isNull(restoreLink) ||
069 Validator.isNull(restoreMessage)) {
070
071 continue;
072 }
073
074 restoreClassNames.add(trashHandler.getClassName());
075 restoreEntryLinks.add(restoreEntryLink);
076
077 TrashRenderer trashRenderer = trashHandler.getTrashRenderer(
078 entry.getValue());
079
080 String restoreEntryTitle = trashRenderer.getTitle(
081 themeDisplay.getLocale());
082
083 restoreEntryMessages.add(restoreEntryTitle);
084
085 restoreLinks.add(restoreLink);
086 restoreMessages.add(restoreMessage);
087 }
088
089 Map<String, List<String>> data = new HashMap<>();
090
091 data.put("restoreClassNames", restoreClassNames);
092 data.put("restoreEntryLinks", restoreEntryLinks);
093 data.put("restoreEntryMessages", restoreEntryMessages);
094 data.put("restoreLinks", restoreLinks);
095 data.put("restoreMessages", restoreMessages);
096
097 SessionMessages.add(
098 actionRequest,
099 PortalUtil.getPortletId(actionRequest) +
100 SessionMessages.KEY_SUFFIX_DELETE_SUCCESS_DATA,
101 data);
102 }
103
104 public static void addRestoreData(
105 ActionRequest actionRequest, String className, long classPK)
106 throws Exception {
107
108 List<ObjectValuePair<String, Long>> entries = new ArrayList<>();
109
110 ObjectValuePair<String, Long> objectValuePair = new ObjectValuePair<>(
111 className, classPK);
112
113 entries.add(objectValuePair);
114
115 addRestoreData(actionRequest, entries);
116 }
117
118 }