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