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.BaseTrashHandler;
020 import com.liferay.portal.kernel.trash.TrashRenderer;
021 import com.liferay.portal.security.permission.PermissionChecker;
022 import com.liferay.portlet.journal.asset.JournalArticleAssetRenderer;
023 import com.liferay.portlet.journal.model.JournalArticle;
024 import com.liferay.portlet.journal.model.JournalArticleResource;
025 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
026 import com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil;
027 import com.liferay.portlet.journal.service.JournalArticleServiceUtil;
028 import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
029 import com.liferay.portlet.journal.util.JournalUtil;
030 import com.liferay.portlet.trash.DuplicateEntryException;
031 import com.liferay.portlet.trash.model.TrashEntry;
032
033 import javax.portlet.PortletRequest;
034
035
041 public class JournalArticleTrashHandler extends BaseTrashHandler {
042
043 public static final String CLASS_NAME = JournalArticle.class.getName();
044
045 @Override
046 public void checkDuplicateTrashEntry(
047 TrashEntry trashEntry, long containerModelId, String newName)
048 throws PortalException, SystemException {
049
050 JournalArticle article =
051 JournalArticleLocalServiceUtil.getLatestArticle(
052 trashEntry.getClassPK());
053
054 String originalTitle = trashEntry.getTypeSettingsProperty("title");
055
056 JournalArticleResource articleResource =
057 JournalArticleResourceLocalServiceUtil.fetchArticleResource(
058 article.getGroupId(), originalTitle);
059
060 if (articleResource != null) {
061 DuplicateEntryException dee = new DuplicateEntryException();
062
063 JournalArticle duplicateArticle =
064 JournalArticleLocalServiceUtil.getArticle(
065 articleResource.getGroupId(), originalTitle);
066
067 dee.setDuplicateEntryId(duplicateArticle.getResourcePrimKey());
068 dee.setOldName(duplicateArticle.getArticleId());
069 dee.setTrashEntryId(trashEntry.getEntryId());
070
071 throw dee;
072 }
073 }
074
075 public void deleteTrashEntries(long[] classPKs, boolean checkPermission)
076 throws PortalException, SystemException {
077
078 for (long classPK : classPKs) {
079 JournalArticle article =
080 JournalArticleLocalServiceUtil.getLatestArticle(classPK);
081
082 if (checkPermission) {
083 JournalArticleServiceUtil.deleteArticle(
084 article.getGroupId(), article.getArticleId(), null, null);
085 }
086 else {
087 JournalArticleLocalServiceUtil.deleteArticle(
088 article.getGroupId(), article.getArticleId(), null);
089 }
090 }
091 }
092
093 public String getClassName() {
094 return CLASS_NAME;
095 }
096
097 @Override
098 public String getRestoreLink(PortletRequest portletRequest, long classPK)
099 throws PortalException, SystemException {
100
101 JournalArticle article =
102 JournalArticleLocalServiceUtil.getLatestArticle(classPK);
103
104 return JournalUtil.getJournalControlPanelLink(
105 portletRequest, article.getFolderId());
106 }
107
108 @Override
109 public String getRestoreMessage(PortletRequest portletRequest, long classPK)
110 throws PortalException, SystemException {
111
112 JournalArticle article =
113 JournalArticleLocalServiceUtil.getLatestArticle(classPK);
114
115 return JournalUtil.getAbsolutePath(
116 portletRequest, article.getFolderId());
117 }
118
119 @Override
120 public TrashRenderer getTrashRenderer(long classPK)
121 throws PortalException, SystemException {
122
123 JournalArticle article =
124 JournalArticleLocalServiceUtil.getLatestArticle(classPK);
125
126 return new JournalArticleAssetRenderer(article);
127 }
128
129 public boolean isInTrash(long classPK)
130 throws PortalException, SystemException {
131
132 JournalArticle article =
133 JournalArticleLocalServiceUtil.getLatestArticle(classPK);
134
135 return article.isInTrash();
136 }
137
138 public void restoreTrashEntries(long[] classPKs)
139 throws PortalException, SystemException {
140
141 for (long classPK : classPKs) {
142 JournalArticleServiceUtil.restoreArticleFromTrash(classPK);
143 }
144 }
145
146 @Override
147 public void updateTitle(long classPK, String name)
148 throws PortalException, SystemException {
149
150 JournalArticle article =
151 JournalArticleLocalServiceUtil.getLatestArticle(classPK);
152
153 article.setArticleId(name);
154
155 JournalArticleLocalServiceUtil.updateJournalArticle(article);
156
157 JournalArticleResource articleResource =
158 JournalArticleResourceLocalServiceUtil.getArticleResource(
159 article.getResourcePrimKey());
160
161 articleResource.setArticleId(name);
162
163 JournalArticleResourceLocalServiceUtil.updateJournalArticleResource(
164 articleResource);
165 }
166
167 @Override
168 protected boolean hasPermission(
169 PermissionChecker permissionChecker, long classPK, String actionId)
170 throws PortalException, SystemException {
171
172 return JournalArticlePermission.contains(
173 permissionChecker, classPK, actionId);
174 }
175
176 }