package org.exoplatform.services.seo; import java.util.ArrayList; import java.util.List; import java.util.Locale; import javax.jcr.Node; /** * Supplies APIs to manage SEO data of pages or content. * This service includes some major functions that allow you to add, store, * get or remove metadata of pages or content. * * @LevelAPI Experimental */ public interface SEOService { /** * Stores metadata of a given page/content. * * @param metaModel Metadata of the page/content. * @param portalName Name of the site that contains the given page/content. * @param onContent Indicates whether the current page is content or portal. * @throws Exception The exception */ public void storeMetadata(PageMetadataModel metaModel, String portalName, boolean onContent, String language) throws Exception; /** * Gets metadata of a portal or content page. * * @param params The parameters list of a content page. * @param pageReference Reference of the page. * @param language Language of the page. * @return The page metadata. * @throws Exception The exception */ public PageMetadataModel getMetadata(ArrayList<String> params, String pageReference, String language) throws Exception; /** * Gets metadata of a portal page. * * @param pageReference Reference of the page. * @param language Language of the page. * @return The page metadata. * @throws Exception The exception */ public PageMetadataModel getPageMetadata(String pageReference, String language) throws Exception; /** * Gets metadata of a content page. * * @param params The parameters list of a content page. * @param language Language of the page. * @return The page metadata. * @throws Exception The exception */ public PageMetadataModel getContentMetadata(ArrayList<String> params, String language) throws Exception; /** * Removes metadata from a given page. * * @param metaModel Metadata of the given page. * @param portalName Name of the site that contains the given page. * @param onContent Indicates whether the current page is content or portal. * @param language Language of the given page. * @throws Exception The exception */ public void removePageMetadata(PageMetadataModel metaModel, String portalName, boolean onContent, String language) throws Exception; /** * Gets the content node by a given path. * * @param contentPath The given path. * @throws Exception The exception */ public Node getContentNode(String contentPath) throws Exception; /** * Creates a hash key from the page reference or the UUID of the node. * * @param uri The page reference of the node. * @return The hash key. * @throws Exception The exception */ public String getHash(String uri) throws Exception ; /** * Gets a sitemap of a given site. * * @param portalName Name of the given site. * @return The sitemap. * @throws Exception The exception */ public String getSitemap(String portalName) throws Exception; /** * Gets robots content of a given site. * * @param portalName Name of the given site. * @return The robots content. * @throws Exception The exception */ public String getRobots(String portalName) throws Exception; /** * Gets a list of options (INDEX and NOINDEX) for robots to index. * * @return The list of options (INDEX and NOINDEX). * @throws Exception The exception */ public List<String> getRobotsIndexOptions() throws Exception; /** * Gets a list of options (FOLLOW and NOFOLLOW) for robots to follow. * * @return The list of options (FOLLOW and NOFOLLOW). * @throws Exception The exception */ public List<String> getRobotsFollowOptions() throws Exception; /** * Gets a list of options for frequency. * * @return The list of options. * @throws Exception The exception */ public List<String> getFrequencyOptions() throws Exception; /** * Gets state of a page for its language of a given page. * * @param path Path of the page. * @param language Language of the page. * @param onContent Indicates whether the given page is content or portal. * @return The page state. * @throws Exception The exception */ public String getState(String path, String language, boolean onContent) throws Exception; /** * Gets all SEO languages of a given page. * * @param portalName Name of the site that contains the given page. * @param seoPath Path of the page. * @param onContent Indicates whether the given page is content or portal. * @return The list of SEO languages. * @throws Exception The exception */ public List<Locale> getSEOLanguages(String portalName, String seoPath, boolean onContent) throws Exception; }