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