package eu.dnetlib.rmi.soap;

import java.util.List;
import java.util.Map;

import javax.jws.WebParam;
import javax.jws.WebService;

import eu.dnetlib.rmi.objects.datasources.IfaceDesc;
import eu.dnetlib.rmi.objects.datasources.ProtocolDescriptor;
import eu.dnetlib.rmi.objects.datasources.ProtocolParameterValue;
import eu.dnetlib.rmi.objects.resultSet.ResultSet;
import eu.dnetlib.rmi.soap.exceptions.CollectorServiceException;

@WebService(targetNamespace = "http://services.dnetlib.eu/")
public interface CollectorService extends BaseService {

	ResultSet<String> collect(@WebParam(name = "interface") final IfaceDesc iface) throws CollectorServiceException;

	ResultSet<String> dateRangeCollect(
			@WebParam(name = "interface") final IfaceDesc iface,
			@WebParam(name = "from") final String from,
			@WebParam(name = "until") final String until) throws CollectorServiceException;

	List<ProtocolDescriptor> listProtocols();

	List<ProtocolParameterValue> listValidValuesForParam(
			@WebParam(name = "protocol") String protocol,
			@WebParam(name = "baseUrl") String baseUrl,
			@WebParam(name = "param") String param,
			@WebParam(name = "otherParams") Map<String, String> otherParams) throws CollectorServiceException;

}
