001
014
015 package com.liferay.portlet.journal.trash;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.language.LanguageUtil;
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 import java.util.Locale;
033
034
037 public abstract class JournalBaseTrashHandler extends BaseTrashHandler {
038
039 @Override
040 public ContainerModel getContainerModel(long containerModelId)
041 throws PortalException {
042
043 return JournalFolderLocalServiceUtil.getFolder(containerModelId);
044 }
045
046 @Override
047 public String getContainerModelClassName(long classPK) {
048 return JournalFolder.class.getName();
049 }
050
051 @Override
052 public String getContainerModelName(long classPK) {
053 return "folder";
054 }
055
056 @Override
057 public List<ContainerModel> getContainerModels(
058 long classPK, long parentContainerModelId, int start, int end)
059 throws PortalException {
060
061 List<JournalFolder> folders = 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 {
078
079 return JournalFolderLocalServiceUtil.getFoldersCount(
080 getGroupId(classPK), parentContainerModelId);
081 }
082
083 @Override
084 public List<ContainerModel> getParentContainerModels(long classPK)
085 throws PortalException {
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 "folder";
114 }
115
116 @Override
117 public String getRootContainerModelTitle(
118 long containerModelId, Locale locale) {
119
120 return LanguageUtil.get(locale, "home");
121 }
122
123 @Override
124 public String getSubcontainerModelName() {
125 return "folder";
126 }
127
128 @Override
129 public String getTrashContainedModelName() {
130 return "article";
131 }
132
133 @Override
134 public int getTrashContainedModelsCount(long classPK)
135 throws PortalException {
136
137 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
138
139 return JournalArticleLocalServiceUtil.searchCount(
140 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH);
141 }
142
143 @Override
144 public List<TrashRenderer> getTrashContainedModelTrashRenderers(
145 long classPK, int start, int end)
146 throws PortalException {
147
148 List<TrashRenderer> trashRenderers = new ArrayList<TrashRenderer>();
149
150 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
151
152 List<JournalArticle> articles =
153 JournalArticleLocalServiceUtil.search(
154 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH,
155 start, end);
156
157 for (JournalArticle article : articles) {
158 TrashHandler trashHandler =
159 TrashHandlerRegistryUtil.getTrashHandler(
160 JournalArticle.class.getName());
161
162 TrashRenderer trashRenderer = trashHandler.getTrashRenderer(
163 article.getResourcePrimKey());
164
165 trashRenderers.add(trashRenderer);
166 }
167
168 return trashRenderers;
169 }
170
171 @Override
172 public String getTrashContainerModelName() {
173 return "folders";
174 }
175
176 @Override
177 public int getTrashContainerModelsCount(long classPK)
178 throws PortalException {
179
180 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
181
182 return JournalFolderLocalServiceUtil.getFoldersCount(
183 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH);
184 }
185
186 @Override
187 public List<TrashRenderer> getTrashContainerModelTrashRenderers(
188 long classPK, int start, int end)
189 throws PortalException {
190
191 List<TrashRenderer> trashRenderers = new ArrayList<TrashRenderer>();
192
193 JournalFolder folder = JournalFolderLocalServiceUtil.getFolder(classPK);
194
195 List<JournalFolder> folders =
196 JournalFolderLocalServiceUtil.getFolders(
197 folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH,
198 start, end);
199
200 for (JournalFolder curFolder : folders) {
201 TrashHandler trashHandler =
202 TrashHandlerRegistryUtil.getTrashHandler(
203 JournalFolder.class.getName());
204
205 TrashRenderer trashRenderer = trashHandler.getTrashRenderer(
206 curFolder.getPrimaryKey());
207
208 trashRenderers.add(trashRenderer);
209 }
210
211 return trashRenderers;
212 }
213
214 @Override
215 public boolean isMovable() {
216 return true;
217 }
218
219 protected abstract long getGroupId(long classPK) throws PortalException;
220
221 }