001 /*
002 // $Id: CellSetMetaData.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.sql.ResultSetMetaData;
025
026 /**
027 * An object that can be used to get information about the axes
028 * and cells in a <code>CellSet</code> object.
029 *
030 * <p>The following code fragment creates the <code>CellSet</code> object cs,
031 * creates the <code>CellSetMetaData</code> object csmd, and uses csmd
032 * to find out how many axes cs has and the name of the cube.
033 *
034 * <blockquote>
035 * <pre>
036 * CellSet cs = stmt.executeOlapQuery(
037 * "SELECT {[Measures].[Unit Sales] ON COLUMNS,\n" +
038 * " Crossjoin([Time].Children, [Store].Children) ON ROWS\n" +
039 * "FROM [Sales]");
040 * CellSetMetaData csmd = cs.getMetaData();
041 * int numberOfAxes = csmd.getAxesMetaData().size();
042 * String cubeName = csmd.getCube().getName();
043 * </pre>
044 * </blockquote>
045 *
046 * @author jhyde
047 * @version $Id: CellSetMetaData.java 482 2012-01-05 23:27:27Z jhyde $
048 * @since Oct 23, 2006
049 */
050 public interface CellSetMetaData extends ResultSetMetaData, OlapWrapper {
051 /**
052 * Returns a list of Property objects which each Cell may have.
053 *
054 * @return list of cell properties
055 */
056 NamedList<Property> getCellProperties();
057
058 /**
059 * Returns the Cube which was referenced in this statement.
060 *
061 * @return cube referenced in this statement
062 */
063 Cube getCube();
064
065 /**
066 * Returns a list of CellSetAxisMetaData describing each result axis.
067 *
068 * @return list of metadata describing each result axis
069 */
070 NamedList<CellSetAxisMetaData> getAxesMetaData();
071
072 /**
073 * Returns a CellSetAxisMetaData describing the filter axis. Never returns
074 * null; if the MDX statement contains no WHERE clause, the description of
075 * the filter contains no hierarchies.
076 *
077 * @return metadata describing filter axis
078 */
079 CellSetAxisMetaData getFilterAxisMetaData();
080 }
081
082 // End CellSetMetaData.java