/* * Copyright (C) 2003-2007 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.cms.queries; import java.util.List; import java.util.Set; import javax.jcr.Node; import javax.jcr.query.Query; import javax.jcr.query.QueryResult; import org.exoplatform.services.jcr.ext.common.SessionProvider; public interface QueryService { public static final String CACHE_NAME = "ecm.query"; /** * Get the relative path * * @return */ public String getRelativePath(); /** * Get queries by giving the following params : userName, repository, provider * * @param userName String Can be <code>null</code> * @param provider SessionProvider * @return queries * @see Query * @see SessionProvider * @throws Exception */ public List<Query> getQueries(String userName, SessionProvider provider) throws Exception; /** * Execute query by giving the following params : queryPath, workspace, * provider, userId * * @param queryPath String The path of query * @param workspace String The name of workspace * @param provider SessionProvider * @param userId String The id of current user * @return queries QueryResult * @see QueryResult * @see SessionProvider * @throws Exception */ public QueryResult execute(String queryPath, String workspace, SessionProvider provider, String userId) throws Exception; /** * Add new query by giving the following params : queryName, statement, * language, userName * * @param queryName String The name of query * @param statement String The statement query * @param language String The language is requested * @param userName String Can be <code>null</code> * @throws Exception */ public void addQuery(String queryName, String statement, String language, String userName) throws Exception; /** * Remove query by giving the following params : queryPath, userName * * @param queryPath String The path of query * @param userName String Can be <code>null</code> * @throws Exception */ public void removeQuery(String queryPath, String userName) throws Exception; /** * Add new shared query by giving the following params: queryName, statement, * language, permissions, cachedResult * * @param queryName String The name of query * @param statement String The statement query * @param language String The language is requested * @param permissions String[] * @param cachedResult boolean Choosen for caching results * @throws Exception */ public void addSharedQuery(String queryName, String statement, String language, String[] permissions, boolean cachedResult) throws Exception; /** * Add new shared query by giving the following params: queryName, statement, * language, permissions, cachedResult, provider * * @param queryName String The name of query * @param statement String The statement query * @param language String The language is requested * @param permissions String[] * @param cachedResult boolean Choosen for caching results * @param provider Session provider * @throws Exception */ public void addSharedQuery(String queryName, String statement, String language, String[] permissions, boolean cachedResult, SessionProvider provider) throws Exception; /** * Get shared queries by giving the following params : queryName, provider * * @param queryName the name of query * @param provider SessionProvider * @return sharedQueries * @see Node * @see SessionProvider * @throws Exception */ public Node getSharedQuery(String queryName, SessionProvider provider) throws Exception; /** * Remove share query by giving the following params : queryName * * @param queryName String The name of query * @param provider SessionProvider * @throws Exception */ public void removeSharedQuery(String queryName, SessionProvider provider) throws Exception; /** * Get shared queries by giving the following params : provider * * @param provider SessionProvider * @return sharedQueries * @see Node * @see SessionProvider * @throws Exception */ public List<Node> getSharedQueries(SessionProvider provider) throws Exception; /** * Get query with path by giving the following params : queryPath, userName, * provider * * @param queryPath String The path of query * @param userName String The name of current user * @param provider SessionProvider * @return query Query * @see Node * @see Query * @see SessionProvider * @throws Exception */ public Query getQueryByPath(String queryPath, String userName, SessionProvider provider) throws Exception; /** * Get shared queries by giving the following params : userId, provider * * @param userId String The id of current user * @param provider SessionProvider * @return sharedQueries * @see Node * @see SessionProvider * @throws Exception */ public List<Node> getSharedQueries(String userId, SessionProvider provider) throws Exception; /** * Get shared queries by giving the following params : queryType, userId, * provider * * @param queryType String The type of query * @param userId String The id of current user * @param provider SessionProvider * @return sharedQueries * @see Node * @see SessionProvider * @throws Exception */ public List<Node> getSharedQueries(String queryType, String userId, SessionProvider provider) throws Exception; /** * Init all query plugin in the current repository * @see org.exoplatform.services.cms.queries.impl.QueryPlugin * @throws Exception */ public void init() throws Exception; /** * Returns Query object by giving the following params : queryPath, workspace, * provider, userId * * @param queryPath String The path of query * @param workspace String The name of workspace * @param provider SessionProvider * @param userId String The id of current user * @return queries QueryResult * @see QueryResult * @see SessionProvider * @throws Exception */ public Query getQuery(String queryPath, String workspace, SessionProvider provider, String userId) throws Exception; /** * gets all configured queries * @return */ public Set<String> getAllConfiguredQueries(); }