Project

General

Profile

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

    
3
import org.apache.commons.logging.Log;
4
import org.apache.commons.logging.LogFactory;
5

    
6
import java.util.Iterator;
7
import java.util.NoSuchElementException;
8
import java.util.Objects;
9
import java.util.concurrent.ArrayBlockingQueue;
10
import java.util.concurrent.TimeUnit;
11

    
12
/**
13
 * Created by miriam on 25/06/2018.
14
 */
15
public class HttpWithFileNameCollectorIterator implements Iterator<String> {
16
    public static final String TERMINATOR = "FINITO";
17
    private static final Log log = LogFactory.getLog(HttpWithFileNameCollectorIterator.class);
18

    
19
     private final ArrayBlockingQueue<String> queue;
20

    
21
    public static final long waitTime = 60L;
22

    
23
    private String last = "<resource><DOI>JUNK</DOI></resource>";
24

    
25
    public HttpWithFileNameCollectorIterator(ArrayBlockingQueue<String> queue) {
26
        this.queue = queue;
27
        extractFromQueue();
28
    }
29

    
30
    @Override
31
        public boolean hasNext() {
32

    
33

    
34
            //return !(Objects.equals(last, TERMINATOR) || Objects.equals(last,null));
35
            return !(Objects.equals(last, TERMINATOR));
36
        }
37

    
38
        @Override
39
        public String next() {
40
            try{
41

    
42
                return last;
43

    
44
            }finally{
45
                extractFromQueue();
46
            }
47

    
48
        }
49

    
50
    private void extractFromQueue() {
51

    
52

    
53
        try {
54
            last = queue.take();
55
            //last = queue.poll(waitTime, TimeUnit.SECONDS);
56
        }catch(InterruptedException e){
57
            log.warn("Interrupted while waiting for element to consume");
58
            throw new NoSuchElementException(e.getMessage());
59
        }
60
    }
61

    
62

    
63
}
(5-5/5)