Project

General

Profile

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

    
3
import java.util.Iterator;
4
import java.util.Set;
5

    
6
import com.google.common.base.Splitter;
7
import com.google.common.collect.Sets;
8
import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
9
import eu.dnetlib.data.collector.rmi.CollectorServiceException;
10
import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
11

    
12
/**
13
 * Created by andrea on 11/01/16.
14
 */
15
public class SftpCollectorPlugin extends AbstractCollectorPlugin {
16

    
17
    private SftpIteratorFactory sftpIteratorFactory;
18

    
19
    @Override
20
    public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String toDate)
21
            throws CollectorServiceException {
22
        final String baseUrl = interfaceDescriptor.getBaseUrl();
23
        final String username = interfaceDescriptor.getParams().get("username");
24
        final String password = interfaceDescriptor.getParams().get("password");
25
        final String recursive = interfaceDescriptor.getParams().get("recursive");
26
        final String extensions = interfaceDescriptor.getParams().get("extensions");
27

    
28
        if ((baseUrl == null) || baseUrl.isEmpty()) {
29
            throw new CollectorServiceException("Param 'baseurl' is null or empty");
30
        }
31
        if ((username == null) || username.isEmpty()) {
32
            throw new CollectorServiceException("Param 'username' is null or empty");
33
        }
34
        if ((password == null) || password.isEmpty()) {
35
            throw new CollectorServiceException("Param 'password' is null or empty");
36
        }
37
        if ((recursive == null) || recursive.isEmpty()) {
38
            throw new CollectorServiceException("Param 'recursive' is null or empty");
39
        }
40
        if ((extensions == null) || extensions.isEmpty()) {
41
            throw new CollectorServiceException("Param 'extensions' is null or empty");
42
        }
43
        if (fromDate != null && !fromDate.matches("\\d{4}-\\d{2}-\\d{2}")) { throw new CollectorServiceException("Invalid date (YYYY-MM-DD): " + fromDate); }
44

    
45
        // final int fromDateIntSeconds =
46

    
47
        return new Iterable<String>() {
48

    
49
            boolean isRecursive = "true".equals(recursive);
50

    
51
            Set<String> extensionsSet = parseSet(extensions);
52

    
53
            @Override
54
            public Iterator<String> iterator() {
55
                return getSftpIteratorFactory().newIterator(baseUrl, username, password, isRecursive, extensionsSet, fromDate);
56
            }
57

    
58
            private Set<String> parseSet(final String extensions) {
59
                return Sets.newHashSet(Splitter.on(",").omitEmptyStrings().trimResults().split(extensions));
60
            }
61
        };
62
    }
63

    
64
    public SftpIteratorFactory getSftpIteratorFactory() {
65
        return sftpIteratorFactory;
66
    }
67

    
68
    public void setSftpIteratorFactory(SftpIteratorFactory sftpIteratorFactory) {
69
        this.sftpIteratorFactory = sftpIteratorFactory;
70
    }
71
}
(1-1/3)