package com.quantum.sql;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


/**
 * @author BC
 */
public class SQLResultSetCollection {

	private static final SQLResultSetCollection instance = new SQLResultSetCollection();
	
	private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
	
	private List results = Collections.synchronizedList(new ArrayList());
	
	private SQLResultSetCollection() {
	}
	public static SQLResultSetCollection getInstance() {
		return SQLResultSetCollection.instance;
	}
	
	public void addPropertyChangeListener(PropertyChangeListener arg0) {
		this.propertyChangeSupport.addPropertyChangeListener(arg0);
	}
	public void removePropertyChangeListener(PropertyChangeListener arg0) {
		this.propertyChangeSupport.removePropertyChangeListener(arg0);
	}
	
	public void addSQLResultSet(SQLResultSetResults resultSet) {
		this.results.add(resultSet);
		this.propertyChangeSupport.firePropertyChange("resultSets", null, resultSet);
	}

	public void removeSQLResultSet(SQLResultSetResults resultSet) {
		if (this.results.remove(resultSet)) {
			this.propertyChangeSupport.firePropertyChange("resultSets", resultSet, null);
		}
	}
	
	public void removeAllSQLResultSet() {
		if (this.results.size() > 0) {
			this.results.clear();
		}
		this.propertyChangeSupport.firePropertyChange("resultSets", null, null);
	}
	
	public SQLResultSetResults[] getResultSets() {
		return (SQLResultSetResults[]) this.results.toArray(
				new SQLResultSetResults[this.results.size()]);
	}
}