Package mondrian.olap

Class EnumeratedValues<V extends EnumeratedValues.Value>

  • All Implemented Interfaces:
    java.lang.Cloneable
    Direct Known Subclasses:
    Category

    public class EnumeratedValues<V extends EnumeratedValues.Value>
    extends java.lang.Object
    implements java.lang.Cloneable
    EnumeratedValues is a helper class for declaring a set of symbolic constants which have names, ordinals, and possibly descriptions. The ordinals do not have to be contiguous.

    Typically, for a particular set of constants, you derive a class from this interface, and declare the constants as public static final members. Give it a private constructor, and a public static final ClassName instance member to hold the singleton instance. Access is a simple example of this.

    • Constructor Summary

      Constructors 
      Constructor Description
      EnumeratedValues()
      Creates a new empty, mutable enumeration.
      EnumeratedValues​(java.lang.Class<? extends java.lang.Enum> clazz)  
      EnumeratedValues​(java.lang.String[] names)
      Creates an enumeration, initialize it with an array of strings, and freezes it.
      EnumeratedValues​(java.lang.String[] names, int[] codes)
      Create an enumeration, initializes it with arrays of code/name pairs, and freezes it.
      EnumeratedValues​(java.lang.String[] names, int[] codes, java.lang.String[] descriptions)
      Create an enumeration, initializes it with arrays of code/name pairs, and freezes it.
      EnumeratedValues​(V[] values)
      Creates an enumeration, with an array of values, and freezes it.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.RuntimeException badValue​(int ordinal)
      Returns an error indicating that the value is illegal.
      EnumeratedValues<V> clone()  
      java.lang.String getDescription​(int ordinal)
      Returns the description associated with an ordinal; the return value is null if the ordinal is not a member of the enumeration.
      int getMax()
      Returns the largest ordinal defined by this enumeration.
      int getMin()
      Returns the smallest ordinal defined by this enumeration.
      EnumeratedValues getMutableClone()
      Creates a mutable enumeration from an existing enumeration, which may already be immutable.
      java.lang.String getName​(int ordinal)
      Returns the name associated with an ordinal; the return value is null if the ordinal is not a member of the enumeration.
      java.lang.String[] getNames()
      Returns the names in this enumeration, in declaration order.
      int getOrdinal​(java.lang.String name)
      Returns the ordinal associated with a name
      V getValue​(int ordinal)
      Returns the name associated with an ordinal; the return value is null if the ordinal is not a member of the enumeration.
      V getValue​(java.lang.String name, boolean fail)
      Returns the value associated with a name.
      java.util.List<V> getValuesSortedByName()
      Returns the members of this enumeration, sorted by name.
      boolean isImmutable()  
      boolean isValid​(int ordinal)
      Returns whether ordinal is valid for this enumeration.
      void makeImmutable()
      Freezes the enumeration, preventing it from being further modified.
      void register​(V value)
      Associates a symbolic name with an ordinal value.
      java.lang.RuntimeException unexpected​(V value)
      Returns an exception indicating that we didn't expect to find this value here.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • EnumeratedValues

        public EnumeratedValues()
        Creates a new empty, mutable enumeration.
      • EnumeratedValues

        public EnumeratedValues​(V[] values)
        Creates an enumeration, with an array of values, and freezes it.
      • EnumeratedValues

        public EnumeratedValues​(java.lang.String[] names)
        Creates an enumeration, initialize it with an array of strings, and freezes it.
      • EnumeratedValues

        public EnumeratedValues​(java.lang.String[] names,
                                int[] codes)
        Create an enumeration, initializes it with arrays of code/name pairs, and freezes it.
      • EnumeratedValues

        public EnumeratedValues​(java.lang.String[] names,
                                int[] codes,
                                java.lang.String[] descriptions)
        Create an enumeration, initializes it with arrays of code/name pairs, and freezes it.
      • EnumeratedValues

        public EnumeratedValues​(java.lang.Class<? extends java.lang.Enum> clazz)
    • Method Detail

      • clone

        public EnumeratedValues<V> clone()
        Overrides:
        clone in class java.lang.Object
      • getMutableClone

        public EnumeratedValues getMutableClone()
        Creates a mutable enumeration from an existing enumeration, which may already be immutable.
      • register

        public void register​(V value)
        Associates a symbolic name with an ordinal value.
        Pre-condition:
        value != null, !isImmutable(), value.getName() != null
      • makeImmutable

        public void makeImmutable()
        Freezes the enumeration, preventing it from being further modified.
      • isImmutable

        public final boolean isImmutable()
      • getMin

        public final int getMin()
        Returns the smallest ordinal defined by this enumeration.
      • getMax

        public final int getMax()
        Returns the largest ordinal defined by this enumeration.
      • isValid

        public final boolean isValid​(int ordinal)
        Returns whether ordinal is valid for this enumeration. This method is particularly useful in pre- and post-conditions, for example
        @param axisCode Axis code, must be a {@link AxisCode} value
         @pre AxisCode.instance.isValid(axisCode)
        Parameters:
        ordinal - Suspected ordinal from this enumeration.
        Returns:
        Whether ordinal is valid.
      • getValue

        public final V getValue​(int ordinal)
        Returns the name associated with an ordinal; the return value is null if the ordinal is not a member of the enumeration.
        Pre-condition:
        isImmutable()
      • getName

        public final java.lang.String getName​(int ordinal)
        Returns the name associated with an ordinal; the return value is null if the ordinal is not a member of the enumeration.
        Pre-condition:
        isImmutable()
      • getDescription

        public final java.lang.String getDescription​(int ordinal)
        Returns the description associated with an ordinal; the return value is null if the ordinal is not a member of the enumeration.
        Pre-condition:
        isImmutable()
      • getOrdinal

        public final int getOrdinal​(java.lang.String name)
        Returns the ordinal associated with a name
        Throws:
        java.lang.Error - if the name is not a member of the enumeration
      • getValue

        public V getValue​(java.lang.String name,
                          boolean fail)
        Returns the value associated with a name.
        Parameters:
        name - Name of enumerated value
        fail - Whether to throw if not found
        Throws:
        java.lang.Error - if the name is not a member of the enumeration and fail is true
      • getNames

        public java.lang.String[] getNames()
        Returns the names in this enumeration, in declaration order.
      • getValuesSortedByName

        public java.util.List<V> getValuesSortedByName()
        Returns the members of this enumeration, sorted by name.
      • badValue

        public java.lang.RuntimeException badValue​(int ordinal)
        Returns an error indicating that the value is illegal. (The client needs to throw the error.)
      • unexpected

        public java.lang.RuntimeException unexpected​(V value)
        Returns an exception indicating that we didn't expect to find this value here.