Project

General

Profile

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

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

    
7
import org.apache.commons.lang.StringUtils;
8

    
9
import com.google.common.collect.Lists;
10

    
11
import eu.dnetlib.data.collector.plugin.CollectorPlugin;
12
import eu.dnetlib.data.collector.rmi.CollectorServiceException;
13
import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
14
import eu.dnetlib.miscutils.iterators.xml.XMLIterator;
15

    
16
public abstract class AbstractSplittedRecordPlugin implements CollectorPlugin {
17

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

    
23
		if (StringUtils.isBlank(baseUrl)) throw new CollectorServiceException("Param 'baseurl' is null or empty");
24

    
25
		if (StringUtils.isBlank(element)) throw new CollectorServiceException("Param 'splitOnElement' is null or empty");
26

    
27
		final BufferedInputStream bis = getBufferedInputStream(baseUrl);
28

    
29
		return new Iterable<String>() {
30

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

    
38
	@Override
39
	public List<String> listNameParameters() {
40
		return Lists.newArrayList("splitOnElement");
41
	}
42
	
43
	
44
	abstract protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorServiceException;
45

    
46
}
(1-1/6)