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