001    /*
002    // $Id: //open/mondrian/src/main/mondrian/olap/Cube.java#16 $
003    // This software is subject to the terms of the Common Public License
004    // Agreement, available at the following URL:
005    // http://www.opensource.org/licenses/cpl.html.
006    // Copyright (C) 1999-2002 Kana Software, Inc.
007    // Copyright (C) 2001-2007 Julian Hyde and others
008    // All Rights Reserved.
009    // You must accept the terms of that agreement to use this software.
010    //
011    // jhyde, 2 March, 1999
012    */
013    
014    package mondrian.olap;
015    
016    import java.util.List;
017    import java.util.Set;
018    
019    public interface Cube extends OlapElement {
020    
021        String getName();
022    
023        Schema getSchema();
024    
025        /**
026         * Returns the dimensions of this cube.
027         */
028        Dimension[] getDimensions();
029    
030        /**
031         * Returns the named sets of this cube.
032         */
033        NamedSet[] getNamedSets();
034    
035        /**
036         * Finds a hierarchy whose name (or unique name, if <code>unique</code> is
037         * true) equals <code>s</code>.
038         */
039        Hierarchy lookupHierarchy(Id.Segment s, boolean unique);
040    
041        /**
042         * Returns Member[]. It builds Member[] by analyzing cellset, which
043         * gets created by running mdx sQuery.  <code>query</code> has to be in the
044         * format of something like "[with calculated members] select *members* on
045         * columns from <code>this</code>".
046         */
047        Member[] getMembersForQuery(String query, List<Member> calcMembers);
048    
049        /**
050         * Returns the time dimension for this cube, or <code>null</code>
051         * if there is no time dimension.
052         */
053        Dimension getTimeDimension();
054    
055        /**
056         * Helper method that returns the Year Level or returns null if the Time
057         * Dimension does not exist or if Year is not defined in the Time Dimension.
058         *
059         * @return Level or null.
060         */
061        Level getYearLevel();
062    
063        /**
064         * Return Quarter Level or null.
065         *
066         * @return Quarter Level or null.
067         */
068        Level getQuarterLevel();
069    
070        /**
071         * Return Month Level or null.
072         *
073         * @return Month Level or null.
074         */
075        Level getMonthLevel();
076    
077        /**
078         * Return Week Level or null.
079         *
080         * @return Week Level or null.
081         */
082        Level getWeekLevel();
083    
084        /**
085         * Returns a {@link SchemaReader} for which this cube is the context for
086         * lookup up members.
087         * If <code>role</code> is null, the returned schema reader also obeys the
088         * access-control profile of role.
089         */
090        SchemaReader getSchemaReader(Role role);
091    
092        /**
093         * Creates a calculated member in this cube.
094         *
095         * <p>The XML string must be a <code>&lt;CalculatedMember/&gt;</code>
096         * element, as defined in <code>Mondrian.xml</code>.
097         *
098         * @param xml XML string
099         */
100        Member createCalculatedMember(String xml);
101    
102        /**
103         * Finds out non joining dimensions for this cube.
104         *
105         * @param tuple array of members
106         * @return Set of dimensions that do not exist (non joining) in this cube
107         */
108        Set<Dimension> nonJoiningDimensions(Member[] tuple);
109    
110        /**
111         * Finds out non joining dimensions for this cube.
112         *
113         * @param otherDims Set of dimensions to be tested for existance in this cube
114         * @return Set of dimensions that do not exist (non joining) in this cube
115         */
116        Set<Dimension> nonJoiningDimensions(Set<Dimension> otherDims);
117    }
118    
119    // End Cube.java