001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
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.model.ContainerModel;
024    import com.liferay.portlet.bookmarks.model.BookmarksEntry;
025    import com.liferay.portlet.bookmarks.model.BookmarksFolder;
026    import com.liferay.portlet.bookmarks.service.BookmarksEntryLocalServiceUtil;
027    import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
028    
029    import java.util.ArrayList;
030    import java.util.List;
031    
032    /**
033     * Represents the trash handler for bookmarks folder entity.
034     *
035     * @author Eudaldo Alonso
036     */
037    public abstract class BookmarksBaseTrashHandler extends BaseTrashHandler {
038    
039            @Override
040            public ContainerModel getContainerModel(long containerModelId)
041                    throws PortalException, SystemException {
042    
043                    return BookmarksFolderLocalServiceUtil.getFolder(containerModelId);
044            }
045    
046            @Override
047            public String getContainerModelClassName() {
048                    return BookmarksFolder.class.getName();
049            }
050    
051            @Override
052            public String getContainerModelName() {
053                    return "folder";
054            }
055    
056            @Override
057            public List<ContainerModel> getContainerModels(
058                            long classPK, long parentContainerModelId, int start, int end)
059                    throws PortalException, SystemException {
060    
061                    BookmarksFolder folder = getBookmarksFolder(classPK);
062    
063                    List<BookmarksFolder> folders =
064                            BookmarksFolderLocalServiceUtil.getFolders(
065                                    folder.getGroupId(), parentContainerModelId, start, end);
066    
067                    List<ContainerModel> containerModels = new ArrayList<ContainerModel>(
068                            folders.size());
069    
070                    for (BookmarksFolder curFolder : folders) {
071                            containerModels.add(curFolder);
072                    }
073    
074                    return containerModels;
075            }
076    
077            @Override
078            public int getContainerModelsCount(
079                            long classPK, long parentContainerModelId)
080                    throws PortalException, SystemException {
081    
082                    BookmarksFolder folder = getBookmarksFolder(classPK);
083    
084                    return BookmarksFolderLocalServiceUtil.getFoldersCount(
085                            folder.getGroupId(), parentContainerModelId);
086            }
087    
088            @Override
089            public List<ContainerModel> getParentContainerModels(long classPK)
090                    throws PortalException, SystemException {
091    
092                    List<ContainerModel> containerModels = new ArrayList<ContainerModel>();
093    
094                    ContainerModel containerModel = getParentContainerModel(classPK);
095    
096                    if (containerModel == null) {
097                            return containerModels;
098                    }
099    
100                    containerModels.add(containerModel);
101    
102                    while (containerModel.getParentContainerModelId() > 0) {
103                            containerModel = getContainerModel(
104                                    containerModel.getParentContainerModelId());
105    
106                            if (containerModel == null) {
107                                    break;
108                            }
109    
110                            containerModels.add(containerModel);
111                    }
112    
113                    return containerModels;
114            }
115    
116            @Override
117            public String getRootContainerModelName() {
118                    return "home";
119            }
120    
121            @Override
122            public String getTrashContainedModelName() {
123                    return "bookmarks";
124            }
125    
126            @Override
127            public int getTrashContainedModelsCount(long classPK)
128                    throws PortalException, SystemException {
129    
130                    BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder(
131                            classPK);
132    
133                    return BookmarksEntryLocalServiceUtil.getEntriesCount(
134                            folder.getGroupId(), classPK);
135            }
136    
137            @Override
138            public List<TrashRenderer> getTrashContainedModelTrashRenderers(
139                            long classPK, int start, int end)
140                    throws PortalException, SystemException {
141    
142                    List<TrashRenderer> trashRenderers = new ArrayList<TrashRenderer>();
143    
144                    BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder(
145                            classPK);
146    
147                    List<BookmarksEntry> entries =
148                            BookmarksEntryLocalServiceUtil.getEntries(
149                                    folder.getGroupId(), classPK, start, end);
150    
151                    for (BookmarksEntry entry : entries) {
152                            TrashHandler trashHandler =
153                                    TrashHandlerRegistryUtil.getTrashHandler(
154                                            BookmarksEntry.class.getName());
155    
156                            TrashRenderer trashRenderer = trashHandler.getTrashRenderer(
157                                    entry.getEntryId());
158    
159                            trashRenderers.add(trashRenderer);
160                    }
161    
162                    return trashRenderers;
163            }
164    
165            @Override
166            public String getTrashContainerModelName() {
167                    return "folders";
168            }
169    
170            @Override
171            public int getTrashContainerModelsCount(long classPK)
172                    throws PortalException, SystemException {
173    
174                    BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder(
175                            classPK);
176    
177                    return BookmarksFolderLocalServiceUtil.getFoldersCount(
178                            folder.getGroupId(), classPK);
179            }
180    
181            @Override
182            public List<TrashRenderer> getTrashContainerModelTrashRenderers(
183                            long classPK, int start, int end)
184                    throws PortalException, SystemException {
185    
186                    List<TrashRenderer> trashRenderers = new ArrayList<TrashRenderer>();
187    
188                    BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder(
189                            classPK);
190    
191                    List<BookmarksFolder> folders =
192                            BookmarksFolderLocalServiceUtil.getFolders(
193                                            folder.getGroupId(), classPK, start, end);
194    
195                    for (BookmarksFolder curFolder : folders) {
196                            TrashHandler trashHandler =
197                                    TrashHandlerRegistryUtil.getTrashHandler(
198                                            BookmarksFolder.class.getName());
199    
200                            TrashRenderer trashRenderer = trashHandler.getTrashRenderer(
201                                    curFolder.getPrimaryKey());
202    
203                            trashRenderers.add(trashRenderer);
204                    }
205    
206                    return trashRenderers;
207            }
208    
209            @Override
210            public boolean isMovable() {
211                    return true;
212            }
213    
214            protected abstract BookmarksFolder getBookmarksFolder(long classPK)
215                    throws PortalException, SystemException;
216    
217    }