package eu.dnetlib.data.utility.objectpackaging;

import java.util.List;

import javax.xml.ws.wsaddressing.W3CEndpointReference;

import org.springframework.beans.factory.annotation.Required;

import eu.dnetlib.data.utility.objectpackaging.rmi.ObjectPackagingException;
import eu.dnetlib.data.utility.objectpackaging.rmi.ObjectPackagingService;
import eu.dnetlib.enabling.resultset.ResultSetFactory;
import eu.dnetlib.enabling.tools.AbstractBaseService;

public class ObjectPackagingServiceImpl extends AbstractBaseService implements ObjectPackagingService {

	private ObjectPackagingCore objectPackagingCore;

	private ResultSetFactory resultSetFactory;

	@Override
	public W3CEndpointReference generatePackages(List<W3CEndpointReference> eprs, String xpathID) throws ObjectPackagingException {
		String bdId = objectPackagingCore.generatePackages(eprs, xpathID);
		return resultSetFactory.createResultSet(new ObjectPackagingResultSetListener(objectPackagingCore, bdId));
	}

	@Override
	public W3CEndpointReference splitPackages(W3CEndpointReference epr) throws ObjectPackagingException {
		String bdId = objectPackagingCore.splitPackages(epr);
		return resultSetFactory.createResultSet(new ObjectPackagingResultSetListener(objectPackagingCore, bdId));
	}

	@Required
	public void setResultSetFactory(final ResultSetFactory resultSetFactory) {
		this.resultSetFactory = resultSetFactory;
	}

	public ObjectPackagingCore getObjectPackagingCore() {
		return objectPackagingCore;
	}

	@Required
	public void setObjectPackagingCore(ObjectPackagingCore objectPackagingCore) {
		this.objectPackagingCore = objectPackagingCore;
	}

}
