FileDocCategorySizeDatePackage
IteratorGenerator.javaAPI DocExample4453Mon Jul 23 13:26:56 BST 2007org.apache.struts2.util

IteratorGenerator

public class IteratorGenerator extends Object implements com.opensymphony.xwork2.Action, Iterator
A bean that generates an iterator filled with a given object depending on the count, separator and converter defined. It is being used by IteratorGeneratorTag.

Fields Summary
private static final Log
_log
List
values
Object
value
String
separator
Converter
converter
int
count
int
currentCount
Constructors Summary
Methods Summary
public java.lang.Stringexecute()

        if (value == null) {
            return ERROR;
        } else {
            values = new ArrayList();

            if (separator != null) {
                StringTokenizer tokens = new StringTokenizer(value.toString(), separator);

                while (tokens.hasMoreTokens()) {
                    String token = tokens.nextToken().trim();
                    if (converter != null) {
                        try {
                            Object convertedObj = converter.convert(token);
                            values.add(convertedObj);
                        }
                        catch(Exception e) { // make sure things, goes on, we just ignore the bad ones
                            _log.warn("unable to convert ["+token+"], skipping this token, it will not appear in the generated iterator", e);
                        }
                    }
                    else {
                        values.add(token);
                    }
                }
            } else {
                values.add(value.toString());
            }

            // Count default is the size of the list of values
            if (count == 0) {
                count = values.size();
            }

            return SUCCESS;
        }
    
public booleangetHasNext()

        return hasNext();
    
public java.lang.ObjectgetNext()

        return next();
    
public booleanhasNext()

        return (value == null) ? false : ((currentCount < count) || (count == -1));
    
public java.lang.Objectnext()

        try {
            return values.get(currentCount % values.size());
        } finally {
            currentCount++;
        }
    
public voidremove()

        throw new UnsupportedOperationException("Remove is not supported in IteratorGenerator.");
    
public voidsetConverter(org.apache.struts2.util.IteratorGenerator$Converter aConverter)

        converter = aConverter;
    
public voidsetCount(int aCount)



        
        this.count = aCount;
    
public voidsetSeparator(java.lang.String aChar)

        separator = aChar;
    
public voidsetValues(java.lang.Object aValue)

        value = aValue;