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.TrashHandler;
021 import com.liferay.portal.kernel.trash.TrashHandlerRegistryUtil;
022 import com.liferay.portal.kernel.trash.TrashRenderer;
023 import com.liferay.portal.kernel.workflow.WorkflowConstants;
024 import com.liferay.portal.model.ContainerModel;
025 import com.liferay.portlet.journal.model.JournalArticle;
026 import com.liferay.portlet.journal.model.JournalFolder;
027 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
028 import com.liferay.portlet.journal.service.JournalFolderLocalServiceUtil;
029
030 import java.util.ArrayList;
031 import java.util.List;
032
033
036 public abstract class JournalBaseTrashHandler extends BaseTrashHandler {
037
038 @Override
039 public ContainerModel getContainerModel(long containerModelId)
040 throws PortalException, SystemException {
041
042 return JournalFolderLocalServiceUtil.getFolder(containerModelId);
043 }
044
045 @Override
046 public String getContainerModelClassName() {
047 return JournalFolder.class.getName();
048 }
049
050 @Override
051 public String getContainerModelName() {
052 return "folder";
053 }
054
055 @Override
056 public List<ContainerModel> getContainerModels(
057 long classPK, long parentContainerModelId, int start, int end)
058 throws PortalException, SystemException {
059
060 List<JournalFolder> folders =
061 JournalFolderLocalServiceUtil.getFolders(
062 getGroupId(classPK), parentContainerModelId, start, end);
063
064 List<ContainerModel> containerModels = new ArrayList<ContainerModel>(
065 folders.size());
066
067 for (JournalFolder curFolder : folders) {
068 containerModels.add(curFolder);
069 }
070
071 return containerModels;
072 }
073
074 @Override
075 public int getContainerModelsCount(
076 long classPK, long parentContainerModelId)
077 throws PortalException, SystemException {
078
079 return JournalFolderLocalServiceUtil.getFoldersCount(
080 getGroupId(classPK), parentContainerModelId);
081 }
082
083 @Override
084 public List<ContainerModel> getParentContainerModels(long classPK)
085 throws PortalException, SystemException {
086
087 List<ContainerModel> containerModels = new ArrayList<ContainerModel>();
088
089 ContainerModel containerModel = getParentContainerModel(classPK);
090
091 if (containerModel == null) {
092 return containerModels;
093 }
094
095 containerModels.add(containerModel);
096
097 while (containerModel.getParentContainerModelId() > 0) {
098 containerModel = getContainerModel(
099 containerModel.getParentContainerModelId());
100
101 if (containerModel == null) {
102 break;
103 }
104
105 containerModels.add(containerModel);
106 }
107
108 return containerModels;
109 }
110
111 @Override
112 public String getRootContainerModelName() {
113 return "home";
114 }
115
116 @Override
117 public String getTrashContainedModelName() {
118 return "article";
119 }
120
121 @Override
122 public int getTrashContainedModelsCount(long classPK)
123 throws PortalException, SystemException {
124
125 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
126
127 return JournalArticleLocalServiceUtil.searchCount(
128 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH);
129 }
130
131 @Override
132 public List<TrashRenderer> getTrashContainedModelTrashRenderers(
133 long classPK, int start, int end)
134 throws PortalException, SystemException {
135
136 List<TrashRenderer> trashRenderers = new ArrayList<TrashRenderer>();
137
138 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
139
140 List<JournalArticle> articles =
141 JournalArticleLocalServiceUtil.search(
142 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH,
143 start, end);
144
145 for (JournalArticle article : articles) {
146 TrashHandler trashHandler =
147 TrashHandlerRegistryUtil.getTrashHandler(
148 JournalArticle.class.getName());
149
150 TrashRenderer trashRenderer = trashHandler.getTrashRenderer(
151 article.getResourcePrimKey());
152
153 trashRenderers.add(trashRenderer);
154 }
155
156 return trashRenderers;
157 }
158
159 @Override
160 public String getTrashContainerModelName() {
161 return "folders";
162 }
163
164 @Override
165 public int getTrashContainerModelsCount(long classPK)
166 throws PortalException, SystemException {
167
168 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
169
170 return JournalFolderLocalServiceUtil.getFoldersCount(
171 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH);
172 }
173
174 @Override
175 public List<TrashRenderer> getTrashContainerModelTrashRenderers(
176 long classPK, int start, int end)
177 throws PortalException, SystemException {
178
179 List<TrashRenderer> trashRenderers = new ArrayList<TrashRenderer>();
180
181 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
182
183 List<JournalFolder> folders =
184 JournalFolderLocalServiceUtil.getFolders(
185 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH,
186 start, end);
187
188 for (JournalFolder curFolder : folders) {
189 TrashHandler trashHandler =
190 TrashHandlerRegistryUtil.getTrashHandler(
191 JournalFolder.class.getName());
192
193 TrashRenderer trashRenderer = trashHandler.getTrashRenderer(
194 curFolder.getPrimaryKey());
195
196 trashRenderers.add(trashRenderer);
197 }
198
199 return trashRenderers;
200 }
201
202 @Override
203 public boolean isMovable() {
204 return true;
205 }
206
207 protected abstract long getGroupId(long classPK)
208 throws PortalException, SystemException;
209
210 }