001 /*
002 // $Id: //open/mondrian-release/3.2/src/main/mondrian/olap/Dimension.java#1 $
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) 1999-2002 Kana Software, Inc.
007 // Copyright (C) 2001-2009 Julian Hyde and others
008 // All Rights Reserved.
009 // You must accept the terms of that agreement to use this software.
010 //
011 // jhyde, 1 March, 1999
012 */
013
014 package mondrian.olap;
015
016 import java.util.Map;
017
018 /**
019 * A <code>Dimension</code> represents a dimension of a cube.
020 */
021 public interface Dimension extends OlapElement, Annotated {
022 final String MEASURES_UNIQUE_NAME = "[Measures]";
023 final String MEASURES_NAME = "Measures";
024
025 /**
026 * Returns an array of the hierarchies which belong to this dimension.
027 */
028 Hierarchy[] getHierarchies();
029
030 /**
031 * Returns whether this is the <code>[Measures]</code> dimension.
032 */
033 boolean isMeasures();
034
035 /**
036 * Returns the type of this dimension
037 * ({@link DimensionType#StandardDimension} or
038 * {@link DimensionType#TimeDimension}
039 */
040 DimensionType getDimensionType();
041
042 /**
043 * Returns the schema this dimension belongs to.
044 */
045 Schema getSchema();
046
047 /**
048 * Returns whether the dimension should be considered as a "high
049 * cardinality" or "low cardinality" according to cube definition.
050 *
051 * Mondrian tends to evaluate high cardinality dimensions using
052 * iterators rather than lists, avoiding instantiating the dimension in
053 * memory.
054 *
055 * @return whether this dimension is high-cardinality
056 */
057 boolean isHighCardinality();
058 }
059
060 // End Dimension.java