001 /*
002 // $Id: SetType.java 247 2009-06-20 05:52:40Z 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) 2005-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.type;
011
012 import org.olap4j.metadata.Dimension;
013 import org.olap4j.metadata.Hierarchy;
014 import org.olap4j.metadata.Level;
015
016 /**
017 * Set type.
018 *
019 * @author jhyde
020 * @since Feb 17, 2005
021 * @version $Id: SetType.java 247 2009-06-20 05:52:40Z jhyde $
022 */
023 public class SetType implements Type {
024
025 private final Type elementType;
026
027 /**
028 * Creates a type representing a set of elements of a given type.
029 *
030 * @param elementType The type of the elements in the set, or null if not
031 * known
032 */
033 public SetType(Type elementType) {
034 assert elementType instanceof MemberType
035 || elementType instanceof TupleType;
036 this.elementType = elementType;
037 }
038
039 /**
040 * Returns the type of the elements of this set.
041 *
042 * @return element type
043 */
044 public Type getElementType() {
045 return elementType;
046 }
047
048 public boolean usesDimension(Dimension dimension, boolean maybe) {
049 if (elementType == null) {
050 return maybe;
051 }
052 return elementType.usesDimension(dimension, maybe);
053 }
054
055 public Dimension getDimension() {
056 return elementType == null
057 ? null
058 : elementType.getDimension();
059 }
060
061 public Hierarchy getHierarchy() {
062 return elementType == null
063 ? null
064 : elementType.getHierarchy();
065 }
066
067 public Level getLevel() {
068 return elementType == null
069 ? null
070 : elementType.getLevel();
071 }
072 }
073
074 // End SetType.java