/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.bookmarks.internal.trash; import com.liferay.bookmarks.model.BookmarksEntry; import com.liferay.bookmarks.model.BookmarksFolder; import com.liferay.bookmarks.service.BookmarksEntryLocalServiceUtil; import com.liferay.bookmarks.service.BookmarksFolderLocalServiceUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.model.ContainerModel; import com.liferay.portal.kernel.model.TrashedModel; import com.liferay.portal.kernel.trash.BaseTrashHandler; import com.liferay.portal.kernel.util.OrderByComparator; import com.liferay.portal.kernel.workflow.WorkflowConstants; import java.util.ArrayList; import java.util.List; /** * Represents the trash handler for bookmarks folder entity. * * @author Eudaldo Alonso */ public abstract class BookmarksBaseTrashHandler extends BaseTrashHandler { @Override public ContainerModel getContainerModel(long containerModelId) throws PortalException { return BookmarksFolderLocalServiceUtil.getFolder(containerModelId); } @Override public String getContainerModelClassName(long classPK) { return BookmarksFolder.class.getName(); } @Override public List<ContainerModel> getContainerModels( long classPK, long parentContainerModelId, int start, int end) throws PortalException { List<BookmarksFolder> folders = BookmarksFolderLocalServiceUtil.getFolders( getGroupId(classPK), parentContainerModelId, start, end); List<ContainerModel> containerModels = new ArrayList<>(folders.size()); for (BookmarksFolder curFolder : folders) { containerModels.add(curFolder); } return containerModels; } @Override public int getContainerModelsCount( long classPK, long parentContainerModelId) throws PortalException { return BookmarksFolderLocalServiceUtil.getFoldersCount( getGroupId(classPK), parentContainerModelId); } @Override public List<ContainerModel> getParentContainerModels(long classPK) throws PortalException { List<ContainerModel> containerModels = new ArrayList<>(); ContainerModel containerModel = getParentContainerModel(classPK); if (containerModel == null) { return containerModels; } containerModels.add(containerModel); while (containerModel.getParentContainerModelId() > 0) { containerModel = getContainerModel( containerModel.getParentContainerModelId()); if (containerModel == null) { break; } containerModels.add(containerModel); } return containerModels; } @Override public String getRootContainerModelName() { return "folder"; } @Override public String getSubcontainerModelName() { return "folder"; } @Override public String getTrashContainedModelName() { return "bookmarks"; } @Override public int getTrashContainedModelsCount(long classPK) throws PortalException { BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder( classPK); return BookmarksEntryLocalServiceUtil.getEntriesCount( folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH); } @Override public String getTrashContainerModelName() { return "folders"; } @Override public int getTrashContainerModelsCount(long classPK) throws PortalException { BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder( classPK); return BookmarksFolderLocalServiceUtil.getFoldersCount( folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH); } @Override public int getTrashModelsCount(long classPK) throws PortalException { BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder( classPK); return BookmarksFolderLocalServiceUtil.getFoldersAndEntriesCount( folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH); } @Override public List<TrashedModel> getTrashModelTrashedModels( long classPK, int start, int end, OrderByComparator obc) throws PortalException { List<TrashedModel> trashedModels = new ArrayList<>(); BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder( classPK); List<Object> foldersAndEntries = BookmarksFolderLocalServiceUtil.getFoldersAndEntries( folder.getGroupId(), classPK, WorkflowConstants.STATUS_IN_TRASH, start, end, obc); for (Object folderOrEntry : foldersAndEntries) { if (folderOrEntry instanceof BookmarksFolder) { BookmarksFolder curFolder = (BookmarksFolder)folderOrEntry; trashedModels.add(curFolder); } else { BookmarksEntry entry = (BookmarksEntry)folderOrEntry; trashedModels.add(entry); } } return trashedModels; } @Override public boolean isMovable() { return true; } protected abstract long getGroupId(long classPK) throws PortalException; }