package org.sakaiproject.citation.api;
public interface SearchCategory
{
/**
* Returns the display name of this category
*
* @return display name of this category
*/
public String getDisplayName();
/**
* Returns the description of this category
*
* @return description of this category
*/
public String getDescription();
/**
* Returns the id of this category
*
* @return id of this category
*/
public String getId();
/**
* Indicates whether this category has any databases within it
*
* @return true if this category contains at least one database,
* false otherwise
*/
public boolean hasDatabases();
/**
* Returns the databases contained in this category
*
* @return a java.util.List containing SearchDatabase objects within this SearchCategory,
* null if this category does not contain any databases (if hasDatabases() returns false)
*/
public java.util.List<SearchDatabase> getDatabases();
/**
* Determines whether the given database is recommended within this category
*
* @param databaseId id of the database to check
* @return true if the database is recommended, false otherwise (also returns
* false if this database does not exist in this category)
*/
public boolean isDatabaseRecommended( String databaseId );
/**
* Indicates whether this category has any sub-categories within it
*
* @return true if this category contains at least one category,
* false otherwise
*/
public boolean hasSubCategories();
/**
* Returns the categories contained within this category
*
* @return a list containing SearchCategory objects within this SearchCategory,
* null if this category does not contain any categories (if hasSubCategories() returns false)
*/
public java.util.List<SearchCategory> getSubCategories();
}