Project

General

Profile

1
package eu.dnetlib.download.plugin;
2

    
3
import java.nio.file.FileSystems;
4
import java.nio.file.Files;
5
import java.nio.file.Path;
6
import java.util.ArrayList;
7
import java.util.List;
8

    
9
import com.google.common.base.Function;
10
import com.google.common.collect.Iterables;
11
import com.google.gson.Gson;
12
import eu.dnetlib.data.download.rmi.AbstractDownloadPlugin;
13
import eu.dnetlib.data.download.rmi.DownloadItem;
14
import eu.dnetlib.data.download.rmi.DownloadPlugin;
15
import eu.dnetlib.data.download.rmi.DownloadPluginException;
16

    
17
/**
18
 * Created by sandro on 3/1/16.
19
 */
20
public class HindawiDownloadPlugin extends AbstractDownloadPlugin implements DownloadPlugin {
21

    
22
	private String basePath;
23

    
24
	private Gson gson;
25

    
26
	public HindawiDownloadPlugin() {
27
		this.gson = new Gson();
28
	}
29

    
30
	@Override
31
	public String extractURL(final String baseURL) throws DownloadPluginException {
32
		return null;
33
	}
34

    
35
	@Override
36
	public void setBasePath(final String basePath) {
37
		this.basePath = basePath;
38
	}
39

    
40
	/*
41
	 * (non-Javadoc)
42
     *
43
     * @see eu.dnetlib.data.download.rmi.DownloadPlugin#getPluginName()
44
     */
45
	@Override
46
	public String getPluginName() {
47
		return "HindawiDownloadPlugin";
48
	}
49

    
50
	@Override
51
	public Iterable<DownloadItem> retrieveUrls(final Iterable<DownloadItem> urls) throws DownloadPluginException {
52
		return Iterables.transform(urls, new Function<DownloadItem, DownloadItem>() {
53

    
54
			@Override
55
			public DownloadItem apply(final DownloadItem input) {
56
				return retrieveUrl(input);
57
			}
58
		});
59
	}
60

    
61
	/*
62
	 * (non-Javadoc)
63
	 *
64
	 * @see eu.dnetlib.data.download.rmi.DownloadPlugin#retrieveUrl(eu.dnetlib.data.download.rmi.DownloadItem)
65
	 */
66
	@Override
67
	public DownloadItem retrieveUrl(final DownloadItem input) throws DownloadPluginException {
68

    
69
		List<String> inputList = this.gson.fromJson(input.getUrl(), ArrayList.class);
70
		if (inputList == null || inputList.size() == 0) {
71
			input.setUrl(null);
72
			return input;
73
		}
74

    
75
		for (String fileUrl : inputList) {
76
			Path inputhPath = FileSystems.getDefault().getPath(basePath).resolve("." + fileUrl);
77
			if (Files.exists(inputhPath)) {
78
				input.setOriginalUrl("file://" + inputhPath.toString());
79
				input.setUrl("file://" + inputhPath.toString());
80
				return input;
81
			}
82
		}
83
		input.setUrl(null);
84
		return input;
85
	}
86
}
(10-10/12)