001/*
002// This software is subject to the terms of the Eclipse Public License v1.0
003// Agreement, available at the following URL:
004// http://www.eclipse.org/legal/epl-v10.html.
005// You must accept the terms of that agreement to use this software.
006//
007// Copyright (C) 1999-2005 Julian Hyde
008// Copyright (C) 2005-2009 Pentaho and others
009// All Rights Reserved.
010*/
011package mondrian.olap;
012
013/**
014 * A <code>Dimension</code> represents a dimension of a cube.
015 *
016 * @author jhyde, 1 March, 1999
017 */
018public interface Dimension extends OlapElement, Annotated {
019    final String MEASURES_UNIQUE_NAME = "[Measures]";
020    final String MEASURES_NAME = "Measures";
021
022    /**
023     * Returns an array of the hierarchies which belong to this dimension.
024     */
025    Hierarchy[] getHierarchies();
026
027    /**
028     * Returns whether this is the <code>[Measures]</code> dimension.
029     */
030    boolean isMeasures();
031
032    /**
033     * Returns the type of this dimension
034     * ({@link DimensionType#StandardDimension} or
035     * {@link DimensionType#TimeDimension}
036     */
037    DimensionType getDimensionType();
038
039    /**
040     * Returns the schema this dimension belongs to.
041     */
042    Schema getSchema();
043
044    /**
045     * Returns whether the dimension should be considered as a "high
046     * cardinality" or "low cardinality" according to cube definition.
047     *
048     * Mondrian tends to evaluate high cardinality dimensions using
049     * iterators rather than lists, avoiding instantiating the dimension in
050     * memory.
051     *
052     * @return whether this dimension is high-cardinality
053     */
054    boolean isHighCardinality();
055}
056
057// End Dimension.java