package it.cnr.isti.driver.utils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ResultSet {
	protected Log log = LogFactory.getLog(ResultSet.class);

	private ResultSetClient resultSetClient;
	private ODL_EPR epr;
	private Integer numberOfElements;

	public ResultSet(ODL_EPR epr) {
		setEpr(epr);
	}

	public Collection<String> getResult(int fromPosition, int toPosition) {
		int num = getNumberOfElements();
		if (num == 0 || fromPosition > num)
			return new ArrayList<String>();
		
		if (toPosition > num)
			toPosition = num;

		String[] res = resultSetClient.getResult(epr.getResourceIdentifier(),
				fromPosition, toPosition, "waiting", "");

		return Arrays.asList(res);
	}

	public int getNumberOfElements() {
		if(numberOfElements == null)
			numberOfElements = getResultSetClient().getNumberOfElements(epr.getResourceIdentifier());
		return numberOfElements;
	}

	public void setNumberOfElements(int numberOfElements) {
		this.numberOfElements = numberOfElements;
	}

	public ODL_EPR getEpr() {
		return epr;
	}

	public void setEpr(ODL_EPR epr) {
		this.epr = epr;
		setResultSetClient(new ResultSetClient(epr.getAddress()));
	}

	public ResultSetClient getResultSetClient() {
		return resultSetClient;
	}

	public void setResultSetClient(ResultSetClient resultSetClient) {
		this.resultSetClient = resultSetClient;
	}

}
