001
014
015 package com.liferay.portlet.journal.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.kernel.util.Validator;
022 import com.liferay.portal.model.ContainerModel;
023 import com.liferay.portal.security.permission.ActionKeys;
024 import com.liferay.portal.security.permission.PermissionChecker;
025 import com.liferay.portal.service.ServiceContext;
026 import com.liferay.portlet.journal.asset.JournalFolderAssetRenderer;
027 import com.liferay.portlet.journal.model.JournalFolder;
028 import com.liferay.portlet.journal.service.JournalFolderLocalServiceUtil;
029 import com.liferay.portlet.journal.service.permission.JournalFolderPermission;
030 import com.liferay.portlet.journal.util.JournalUtil;
031 import com.liferay.portlet.trash.DuplicateEntryException;
032 import com.liferay.portlet.trash.model.TrashEntry;
033
034 import javax.portlet.PortletRequest;
035
036
041 public class JournalFolderTrashHandler extends JournalBaseTrashHandler {
042
043 @Override
044 public void checkDuplicateEntry(
045 long classPK, long containerModelId, String newName)
046 throws PortalException, SystemException {
047
048 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
049
050 checkDuplicateEntry(
051 classPK, 0, containerModelId, folder.getName(), newName);
052 }
053
054 @Override
055 public void checkDuplicateTrashEntry(
056 TrashEntry trashEntry, long containerModelId, String newName)
057 throws PortalException, SystemException {
058
059 checkDuplicateEntry(
060 trashEntry.getClassPK(), trashEntry.getEntryId(), containerModelId,
061 trashEntry.getTypeSettingsProperty("title"), newName);
062 }
063
064 @Override
065 public void deleteTrashEntry(long classPK)
066 throws PortalException, SystemException {
067
068 JournalFolderLocalServiceUtil.deleteFolder(classPK, false);
069 }
070
071 @Override
072 public String getClassName() {
073 return JournalFolder.class.getName();
074 }
075
076 @Override
077 public String getDeleteMessage() {
078 return "found-in-deleted-folder-x";
079 }
080
081 @Override
082 public ContainerModel getParentContainerModel(long classPK)
083 throws PortalException, SystemException {
084
085 JournalFolder folder = getJournalFolder(classPK);
086
087 long parentFolderId = folder.getParentFolderId();
088
089 if (parentFolderId <= 0) {
090 return null;
091 }
092
093 return getContainerModel(parentFolderId);
094 }
095
096 @Override
097 public String getRestoreLink(PortletRequest portletRequest, long classPK)
098 throws PortalException, SystemException {
099
100 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
101
102 return JournalUtil.getJournalControlPanelLink(
103 portletRequest, folder.getParentFolderId());
104 }
105
106 @Override
107 public String getRestoreMessage(PortletRequest portletRequest, long classPK)
108 throws PortalException, SystemException {
109
110 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
111
112 return JournalUtil.getAbsolutePath(
113 portletRequest, folder.getParentFolderId());
114 }
115
116 @Override
117 public ContainerModel getTrashContainer(long classPK)
118 throws PortalException, SystemException {
119
120 JournalFolder folder = getJournalFolder(classPK);
121
122 return folder.getTrashContainer();
123 }
124
125 @Override
126 public TrashRenderer getTrashRenderer(long classPK)
127 throws PortalException, SystemException {
128
129 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
130
131 return new JournalFolderAssetRenderer(folder);
132 }
133
134 @Override
135 public boolean hasTrashPermission(
136 PermissionChecker permissionChecker, long groupId, long classPK,
137 String trashActionId)
138 throws PortalException, SystemException {
139
140 if (trashActionId.equals(TrashActionKeys.MOVE)) {
141 return JournalFolderPermission.contains(
142 permissionChecker, groupId, classPK, ActionKeys.ADD_FOLDER);
143 }
144
145 return super.hasTrashPermission(
146 permissionChecker, groupId, classPK, trashActionId);
147 }
148
149 @Override
150 public boolean isContainerModel() {
151 return true;
152 }
153
154 @Override
155 public boolean isInTrash(long classPK)
156 throws PortalException, SystemException {
157
158 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
159
160 return folder.isInTrash();
161 }
162
163 @Override
164 public boolean isInTrashContainer(long classPK)
165 throws PortalException, SystemException {
166
167 JournalFolder folder = getJournalFolder(classPK);
168
169 return folder.isInTrashContainer();
170 }
171
172 @Override
173 public boolean isRestorable(long classPK)
174 throws PortalException, SystemException {
175
176 JournalFolder folder = getJournalFolder(classPK);
177
178 if ((folder.getParentFolderId() > 0) &&
179 (JournalFolderLocalServiceUtil.fetchFolder(
180 folder.getParentFolderId()) == null)) {
181
182 return false;
183 }
184
185 return !folder.isInTrashContainer();
186 }
187
188 @Override
189 public void moveEntry(
190 long userId, long classPK, long containerModelId,
191 ServiceContext serviceContext)
192 throws PortalException, SystemException {
193
194 JournalFolderLocalServiceUtil.moveFolder(
195 classPK, containerModelId, serviceContext);
196 }
197
198 @Override
199 public void moveTrashEntry(
200 long userId, long classPK, long containerModelId,
201 ServiceContext serviceContext)
202 throws PortalException, SystemException {
203
204 JournalFolderLocalServiceUtil.moveFolderFromTrash(
205 userId, classPK, containerModelId, serviceContext);
206 }
207
208 @Override
209 public void restoreTrashEntry(long userId, long classPK)
210 throws PortalException, SystemException {
211
212 JournalFolderLocalServiceUtil.restoreFolderFromTrash(userId, classPK);
213 }
214
215 @Override
216 public void updateTitle(long classPK, String name)
217 throws PortalException, SystemException {
218
219 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
220
221 folder.setName(name);
222
223 JournalFolderLocalServiceUtil.updateJournalFolder(folder);
224 }
225
226 protected void checkDuplicateEntry(
227 long classPK, long trashEntryId, long containerModelId,
228 String originalTitle, String newName)
229 throws PortalException, SystemException {
230
231 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
232
233 if (Validator.isNotNull(newName)) {
234 originalTitle = newName;
235 }
236
237 JournalFolder duplicateFolder =
238 JournalFolderLocalServiceUtil.fetchFolder(
239 folder.getGroupId(), containerModelId, originalTitle);
240
241 if (duplicateFolder != null) {
242 DuplicateEntryException dee = new DuplicateEntryException();
243
244 dee.setDuplicateEntryId(duplicateFolder.getFolderId());
245 dee.setOldName(duplicateFolder.getName());
246 dee.setTrashEntryId(trashEntryId);
247
248 throw dee;
249 }
250 }
251
252 @Override
253 protected long getGroupId(long classPK)
254 throws PortalException, SystemException {
255
256 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
257
258 return folder.getGroupId();
259 }
260
261 protected JournalFolder getJournalFolder(long classPK)
262 throws PortalException, SystemException {
263
264 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
265
266 return folder;
267 }
268
269 @Override
270 protected boolean hasPermission(
271 PermissionChecker permissionChecker, long classPK, String actionId)
272 throws PortalException, SystemException {
273
274 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
275
276 return JournalFolderPermission.contains(
277 permissionChecker, folder, actionId);
278 }
279
280 }