001 /* 002 // $Id: Selection.java 277 2009-08-18 18:50:30Z lucboudreau $ 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) 2007-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.query; 011 012 import org.olap4j.metadata.Dimension; 013 import org.olap4j.metadata.Member; 014 015 /** 016 * A selection of members from an OLAP dimension hierarchy. The selection 017 * is a conceptual list of members from a given hierarchy. Once a selection 018 * object is created, one can decide to include or exclude this selection 019 * of members from the resulting query. 020 * 021 * <p>Concrete subclasses of this represent a real selection. 022 * Selections include things such as 'children of', 'siblings of', 023 * 'descendents of' etc. 024 * 025 * <p>This class is different from a {@link org.olap4j.metadata.Member} because it represents an 026 * abstract member selection (e.g. children of widget' that may not represent 027 * any members whereas a Member represents a single member that is known to 028 * exist. 029 * 030 * @author jdixon, jhyde, Luc Boudreau 031 * @version $Id: Selection.java 277 2009-08-18 18:50:30Z lucboudreau $ 032 * @since May 30, 2007 033 */ 034 public interface Selection extends QueryNode { 035 036 String getName(); 037 038 void setName(String name); 039 040 Member getMember(); 041 042 Dimension getDimension(); 043 044 String getHierarchyName(); 045 046 String getLevelName(); 047 048 Operator getOperator(); 049 050 // @pre operator != null 051 void setOperator(Operator operator); 052 053 /** 054 * Defines which selection operators are allowed, relative to 055 * a root member. 056 */ 057 public enum Operator { 058 /** 059 * Only the root member will be selected. 060 */ 061 MEMBER, 062 /** 063 * Only the children of the root member will be selected. 064 * This excludes the root member itself. 065 * <p>Implemented via the MDX .Children member property. 066 */ 067 CHILDREN, 068 /** 069 * The root member will be selected along with all it's 070 * children. 071 */ 072 INCLUDE_CHILDREN, 073 /** 074 * Will select the root member along with all it's siblings. 075 * <p>Implemented via the MDX .Siblings member property. 076 */ 077 SIBLINGS, 078 /** 079 * Selects the set of the ascendants of a specified member, 080 * including the member itself. 081 * <p>Implemented via the MDX Ascendants() function. 082 */ 083 ANCESTORS, 084 /** 085 * Selects the set of the descendants of a specified member, 086 * including the member itself. 087 * <p>Implemented via the MDX Descendants() function. 088 */ 089 DESCENDANTS; 090 } 091 } 092 093 // End Selection.java