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