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