001 /* 002 // $Id: Catalog.java 482 2012-01-05 23:27:27Z jhyde $ 003 // 004 // Licensed to Julian Hyde under one or more contributor license 005 // agreements. See the NOTICE file distributed with this work for 006 // additional information regarding copyright ownership. 007 // 008 // Julian Hyde licenses this file to you under the Apache License, 009 // Version 2.0 (the "License"); you may not use this file except in 010 // compliance with the License. You may obtain a copy of the License at: 011 // 012 // http://www.apache.org/licenses/LICENSE-2.0 013 // 014 // Unless required by applicable law or agreed to in writing, software 015 // distributed under the License is distributed on an "AS IS" BASIS, 016 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 017 // See the License for the specific language governing permissions and 018 // limitations under the License. 019 */ 020 package org.olap4j.metadata; 021 022 import org.olap4j.*; 023 024 /** 025 * <p>Catalogs are the second element of the hierarchy of metadata objects. 026 * A Catalog contains one or more {@link Schema}s and has a parent 027 * {@link Database}.</p> 028 * 029 * <p>Some OLAP servers may only have one Catalog. Mondrian is one such 030 * OLAP server; its sole catalog is called "LOCALDB". 031 * 032 * <p>To obtain the collection of catalogs in the current server, call the 033 * {@link OlapConnection#getOlapCatalogs()} method. 034 * 035 * <p>The hierarchy of metadata objects, rooted at the connection from which 036 * they are accessed, is as follows: 037 * <blockquote> 038 * <ul> 039 * <li type="circle">{@link org.olap4j.OlapConnection}<ul> 040 * <li type="circle">{@link Database}<ul> 041 * <li type="circle">{@link Catalog}<ul> 042 * <li type="circle">{@link Schema}<ul> 043 * <li type="circle">{@link Cube}<ul> 044 * <li type="circle">{@link Dimension}<ul> 045 * <li type="circle">{@link Hierarchy}<ul> 046 * <li type="circle">{@link Level}<ul> 047 * <li type="circle">{@link Member}</li> 048 * <li type="circle">{@link Property}</li> 049 * </ul></li> 050 * </ul></li> 051 * </ul></li> 052 * <li type="circle">{@link NamedSet}</li> 053 * </ul></li> 054 * <li type="circle">{@link Dimension} (shared)</li> 055 * </ul></li> 056 * </ul></li> 057 * </ul></li> 058 * </ul> 059 * </blockquote> 060 * </p> 061 * 062 * @author jhyde 063 * @version $Id: Catalog.java 482 2012-01-05 23:27:27Z jhyde $ 064 * @since Oct 24, 2006 065 */ 066 public interface Catalog { 067 /** 068 * Returns a list of {@link Schema} objects which belong to 069 * this <code>Catalog</code>. 070 * 071 * <p>The caller should assume that the list is immutable; 072 * if the caller modifies the list, behavior is undefined.</p> 073 * 074 * @see org.olap4j.OlapDatabaseMetaData#getSchemas 075 * @return List of Schema in this <code>Catalog</code> 076 * @throws OlapException if error occurs 077 */ 078 NamedList<Schema> getSchemas() throws OlapException; 079 080 /** 081 * Returns the name of this Catalog. 082 * 083 * @return name of this Catalog 084 */ 085 String getName(); 086 087 /** 088 * Retrieves the metadata describing the OLAP server that this Catalog 089 * belongs to. 090 * 091 * @return metadata describing the OLAP server 092 */ 093 OlapDatabaseMetaData getMetaData(); 094 095 /** 096 * Returns the parent database of this catalog. 097 * @return A Database object to which this catalog belongs. 098 */ 099 Database getDatabase(); 100 } 101 102 // End Catalog.java