/*
* Copyright (C) 2003-2008 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.services.wcm.publication;
import java.util.HashMap;
import java.util.List;
import javax.jcr.Node;
import org.exoplatform.services.jcr.ext.common.SessionProvider;
import org.exoplatform.services.wcm.core.NodeLocation;
/**
* Gets content inside WCM.
* In general, this service stands between publication and cache,
* so you should not access content directly from the JCR on the front side.
*
* @LevelAPI Experimental
*/
public interface WCMComposer {
/** Filter parameter to filter results by state. For example: draft, staged, published. */
public final static String FILTER_STATE = "filter-state";
/** Filter parameter to filter results by primary type. For example: exo:webContent. */
public final static String FILTER_PRIMARY_TYPE = "filter-primary-type";
/** Filter parameter to order results. For example: exo:title, dc:title. */
public final static String FILTER_ORDER_BY = "filter-order-by";
/** Filter parameter to order results in ascending or descending order. Its values are: ASC and DESC. */
public final static String FILTER_ORDER_TYPE = "filter-order-type";
/** Filter parameter to filter results by target mode. For example: editing, approving, live. */
public final static String FILTER_MODE = "filter-mode";
/** Filter parameter to search recursively or not. For example: recursive.*/
public final static String FILTER_RECURSIVE = "filter-recursive";
/** Filter parameter to filter results by a dedicated version. For example: base, 1, 2, 3, and more.*/
public final static String FILTER_VERSION = "filter-version";
/** Filter parameter to filter results by site. For example: ACME. */
public final static String FILTER_SITE_NAME = "filter-site";
/** Filter parameter to filter results by user. This means only content authored by this user is returned. */
public final static String FILTER_REMOTE_USER = "filter-remote-user";
/** Filter parameter to filter results by language. This means only content in this language is returned. For example: fr, en, de. */
public final static String FILTER_LANGUAGE = "filter-language";
/** Filter parameter to add a parameter to the executed query. For example: "AND exo:myproperty like 'cat1%'".*/
public final static String FILTER_QUERY = "filter-query";
/** Filter parameter to execute a specific query. For example: "SELECT * from nt:base".*/
public final static String FILTER_QUERY_FULL = "filter-query-full";
/** Filter parameter to limit the result size. */
public final static String FILTER_LIMIT = "filter-limit";
/** Filter parameter to return results with an offset delimiter. */
public final static String FILTER_OFFSET = "filter-offset";
/** Total number of content. */
public final static String FILTER_TOTAL = "filter-total-number";
/** Filter parameter to filter results by visibility. For example: public, user. */
public final static String FILTER_VISIBILITY = "filter-visibility";
/** Mode of portlet. **/
public final static String PORTLET_MODE = "portlet-mode";
/** The constant MODE_EDIT. */
public final static String MODE_EDIT = "Edit";
/** The constant MODE_LIVE. */
public final static String MODE_LIVE = "Live";
/** The constant IS_RECURSIVE. */
public final static String IS_RECURSIVE = "rec";
/** The constant for base version. */
public final static String BASE_VERSION = "base";
/** The constant VISIBILITY PUBLIC. */
public final static String VISIBILITY_PUBLIC = "public";
/** The constant VISIBILITY USER. */
public final static String VISIBILITY_USER = "user";
/**
* Gets a content node at a specified path based on given filters.
*
* @param workspace The workspace that includes the content node.
* @param nodeIdentifier Identifier of the content node.
* @param filters The given filters.
* @param sessionProvider The session provider.
* @return The content node.
* @throws Exception The exception
*/
public Node getContent(String workspace,
String nodeIdentifier,
HashMap<String, String> filters,
SessionProvider sessionProvider) throws Exception;
/**
* Gets content nodes at a specified path based on given filters.
*
* @param workspace The workspace that includes the content nodes.
* @param path The path.
* @param filters The given filters.
* @param sessionProvider The session provider.
* @return The list of content nodes.
* @throws Exception The exception
*/
public List<Node> getContents(String workspace,
String path,
HashMap<String, String> filters,
SessionProvider sessionProvider) throws Exception;
/**
* Gets content nodes that are paginated at a specified path based on given filters.
*
* @param nodeLocation Location of the content nodes.
* @param filters The given filters.
* @param sessionProvider The session provider.
* @return The list of content nodes.
* @throws Exception The exception
*/
public Result getPaginatedContents(NodeLocation nodeLocation,
HashMap<String, String> filters,
SessionProvider sessionProvider) throws Exception ;
/**
* Gets the allowed states for a given mode.
*
* @param mode The given mode.
* @return The list of states.
* @throws Exception The exception
*/
public List<String> getAllowedStates(String mode) throws Exception ;
/**
* Resets the template filters.
*
* @throws Exception the exception
*/
public void cleanTemplates() throws Exception ;
/**
* Updates the SQL filter of templates.
*
* @return A part of the query that allows to search all document nodes and taxonomy links. It returns "null" if there is any exception.
* @throws Exception the exception
*/
public String updateTemplatesSQLFilter() throws Exception;
}