org.apache.velocity.tools.generic

## Class Alternator

- java.lang.Object
- - org.apache.velocity.tools.generic.Alternator

    public class Alternator
    extends Object

Utility class for easily alternating over values in a list.

Example usage:

     java...
          String[] myColors = new String[]{"red", "blue"};
          context.put("color", new Alternator(myColors));
          String[] myStyles = new String[]{"hip", "fly", "groovy"};
          // demonstrate manual alternation with this one
          context.put("style", new Alternator(false, myStyles));

     template...
          #foreach( $foo in [1..5] )
           $foo is $color and $style.next
          #end

     output...
          1 is red and hip
          2 is blue and fly
          3 is red and groovy
          4 is blue and hip
          5 is red and fly

Since:
  Velocity Tools 1.2
Version:
  $Id$

### Constructor Summary

Constructors
Constructor and Description
`Alternator(boolean auto, Object... list)` Creates a new Alternator for the specified list with the specified automatic shifting preference.
`Alternator(Object... list)` Creates a new Alternator for the specified list.

### Method Summary

All Methods Instance Methods Concrete Methods
`Object` `getCurrent()` Returns the current item without shifting the list index.
`Object` `getNext()` Returns the current item, then shifts the list index.
`boolean` `isAuto()`
`void` `setAuto(boolean auto)` If set to true, the list index will shift automatically after a call to toString().
`void` `shift()` Manually shifts the list index.
`String` `toString()` Returns a string representation of the current item or `null` if the current item is null.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### Alternator

    public Alternator(Object... list)

Creates a new Alternator for the specified list. Alternation defaults to automatic.

Parameters:
  `list` - the elements to alternate over

#### Alternator

    public Alternator(boolean auto,
                      Object... list)

Creates a new Alternator for the specified list with the specified automatic shifting preference.

Parameters:
  `auto` - See `setAuto(boolean auto)`.
  `list` - The elements to alternate over

### Method Detail

#### isAuto

    public boolean isAuto()

Returns:
  Whether this Alternator shifts the list index automatically after a call to `toString()`.

#### setAuto

    public void setAuto(boolean auto)

If set to true, the list index will shift automatically after a call to toString().

Parameters:
  `auto` - flag value

#### shift

    public void shift()

Manually shifts the list index. If it reaches the end of the list, it will start over again at zero.

#### getCurrent

    public Object getCurrent()

Returns the current item without shifting the list index.

Returns:
  current item

#### getNext

    public Object getNext()

Returns the current item, then shifts the list index.

Returns:
  current item

#### toString

    public String toString()

Returns a string representation of the current item or `null` if the current item is null. If `auto` is true, this will shift after returning the current item.

Overrides:
  `toString` in class `Object`
Returns:
  string representation of the current item