Project

General

Profile

1
package eu.dnetlib.efg.download.plugin;
2

    
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.List;
6

    
7
import com.google.gson.Gson;
8
import eu.dnetlib.enabling.tools.DnetStreamSupport;
9
import eu.dnetlib.rmi.data.AbstractDownloadPlugin;
10
import eu.dnetlib.rmi.data.DownloadItem;
11
import eu.dnetlib.rmi.data.DownloadPlugin;
12
import eu.dnetlib.rmi.data.DownloadPluginException;
13

    
14
public class EFGDownloadPlugin extends AbstractDownloadPlugin implements DownloadPlugin {
15

    
16
	private final static List<String> suffix = Arrays.asList("jpg", "jpeg", "gif", "png", "pdf", "ps", "djvu", "scanpix");
17

    
18
	@Override
19
	public String extractURL(final String baseURL) throws DownloadPluginException {
20
		if (baseURL == null)
21
			return null;
22
		for (String s : suffix) {
23
			if (baseURL.trim().endsWith(s))
24
				return baseURL;
25
		}
26
		return null;
27
	}
28

    
29
	@Override
30
	public void setBasePath(final String basePath) {
31

    
32
	}
33

    
34
	@Override
35
	public DownloadItem retrieveUrl(final DownloadItem input) throws DownloadPluginException {
36
		try {
37
			String url = input.getOriginalUrl();
38
			if (url == null || url.trim().length() == 0) {
39
				return input;
40
			}
41
			List<String> urls = new Gson().fromJson(url, ArrayList.class);
42
			if (urls == null || urls.size() == 0) {
43
				input.setUrl(null);
44
				input.setOriginalUrl(null);
45
				return input;
46
			}
47
			if (checkUrlsNotNull(input, urls))
48
				return input;
49
			input.setOriginalUrl(null);
50
			input.setUrl(null);
51
			return input;
52
		} catch (Throwable e) {
53
			throw new DownloadPluginException("error on retrieve correct Url");
54
		}
55
	}
56

    
57
	@Override
58
	public Iterable<DownloadItem> retrieveUrls(final Iterable<DownloadItem> items) throws DownloadPluginException {
59
		return DnetStreamSupport.generateStreamFromIterator(items.iterator()).map(it -> retrieveUrl(it))::iterator;
60
	}
61

    
62
	@Override
63
	public String getPluginName() {
64
		return "EFGDownloadPlugin";
65
	}
66
}
    (1-1/1)