001
014
015 package com.liferay.portlet.bookmarks.trash;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.trash.TrashActionKeys;
020 import com.liferay.portal.kernel.trash.TrashRenderer;
021 import com.liferay.portal.model.ContainerModel;
022 import com.liferay.portal.security.permission.ActionKeys;
023 import com.liferay.portal.security.permission.PermissionChecker;
024 import com.liferay.portal.service.ServiceContext;
025 import com.liferay.portlet.bookmarks.asset.BookmarksFolderAssetRenderer;
026 import com.liferay.portlet.bookmarks.model.BookmarksFolder;
027 import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
028 import com.liferay.portlet.bookmarks.service.permission.BookmarksFolderPermission;
029 import com.liferay.portlet.bookmarks.util.BookmarksUtil;
030 import com.liferay.portlet.trash.model.TrashEntry;
031
032 import javax.portlet.PortletRequest;
033
034
039 public class BookmarksFolderTrashHandler extends BookmarksBaseTrashHandler {
040
041 @Override
042 public void deleteTrashEntry(long classPK)
043 throws PortalException, SystemException {
044
045 BookmarksFolderLocalServiceUtil.deleteFolder(classPK, false);
046 }
047
048 @Override
049 public String getClassName() {
050 return BookmarksFolder.class.getName();
051 }
052
053 @Override
054 public String getDeleteMessage() {
055 return "found-in-deleted-folder-x";
056 }
057
058 @Override
059 public ContainerModel getParentContainerModel(long classPK)
060 throws PortalException, SystemException {
061
062 BookmarksFolder folder = getBookmarksFolder(classPK);
063
064 long parentFolderId = folder.getParentFolderId();
065
066 if (parentFolderId <= 0) {
067 return null;
068 }
069
070 return getContainerModel(parentFolderId);
071 }
072
073 @Override
074 public String getRestoreContainedModelLink(
075 PortletRequest portletRequest, long classPK)
076 throws PortalException, SystemException {
077
078 BookmarksFolder folder = getBookmarksFolder(classPK);
079
080 return BookmarksUtil.getControlPanelLink(
081 portletRequest, folder.getFolderId());
082 }
083
084 @Override
085 public String getRestoreContainerModelLink(
086 PortletRequest portletRequest, long classPK)
087 throws PortalException, SystemException {
088
089 BookmarksFolder folder = getBookmarksFolder(classPK);
090
091 return BookmarksUtil.getControlPanelLink(
092 portletRequest, folder.getParentFolderId());
093 }
094
095 @Override
096 public String getRestoreMessage(PortletRequest portletRequest, long classPK)
097 throws PortalException, SystemException {
098
099 BookmarksFolder folder = getBookmarksFolder(classPK);
100
101 return BookmarksUtil.getAbsolutePath(
102 portletRequest, folder.getParentFolderId());
103 }
104
105 @Override
106 public TrashEntry getTrashEntry(long classPK)
107 throws PortalException, SystemException {
108
109 BookmarksFolder folder = getBookmarksFolder(classPK);
110
111 return folder.getTrashEntry();
112 }
113
114 @Override
115 public TrashRenderer getTrashRenderer(long classPK)
116 throws PortalException, SystemException {
117
118 BookmarksFolder folder = getBookmarksFolder(classPK);
119
120 return new BookmarksFolderAssetRenderer(folder);
121 }
122
123 @Override
124 public boolean hasTrashPermission(
125 PermissionChecker permissionChecker, long groupId, long classPK,
126 String trashActionId)
127 throws PortalException, SystemException {
128
129 if (trashActionId.equals(TrashActionKeys.MOVE)) {
130 return BookmarksFolderPermission.contains(
131 permissionChecker, groupId, classPK, ActionKeys.ADD_FOLDER);
132 }
133
134 return super.hasTrashPermission(
135 permissionChecker, groupId, classPK, trashActionId);
136 }
137
138 @Override
139 public boolean isContainerModel() {
140 return true;
141 }
142
143 @Override
144 public boolean isInTrash(long classPK)
145 throws PortalException, SystemException {
146
147 BookmarksFolder folder = getBookmarksFolder(classPK);
148
149 return folder.isInTrash();
150 }
151
152 @Override
153 public boolean isInTrashContainer(long classPK)
154 throws PortalException, SystemException {
155
156 BookmarksFolder folder = getBookmarksFolder(classPK);
157
158 return folder.isInTrashContainer();
159 }
160
161 @Override
162 public boolean isRestorable(long classPK)
163 throws PortalException, SystemException {
164
165 BookmarksFolder folder = getBookmarksFolder(classPK);
166
167 if ((folder.getParentFolderId() > 0) &&
168 (BookmarksFolderLocalServiceUtil.fetchBookmarksFolder(
169 folder.getParentFolderId()) == null)) {
170
171 return false;
172 }
173
174 return !folder.isInTrashContainer();
175 }
176
177 @Override
178 public void moveEntry(
179 long userId, long classPK, long containerModelId,
180 ServiceContext serviceContext)
181 throws PortalException, SystemException {
182
183 BookmarksFolderLocalServiceUtil.moveFolder(classPK, containerModelId);
184 }
185
186 @Override
187 public void moveTrashEntry(
188 long userId, long classPK, long containerId,
189 ServiceContext serviceContext)
190 throws PortalException, SystemException {
191
192 BookmarksFolderLocalServiceUtil.moveFolderFromTrash(
193 userId, classPK, containerId);
194 }
195
196 @Override
197 public void restoreTrashEntry(long userId, long classPK)
198 throws PortalException, SystemException {
199
200 BookmarksFolderLocalServiceUtil.restoreFolderFromTrash(userId, classPK);
201 }
202
203 protected BookmarksFolder getBookmarksFolder(long classPK)
204 throws PortalException, SystemException {
205
206 return BookmarksFolderLocalServiceUtil.getFolder(classPK);
207 }
208
209 @Override
210 protected long getGroupId(long classPK)
211 throws PortalException, SystemException {
212
213 BookmarksFolder folder = getBookmarksFolder(classPK);
214
215 return folder.getGroupId();
216 }
217
218 @Override
219 protected boolean hasPermission(
220 PermissionChecker permissionChecker, long classPK, String actionId)
221 throws PortalException, SystemException {
222
223 BookmarksFolder folder = getBookmarksFolder(classPK);
224
225 return BookmarksFolderPermission.contains(
226 permissionChecker, folder, actionId);
227 }
228
229 }