001    /*
002    // $Id: CellSetAxisMetaData.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;
011    
012    import org.olap4j.metadata.*;
013    
014    import java.util.List;
015    
016    /**
017     * Description of structure of a particular axis of an {@link CellSet}.
018     *
019     * <p>For example, in the MDX statement</p>
020     *
021     * <blockquote>
022     * <pre>
023     * SELECT
024     *   {[Measures].Members} ON COLUMNS,
025     *   CrossJoin([Store].Members, [Gender].Children)
026     *   DIMENSION PROPERTIES
027     *      MEMBER_ORDINAL,
028     *      MEMBER_UNIQUE_NAME,
029     *      DISPLAY_INFO ON ROWS
030     * FROM [Sales]
031     * </pre>
032     * </blockquote>
033     *
034     * <p>the ROWS axis is described by the following metadata:</p>
035     *
036     * <table border="1">
037     * <tr>
038     * <th>Attribute</th>
039     * <th>Value</th>
040     * </tr>
041     * <tr>
042     * <td>hierarchies</td>
043     * <td>{[Store], [Gender]}</td>
044     * </tr>
045     * <tr>
046     * <td>properties</td>
047     * <td>{MEMBER_ORDINAL, MEMBER_UNIQUE_NAME, DISPLAY_INFO}</td>
048     * </tr>
049     * </table>
050     *
051     * @author jhyde
052     * @version $Id: CellSetAxisMetaData.java 229 2009-05-08 19:11:29Z jhyde $
053     * @since Oct 23, 2006
054     */
055    public interface CellSetAxisMetaData {
056        /**
057         * Returns the definition of the axis. Typical values are
058         * ({@link Axis#FILTER}, {@link Axis#COLUMNS}, {@link Axis#ROWS}, and so
059         * forth.)
060         *
061         * @return the Axis
062         */
063        Axis getAxisOrdinal();
064    
065        /**
066         * Returns the hierarchies which are mapped onto this axis.
067         *
068         * @return list of hierarchies on this Axis
069         */
070        List<Hierarchy> getHierarchies();
071    
072        /**
073         * Returns the member properties which are returned on this axis.
074         *
075         * <p>This method does not return a {@link NamedList} because the names of
076         * the properties are not necessarily unique; for example, there might be
077         * two hierarchies on the axis, each of which returns the DISPLAY_INFO
078         * property.</p>
079         *
080         * @return list of member properties on this Axis
081         */
082        List<Property> getProperties();
083    }
084    
085    // End CellSetAxisMetaData.java