Project

General

Profile

1 33251 sandro.lab
package eu.dnetlib.download.plugin;
2
3 40523 claudio.at
import java.io.File;
4
import java.nio.file.Path;
5
import java.nio.file.Paths;
6
import java.util.List;
7
8 33251 sandro.lab
import com.google.common.collect.Iterables;
9
import com.google.gson.Gson;
10 40045 sandro.lab
import eu.dnetlib.data.download.rmi.AbstractDownloadPlugin;
11 33251 sandro.lab
import eu.dnetlib.data.download.rmi.DownloadItem;
12
import eu.dnetlib.data.download.rmi.DownloadPlugin;
13 40523 claudio.at
import eu.dnetlib.data.download.rmi.DownloadPluginException;
14 50842 sandro.lab
import org.apache.commons.lang3.StringUtils;
15 40045 sandro.lab
import org.apache.commons.logging.Log;
16
import org.apache.commons.logging.LogFactory;
17 33251 sandro.lab
18
public class ArxivImportFromFile extends AbstractDownloadPlugin implements DownloadPlugin {
19
20 40045 sandro.lab
    private static final Log log = LogFactory.getLog(ArxivImportFromFile.class); // NOPMD by marko on 11/24/08 5:02 PM
21 33900 sandro.lab
22 40045 sandro.lab
    /**
23
     * The base path.
24
     */
25
    private String basePath;
26 33251 sandro.lab
27 40045 sandro.lab
    @Override
28
    public DownloadItem retrieveUrl(final DownloadItem item) {
29
        if (checkOpenAccess(item) == null) return null;
30
        final String baseURLs = item.getUrl();
31
        final List<String> urlsList = new Gson().fromJson(baseURLs, List.class);
32
        for (final String baseURL : urlsList) {
33 33251 sandro.lab
34 40045 sandro.lab
            if (baseURL.isEmpty() == false && baseURL.trim().startsWith("http://") == true) {
35
                final String name = StringUtils.substringAfter(baseURL, "abs/").trim();
36
                if (name == null) {
37
                    item.setUrl(null);
38
                    return item;
39
                }
40 33575 sandro.lab
41 40045 sandro.lab
                final String fileURL = createPath(name);
42
                if (StringUtils.isBlank(fileURL)) {
43
                    item.setUrl(null);
44
                    return item;
45
                }
46 33916 claudio.at
47 40045 sandro.lab
                final File f = new File(fileURL);
48
                if (f.exists()) {
49
                    if (log.isDebugEnabled()) {
50
                        log.debug("found path associated to " + item.getIdItemMetadata() + " with path : " + fileURL);
51
                    }
52
                    item.setUrl("file://" + fileURL);
53
                } else {
54
                    if (log.isDebugEnabled()) {
55 51735 alessia.ba
                        log.debug("NOT found path associated to " + item.getIdItemMetadata()+": "+fileURL);
56 40045 sandro.lab
                    }
57
                    item.setUrl(null);
58
                }
59
                item.setOriginalUrl(baseURL);
60
                return item;
61 33575 sandro.lab
62 40045 sandro.lab
            } else {
63
                item.setUrl(null);
64
            }
65 33251 sandro.lab
66 40045 sandro.lab
        }
67
        return item;
68
    }
69 33251 sandro.lab
70 40045 sandro.lab
    public String createPath(final String name) {
71 51744 sandro.lab
        final String regExp = "\\d+\\.\\d+";
72 40045 sandro.lab
        if (name.matches(regExp)) {
73
            final String[] values = name.split("\\.");
74
            final Path bsPath = Paths.get(basePath);
75
            final Path filePath = Paths.get(String.format("%s/%s.pdf", values[0], name));
76 33575 sandro.lab
77 40045 sandro.lab
            final String fileURL = bsPath.resolve(filePath).toString();
78
            return fileURL;
79
        } else {
80
            if (name.contains("/")) {
81
                final String[] values = name.split("/");
82
                if (values.length != 2) return null;
83
                if (values[1].length() > 4) {
84
                    final String middle = values[1].substring(0, 4);
85
                    final Path bsPath = Paths.get(basePath);
86
                    final Path filePath = Paths.get(String.format("%s/%s.pdf", middle, name.replace("/", "")));
87
                    final String fileURL = bsPath.resolve(filePath).toString();
88
                    return fileURL;
89
                }
90
            }
91
        }
92
        return null;
93
    }
94 33575 sandro.lab
95 40045 sandro.lab
    @Override
96
    public Iterable<DownloadItem> retrieveUrls(final Iterable<DownloadItem> items) {
97 51736 alessia.ba
        return Iterables.transform(items, input -> retrieveUrl(input));
98 40045 sandro.lab
    }
99 33251 sandro.lab
100 40045 sandro.lab
    @Override
101
    public String getPluginName() {
102
        return "ArxivImportFromFile";
103
    }
104 33251 sandro.lab
105 40045 sandro.lab
    /**
106
     * @return the basePath
107
     */
108
    public String getBasePath() {
109
        return basePath;
110
    }
111 33251 sandro.lab
112 40045 sandro.lab
    /**
113
     * @param basePath the basePath to set
114
     */
115
    @Override
116
    public void setBasePath(final String basePath) {
117
        this.basePath = basePath;
118
    }
119 33251 sandro.lab
120 40045 sandro.lab
    @Override
121 40523 claudio.at
    public String extractURL(String baseURL) throws DownloadPluginException {
122 40045 sandro.lab
        return null;
123
    }
124 33251 sandro.lab
}