001 /* 002 // $Id: Catalog.java 229 2009-05-08 19:11:29Z jhyde $ 003 // This software is subject to the terms of the Eclipse Public License v1.0 004 // Agreement, available at the following URL: 005 // http://www.eclipse.org/legal/epl-v10.html. 006 // Copyright (C) 2006-2008 Julian Hyde 007 // All Rights Reserved. 008 // You must accept the terms of that agreement to use this software. 009 */ 010 package org.olap4j.metadata; 011 012 import org.olap4j.OlapException; 013 import org.olap4j.OlapDatabaseMetaData; 014 015 /** 016 * Highest level element in the hierarchy of metadata objects. 017 * 018 * <p>A Catalog contains one or more {@link Schema}s.</p> 019 * 020 * <p>Some OLAP servers may only have one Catalog. Mondrian is one such 021 * OLAP server; its sole catalog is called "LOCALDB". 022 * 023 * <p>To obtain the collection of catalogs in the current server, call the 024 * {@link org.olap4j.OlapConnection#getCatalogs()} method. 025 * 026 * <p>The hierarchy of metadata objects, rooted at the connection from which 027 * they are accessed, is as follows: 028 * <blockquote> 029 * <ul> 030 * <li type="circle">{@link org.olap4j.OlapConnection}<ul> 031 * <li type="circle">{@link Catalog}<ul> 032 * <li type="circle">{@link Schema}<ul> 033 * <li type="circle">{@link Cube}<ul> 034 * <li type="circle">{@link Dimension}<ul> 035 * <li type="circle">{@link Hierarchy}<ul> 036 * <li type="circle">{@link Level}<ul> 037 * <li type="circle">{@link Member}</li> 038 * <li type="circle">{@link Property}</li> 039 * </ul></li> 040 * </ul></li> 041 * </ul></li> 042 * <li type="circle">{@link NamedSet}</li> 043 * </ul></li> 044 * <li type="circle">Dimension (shared)</li> 045 * </ul></li> 046 * </ul></li> 047 * </ul> 048 * </blockquote> 049 * </p> 050 * 051 * @author jhyde 052 * @version $Id: Catalog.java 229 2009-05-08 19:11:29Z jhyde $ 053 * @since Oct 24, 2006 054 */ 055 public interface Catalog { 056 /** 057 * Returns a list of {@link Schema} objects which belong to 058 * this <code>Catalog</code>. 059 * 060 * <p>The caller should assume that the list is immutable; 061 * if the caller modifies the list, behavior is undefined.</p> 062 * 063 * @see org.olap4j.OlapDatabaseMetaData#getSchemas 064 * @return List of Schema in this <code>Catalog</code> 065 * @throws OlapException if error occurs 066 */ 067 NamedList<Schema> getSchemas() throws OlapException; 068 069 /** 070 * Returns the name of this Catalog. 071 * 072 * @return name of this Catalog 073 */ 074 String getName(); 075 076 /** 077 * Retrieves the metadata describing the OLAP server that this Catalog 078 * belongs to. 079 * 080 * @return metadata describing the OLAP server 081 */ 082 OlapDatabaseMetaData getMetaData(); 083 } 084 085 // End Catalog.java