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