/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 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 Lesser General Public License for more details.
*
* Copyright 2008 - 2009 Pentaho Corporation. All rights reserved.
*
*/
package org.pentaho.platform.plugin.action.mondrian.catalog;
import java.util.List;
import org.pentaho.platform.api.engine.IPentahoSession;
/**
* A service registering/enumerating registered Mondrian catalogs (schemas).
*
* @author mlowery
*/
public interface IMondrianCatalogService {
/**
* Lists all catalogs (filtered according to access control rules).
* @param jndiOnly return only JNDI-based catalogs
*/
List<MondrianCatalog> listCatalogs(IPentahoSession pentahoSession, boolean jndiOnly);
/**
* Adds to the global catalog list and possibly persists this information.
* @param overwrite true to overwrite existing catalog (based on match with definition and effectiveDataSourceInfo
*/
void addCatalog(MondrianCatalog catalog, boolean overwrite, IPentahoSession pentahoSession)
throws MondrianCatalogServiceException;
/**
* Returns the catalog with the given context - name or definition allowable. Returns <code>null</code> if context not recognized.
* @param context Either the name of the catalog to fetch, or the catalog's definition string
*
* NOTE that the context can be the catalog name or the definition string for the catalog. If you are using the definition string to
* retrieve the catalog from the cache, you cannot be guaranteed what datasource is in play; so under these circumstances, this catalog's
* definition is the only part of the catalog that can be trusted. As this feature was added to enable looking up Mondrian
* roles from the schema, we don't much care which datasource is in play.
*/
MondrianCatalog getCatalog(String context, final IPentahoSession pentahoSession);
/**
* this method loads a Mondrian schema
*
* @param solutionLocation location of the schema
* @param pentahoSession current session object
*
* @return Mondrian Schema object
*/
MondrianSchema loadMondrianSchema(String solutionLocation, IPentahoSession pentahoSession);
}