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