Project

General

Profile

1
/**
2
 *
3
 */
4
package eu.dnetlib.download.plugin;
5

    
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
import org.apache.commons.logging.Log;
17
import org.apache.commons.logging.LogFactory;
18

    
19

    
20
/**
21
 * @author sandro
22
 */
23
public class HALPdfDocumentPlugin extends AbstractDownloadPlugin implements DownloadPlugin {
24

    
25
    private static final Log log = LogFactory.getLog(HALPdfDocumentPlugin.class); // NOPMD by marko on 11/24/08 5:02 PM
26

    
27

    
28
    /**
29
     * {@inheritDoc}
30
     *
31
     * @see eu.dnetlib.data.download.rmi.DownloadPlugin#getPluginName()
32
     */
33
    @Override
34
    public String getPluginName() {
35
        // TODO Auto-generated method stub
36
        return "HALPdfDocumentPlugin";
37
    }
38

    
39
    /**
40
     * {@inheritDoc}
41
     *
42
     * @see eu.dnetlib.data.download.rmi.DownloadPlugin#retrieveUrls(java.lang.Iterable)
43
     */
44
    @Override
45
    public Iterable<DownloadItem> retrieveUrls(final Iterable<DownloadItem> urls) {
46
        return Iterables.transform(urls, new Function<DownloadItem, DownloadItem>() {
47

    
48
            @Override
49
            public DownloadItem apply(final DownloadItem input) {
50
                return retrieveUrl(input);
51
            }
52
        });
53
    }
54

    
55
    /**
56
     * {@inheritDoc}
57
     *
58
     * @see eu.dnetlib.data.download.rmi.DownloadPlugin#retrieveUrl(eu.dnetlib.data.download.rmi.DownloadItem)
59
     */
60
    @Override
61
    public DownloadItem retrieveUrl(final DownloadItem input) {
62
        try {
63
            if (checkOpenAccess(input) == null) return null;
64
            if (input == null) return null;
65
            String url = input.getOriginalUrl();
66

    
67
            if ((url == null) || (url.trim().length() == 0)) return input;
68
            @SuppressWarnings("unchecked")
69
            List<String> urls = new Gson().fromJson(url, ArrayList.class);
70
            if ((urls == null) || (urls.size() == 0)) return input;
71
            if (checkUrlsNotNull(input, urls)) return input;
72
            input.setOriginalUrl(null);
73
            input.setUrl(null);
74
            return input;
75
        } catch (Throwable e) {
76
            log.error("Error on retrieving URL", e);
77
            input.setOriginalUrl(null);
78
            input.setUrl(null);
79
            return input;
80
        }
81
    }
82

    
83
    /**
84
     * {@inheritDoc}
85
     *
86
     * @see eu.dnetlib.data.download.rmi.DownloadPlugin#setBasePath(java.lang.String)
87
     */
88
    @Override
89
    public void setBasePath(final String arg0) {
90
        // TODO Auto-generated method stub
91

    
92
    }
93

    
94
    @Override
95
    public String extractURL(String baseURL) throws DownloadPluginException {
96
        return baseURL.toLowerCase().endsWith("document") ? baseURL : null;
97
    }
98
}
(9-9/12)