mondrian.olap
Class EnumeratedValues<V extends EnumeratedValues.Value>

java.lang.Object
  extended by mondrian.olap.EnumeratedValues<V>
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
Category

public class EnumeratedValues<V extends EnumeratedValues.Value>
extends Object
implements 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.

 

Nested Class Summary
static class EnumeratedValues.BasicValue
          BasicValue is an obvious implementation of EnumeratedValues.Value.
static interface EnumeratedValues.Value
          A Value represents a member of an enumerated type.
 
Constructor Summary
EnumeratedValues()
          Creates a new empty, mutable enumeration.
EnumeratedValues(Class<? extends Enum> clazz)
           
EnumeratedValues(String[] names)
          Creates an enumeration, initialize it with an array of strings, and freezes it.
EnumeratedValues(String[] names, int[] codes)
          Create an enumeration, initializes it with arrays of code/name pairs, and freezes it.
EnumeratedValues(String[] names, int[] codes, 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
 RuntimeException badValue(int ordinal)
          Returns an error indicating that the value is illegal.
 EnumeratedValues<V> clone()
           
 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.
 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.
 String[] getNames()
          Returns the names in this enumeration, in declaration order.
 int getOrdinal(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(String name, boolean fail)
          Returns the value associated with a name.
 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.
 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(String[] names)
Creates an enumeration, initialize it with an array of strings, and freezes it.


EnumeratedValues

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


EnumeratedValues

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


EnumeratedValues

public EnumeratedValues(Class<? extends Enum> clazz)
Method Detail

clone

public EnumeratedValues<V> clone()
Overrides:
clone in class 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 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 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(String name)
Returns the ordinal associated with a name

Throws:
Error - if the name is not a member of the enumeration

getValue

public V getValue(String name,
                  boolean fail)
Returns the value associated with a name.

Throws:
Error - if the name is not a member of the enumeration and fail is true
Parameters:
name - Name of enumerated value
fail - Whether to throw if not found

getNames

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


getValuesSortedByName

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


badValue

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


unexpected

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


SourceForge.net_Logo