package eu.dnetlib.enabling.resultset.client;

import java.util.Iterator;

import eu.dnetlib.enabling.resultset.rmi.ResultSet;
import eu.dnetlib.enabling.resultset.rmi.ResultSetProtocol;

public class ResultSetClient {
	public <T> Iterable<T> getClient(final ResultSet<T> rs, final Class<T> clazz) {
		return new Iterable<T>() {
			@Override
			public Iterator<T> iterator() {
				if (rs.getEndpoints().containsKey(ResultSetProtocol.SOAP)) {
					return new SoapResultSetClientIterator<T>(rs.getId(), rs.getEndpoints().get(ResultSetProtocol.SOAP), clazz);
				} else if (rs.getEndpoints().containsKey(ResultSetProtocol.HTTP)) {
					return new HttpResultSetClientIterator<T>(rs.getId(), rs.getEndpoints().get(ResultSetProtocol.HTTP), clazz);
				} else {
					throw new RuntimeException("No suitable protocol for resultset: " + rs.getId());
				}
			}
		};
	}
}
