Project

General

Profile

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

    
3
import java.text.ParseException;
4
import java.time.format.DateTimeFormatter;
5
import java.util.Date;
6

    
7
import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
8
import eu.dnetlib.data.collector.plugin.CollectorPlugin;
9
import eu.dnetlib.data.collector.rmi.CollectorServiceException;
10
import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
11
import org.apache.commons.lang3.StringUtils;
12
import org.apache.commons.logging.Log;
13
import org.apache.commons.logging.LogFactory;
14

    
15
public class DataciteCollectorPlugin extends AbstractCollectorPlugin implements CollectorPlugin {
16

    
17
	private static final Log log = LogFactory.getLog(DataciteCollectorPlugin.class);
18

    
19
	private DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
20

    
21
	@Override
22
	public Iterable<String> collect(InterfaceDescriptor interfaceDescriptor, String fromDate, String untilDate) throws CollectorServiceException {
23

    
24
		String baseurl = interfaceDescriptor.getBaseUrl();
25
		if (StringUtils.isBlank(baseurl)) throw new CollectorServiceException("baseUrl cannot be empty");
26
		long timestamp = 0;
27
		if (StringUtils.isNotBlank(fromDate)) {
28
			try {
29
				Date date = org.apache.commons.lang.time.DateUtils.parseDate(
30
						fromDate,
31
						new String[] { "yyyy-MM-dd", "yyyy-MM-dd'T'HH:mm:ssXXX", "yyyy-MM-dd'T'HH:mm:ss.SSSX", "yyyy-MM-dd'T'HH:mm:ssZ",
32
								"yyyy-MM-dd'T'HH:mm:ss.SX" });
33
				//timestamp =parsed.getTime() /1000;
34
				timestamp = date.toInstant().toEpochMilli() / 1000;
35
				log.info("Querying for Datacite records from timestamp " + timestamp + " (date was " + fromDate + ")");
36

    
37
			} catch (ParseException e) {
38
				throw new CollectorServiceException(e);
39
			}
40
		}
41
		final long finalTimestamp = timestamp;
42
		return () -> {
43
			try {
44
				return new DataciteESIterator(finalTimestamp, baseurl);
45
			} catch (Exception e) {
46
				throw new RuntimeException(e);
47
			}
48
		};
49
	}
50

    
51
}
(1-1/2)