Class CmsCategoryService

java.lang.Object
org.opencms.relations.CmsCategoryService

public class CmsCategoryService extends Object
Provides several simplified methods for manipulating category relations.

Since:
6.9.2
See Also:
  • Field Details

  • Constructor Details

  • Method Details

    • getInstance

      Returns the singleton instance.

      Returns:
      the singleton instance
    • addResourceToCategory

      public void addResourceToCategory(CmsObject cms, String resourceName, CmsCategory category) throws CmsException
      Adds a resource identified by the given resource name to the given category.

      The resource has to be locked.

      Parameters:
      cms - the current cms context
      resourceName - the site relative path to the resource to add
      category - the category to add the resource to
      Throws:
      CmsException - if something goes wrong
    • addResourceToCategory

      public void addResourceToCategory(CmsObject cms, String resourceName, String categoryPath) throws CmsException
      Adds a resource identified by the given resource name to the category identified by the given category path.

      Only the most global category matching the given category path for the given resource will be affected.

      The resource has to be locked.

      Parameters:
      cms - the current cms context
      resourceName - the site relative path to the resource to add
      categoryPath - the path of the category to add the resource to
      Throws:
      CmsException - if something goes wrong
    • clearCategoriesForResource

      public void clearCategoriesForResource(CmsObject cms, String resourcePath) throws CmsException
      Removes the given resource from all categories.

      Parameters:
      cms - the cms context
      resourcePath - the resource to reset the categories for
      Throws:
      CmsException - if something goes wrong
    • copyCategories

      public void copyCategories(CmsObject cms, CmsResource fromResource, String toResourceSitePath) throws CmsException
      Adds all categories from one resource to another, skipping categories that are not available for the resource copied to. The resource where categories are copied to has to be locked.
      Parameters:
      cms - the CmsObject used for reading and writing.
      fromResource - the resource to copy the categories from.
      toResourceSitePath - the full site path of the resource to copy the categories to.
      Throws:
      CmsException - thrown if copying the resources fails.
    • createCategory

      public CmsCategory createCategory(CmsObject cms, CmsCategory parent, String name, String title, String description, String referencePath) throws CmsException
      Creates a new category.

      Will use the same category repository as the parent if specified, or the closest category repository to the reference path if specified, or the centralized category repository in all other cases.

      Parameters:
      cms - the current cms context
      parent - the parent category or null for a new top level category
      name - the name of the new category
      title - the title
      description - the description
      referencePath - the reference path for the category repository
      Returns:
      the new created category
      Throws:
      CmsException - if something goes wrong
    • deleteCategory

      public void deleteCategory(CmsObject cms, String categoryPath, String referencePath) throws CmsException
      Deletes the category identified by the given path.

      Only the most global category matching the given category path for the given resource will be affected.

      This method will try to lock the involved resource.

      Parameters:
      cms - the current cms context
      categoryPath - the path of the category to delete
      referencePath - the reference path to find the category repositories
      Throws:
      CmsException - if something goes wrong
    • getCategory

      public CmsCategory getCategory(CmsObject cms, CmsResource resource) throws CmsException
      Creates a category from the given resource.

      Parameters:
      cms - the cms context
      resource - the resource
      Returns:
      a category object
      Throws:
      CmsException - if something goes wrong
    • getCategory

      public CmsCategory getCategory(CmsObject cms, String categoryRootPath) throws CmsException
      Creates a category from the given category root path.

      Parameters:
      cms - the cms context
      categoryRootPath - the category root path
      Returns:
      a category object
      Throws:
      CmsException - if something goes wrong
    • getCategoryRepositories

      public List<String> getCategoryRepositories(CmsObject cms, String referencePath)
      Returns all category repositories for the given reference path.

      Parameters:
      cms - the cms context
      referencePath - the reference path
      Returns:
      a list of root paths
    • getRepositoryBaseFolderName

      Returns the category repositories base folder name.

      Parameters:
      cms - the cms context
      Returns:
      the category repositories base folder name
    • localizeCategories

      public List<CmsCategory> localizeCategories(CmsObject cms, List<CmsCategory> categories, Locale locale)
      Localizes a list of categories by reading locale-specific properties for their title and description, if possible.

      This method does not modify its input list of categories, or the categories in it.

      Parameters:
      cms - the CMS context to use for reading resources
      categories - the list of categories
      locale - the locale to use
      Returns:
      the list of localized categories
    • localizeCategory

      public CmsCategory localizeCategory(CmsObject cms, CmsCategory category, Locale locale)
      Localizes a single category by reading its locale-specific properties for title and description, if possible.

      Parameters:
      cms - the CMS context to use for reading resources
      category - the category to localize
      locale - the locale to use
      Returns:
      the localized category
    • moveCategory

      public void moveCategory(CmsObject cms, String oldCatPath, String newCatPath, String referencePath) throws CmsException
      Renames/Moves a category from the old path to the new one.

      This method will keep all categories in their original repository.

      Parameters:
      cms - the current cms context
      oldCatPath - the path of the category to move
      newCatPath - the new category path
      referencePath - the reference path to find the category
      Throws:
      CmsException - if something goes wrong
    • readCategories

      public List<CmsCategory> readCategories(CmsObject cms, String parentCategoryPath, boolean includeSubCats, String referencePath) throws CmsException
      Returns all categories given some search parameters.

      Parameters:
      cms - the current cms context
      parentCategoryPath - the path of the parent category to get the categories for
      includeSubCats - if to include all categories, or first level child categories only
      referencePath - the reference path to find all the category repositories
      Returns:
      a list of CmsCategory objects
      Throws:
      CmsException - if something goes wrong
    • readCategoriesForRepositories

      public List<CmsCategory> readCategoriesForRepositories(CmsObject cms, String parentCategoryPath, boolean includeSubCats, List<String> repositories) throws CmsException
      Returns all categories given some search parameters.

      Parameters:
      cms - the current cms context
      parentCategoryPath - the path of the parent category to get the categories for
      includeSubCats - if to include all categories, or first level child categories only
      repositories - a list of root paths
      Returns:
      a list of CmsCategory objects
      Throws:
      CmsException - if something goes wrong
    • readCategoriesForRepositories

      public List<CmsCategory> readCategoriesForRepositories(CmsObject cms, String parentCategoryPath, boolean includeSubCats, List<String> repositories, boolean includeRepositories) throws CmsException
      Returns all categories given some search parameters.

      Parameters:
      cms - the current cms context
      parentCategoryPath - the path of the parent category to get the categories for
      includeSubCats - if to include all categories, or first level child categories only
      repositories - a list of site paths
      includeRepositories - flag, indicating if the repositories itself should be returned as category.
      Returns:
      a list of CmsCategory objects
      Throws:
      CmsException - if something goes wrong
    • readCategory

      public CmsCategory readCategory(CmsObject cms, String categoryPath, String referencePath) throws CmsException
      Reads all categories identified by the given category path for the given reference path.

      Parameters:
      cms - the current cms context
      categoryPath - the path of the category to read
      referencePath - the reference path to find all the category repositories
      Returns:
      a list of matching categories, could also be empty, if no category exists with the given path
      Throws:
      CmsException - if something goes wrong
    • readCategoryResources

      public List<CmsResource> readCategoryResources(CmsObject cms, String categoryPath, boolean recursive, String referencePath) throws CmsException
      Reads the resources for a category identified by the given category path.

      Parameters:
      cms - the current cms context
      categoryPath - the path of the category to read the resources for
      recursive - true if including sub-categories
      referencePath - the reference path to find all the category repositories
      Returns:
      a list of CmsResource objects
      Throws:
      CmsException - if something goes wrong
    • readCategoryResources

      public List<CmsResource> readCategoryResources(CmsObject cms, String categoryPath, boolean recursive, String referencePath, CmsResourceFilter resFilter) throws CmsException
      Reads the resources for a category identified by the given category path.

      Parameters:
      cms - the current cms context
      categoryPath - the path of the category to read the resources for
      recursive - true if including sub-categories
      referencePath - the reference path to find all the category repositories
      resFilter - the resource filter to use
      Returns:
      a list of CmsResource objects
      Throws:
      CmsException - if something goes wrong
    • readResourceCategories

      Reads the categories for a resource.

      Parameters:
      cms - the current cms context
      resource - the resource to get the categories for
      Returns:
      the categories list
      Throws:
      CmsException - if something goes wrong
    • readResourceCategories

      public List<CmsCategory> readResourceCategories(CmsObject cms, String resourceName) throws CmsException
      Reads the categories for a resource identified by the given resource name.

      Parameters:
      cms - the current cms context
      resourceName - the path of the resource to get the categories for
      Returns:
      the categories list
      Throws:
      CmsException - if something goes wrong
    • removeResourceFromCategory

      public void removeResourceFromCategory(CmsObject cms, String resourceName, CmsCategory category) throws CmsException
      Removes a resource identified by the given resource name from the given category.

      The resource has to be previously locked.

      Parameters:
      cms - the current cms context
      resourceName - the site relative path to the resource to remove
      category - the category to remove the resource from
      Throws:
      CmsException - if something goes wrong
    • removeResourceFromCategory

      public void removeResourceFromCategory(CmsObject cms, String resourceName, String categoryPath) throws CmsException
      Removes a resource identified by the given resource name from the category identified by the given category path.

      The resource has to be previously locked.

      Parameters:
      cms - the current cms context
      resourceName - the site relative path to the resource to remove
      categoryPath - the path of the category to remove the resource from
      Throws:
      CmsException - if something goes wrong
    • repairRelations

      public void repairRelations(CmsObject cms, CmsResource resource) throws CmsException
      Repairs broken category relations.

      This could be caused by renaming/moving a category folder, or changing the category repositories base folder name.

      Also repairs problems when creating/deleting conflicting category folders across several repositories.

      The resource has to be previously locked.

      Parameters:
      cms - the cms context
      resource - the resource to repair
      Throws:
      CmsException - if something goes wrong
    • repairRelations

      public void repairRelations(CmsObject cms, String resourceName) throws CmsException
      Repairs broken category relations.

      This could be caused by renaming/moving a category folder, or changing the category repositories base folder name.

      Also repairs problems when creating/deleting conflicting category folders across several repositories.

      The resource has to be previously locked.

      Parameters:
      cms - the cms context
      resourceName - the site relative path to the resource to repair
      Throws:
      CmsException - if something goes wrong