Project

General

Profile

1
package eu.dnetlib.data.collector.plugins;
2

    
3
import java.io.BufferedInputStream;
4
import java.util.Iterator;
5

    
6
import org.apache.commons.lang3.StringUtils;
7

    
8
import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
9
import eu.dnetlib.data.collector.rmi.CollectorServiceException;
10
import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
11
import eu.dnetlib.miscutils.iterators.xml.XMLIterator;
12

    
13
public abstract class AbstractSplittedRecordPlugin extends AbstractCollectorPlugin {
14

    
15
	@Override
16
	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
17
			throws CollectorServiceException {
18
		final String baseUrl = interfaceDescriptor.getBaseUrl();
19
		final String element = interfaceDescriptor.getParams().get("splitOnElement");
20

    
21
		if (StringUtils.isBlank(baseUrl)) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
22

    
23
		if (StringUtils.isBlank(element)) { throw new CollectorServiceException("Param 'splitOnElement' is null or empty"); }
24

    
25
		final BufferedInputStream bis = getBufferedInputStream(baseUrl);
26

    
27
		return new Iterable<String>() {
28

    
29
			@Override
30
			public Iterator<String> iterator() {
31
				return new XMLIterator(element, bis);
32
			}
33
		};
34
	}
35

    
36
	abstract protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorServiceException;
37

    
38
}
(1-1/8)