001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
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    /**
035     * @author Eudaldo Alonso
036     */
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    }