package eu.dnetlib.data.utility.featureextraction.mock;

import java.util.LinkedList;
import java.util.List;

import javax.xml.ws.wsaddressing.W3CEndpointReference;

import eu.dnetlib.enabling.resultset.rmi.ResultSetException;
import eu.dnetlib.enabling.resultset.rmi.ResultSetService;

public class ResultSetServiceMock implements ResultSetService {

	private List<String> list = new java.util.LinkedList<String>();
	private boolean isOpen = true;
	
	@Override
	public void closeRS(String rsId) {
		isOpen = false;
	}

	@Override
	public W3CEndpointReference createPullRS(String dataProviderServiceAddress,
			String bdId, int initialPageSize, int expiryTime,
			String styleSheet, Integer keepAliveTime, Integer total) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public W3CEndpointReference createPullRSEPR(
			W3CEndpointReference dataProviderEPR, String bdId,
			int initialPageSize, int expiryTime, String styleSheet,
			Integer keepAliveTime, Integer total) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public W3CEndpointReference createPushRS(int expiryTime, int keepAliveTime)
			throws ResultSetException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int getNumberOfElements(String rsId) throws ResultSetException {
		System.out.println("RS-MOCK: numOfElements in ResultSet: " + list.size());
		return list.size();
	}

	@Override
	public String getProperty(String rsId, String name)
			throws ResultSetException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getRSStatus(String rsId) throws ResultSetException {
		if (!isOpen){
			return "closed";
		}else{
			return "open";
		}
	}

	@Override
	public List<String> getResult(String rsId, int fromPosition,
			int toPosition, String requestMode) throws ResultSetException {
		System.out.println("from: " + fromPosition + ", to: " + toPosition);
		if ((fromPosition-1) > list.size()){
			return new LinkedList<String>();
		}
		if ((toPosition-1) > list.size()){
			return list.subList(fromPosition - 1 , list.size());			
		}
		return list.subList(fromPosition - 1, toPosition - 1);
	}

	@Override
	public String populateRS(String rsId, List<String> elements)
			throws ResultSetException {
		list.addAll(elements);
		return "added " + elements.size() + " elements.";
	}

	@Override
	public String identify() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void notify(String subscriptionId, String topic, String isId,
			String message) {
		// TODO Auto-generated method stub

	}

	@Override
	public void start() {
		// TODO Auto-generated method stub

	}

}
