package com.sumware.sql;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * RowList is a value object represents a ResultSet as an
 * ArrayList of rows [ArrayLists] of elements [Objects]
 * DataAccessObject.  
 * <p>
 * @author Nathan Anderson
 * @version $Revision: 1.0 $ $Date: 2001/12/07 $
 */

public class RowList 
{
	private ArrayList rows;
	
	/** 
	 * Useless default constructor
	 */
	public RowList() {
		rows = new ArrayList();
	}
	
	/**
	 * Constructor that takes in a ResultSet to set up the RowList
	 * @param resultSet The resultSet to use to create the RowList
	 */
	public RowList(ResultSet resultSet) throws SQLException {
		rows = new ArrayList();
        if (resultSet!=null) {
	        ResultSetMetaData metaData = resultSet.getMetaData();
	        ArrayList elements = null;
	        while (resultSet.next()) {
	        	elements = new ArrayList();
	        	for (int i=1;i<=metaData.getColumnCount();i++) {
	        		elements.add(resultSet.getObject(i));
	        	}	            	
				rows.add(elements);
			}
		}
	}
	
	/**
	 * Getter for the entire collection of rows
	 * @returns Collection The Collection of all rows
	 */
	public Collection get() {
		return (Collection) rows;
	}
	
	/**
	 * Getter for a single row
	 * @param index the index of the row to return
	 * @returns Collection The Collection of elements representing
	 * a single row 
	 */
	public Collection getRow(int i) {
		return (Collection) rows.get(i);
	}
	
	/**
	 * Getter for the number of rows
	 */
	public int size() {
		return rows.size();
	}	
	
	/** 
	 * Getter for an iterator
	 */
	public Iterator iterator() {
		return rows.iterator();
	}
}

	