source: OAIHarvester/trunk/OAIHarvester/src/main/java/eu/clarin/cmdi/oai/harvester/impl/AbstractHarvester.java @ 1149

Last change on this file since 1149 was 1149, checked in by oschonef, 13 years ago
  • make constant static (found by findbugs)
  • Property svn:eol-style set to native
File size: 3.7 KB
Line 
1package eu.clarin.cmdi.oai.harvester.impl;
2
3import java.io.InputStream;
4import java.net.URI;
5import java.net.URISyntaxException;
6
7import javax.xml.stream.XMLInputFactory;
8import javax.xml.stream.XMLStreamException;
9import javax.xml.stream.XMLStreamReader;
10
11import org.codehaus.stax2.XMLInputFactory2;
12import org.codehaus.stax2.XMLStreamReader2;
13
14import eu.clarin.cmdi.oai.harvester.HarvestHandler;
15import eu.clarin.cmdi.oai.harvester.HarvestJob;
16import eu.clarin.cmdi.oai.harvester.Harvester;
17import eu.clarin.cmdi.oai.harvester.HarvesterException;
18
19abstract class AbstractHarvester implements Harvester {
20    private static final int DEFAULT_MAX_NETWORK_RETRY_COUNT = 5;
21    protected int maxNetworkRetryCount = DEFAULT_MAX_NETWORK_RETRY_COUNT;
22    private final XMLInputFactory factory;
23//    private final XMLValidationSchema schema;
24
25    protected AbstractHarvester() {
26        factory = XMLInputFactory2.newInstance();
27        factory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
28        factory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE,
29                Boolean.TRUE);
30        factory.setProperty(XMLInputFactory2.P_AUTO_CLOSE_INPUT,
31                Boolean.FALSE);
32        // XMLValidationSchemaFactory schemaFactory =
33        // XMLValidationSchemaFactory
34        // .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
35        // URL url = Harvester.class.getClassLoader().getResource(
36        // "META-INF/OAI-PMH.xsd");
37        // if (url == null) {
38        // throw new NullPointerException("schema not found!");
39        // }
40        // schema = schemaFactory.createSchema(url);
41    }
42
43    public abstract HarvestJob createJob(URI repositoryURI,
44            HarvestHandler handler) throws HarvesterException;
45
46    public final HarvestJob createJob(URI repositoryURI)
47            throws HarvesterException {
48        return createJob(repositoryURI, null);
49    }
50   
51    @Override
52    public final HarvestJob createJob(String repositoryURI,
53            HarvestHandler handler) throws HarvesterException {
54        try {
55            return createJob(new URI(repositoryURI), handler);
56        } catch (URISyntaxException e) {
57            throw new HarvesterException("invalid repositoryURI", e);
58        }
59    }
60
61    @Override
62    public final HarvestJob createJob(String repositoryURI)
63            throws HarvesterException {
64        return createJob(repositoryURI, null);
65    }
66
67    @Override
68    public final HarvestJob findJob(long id) throws HarvesterException {
69        return doFindJob(id);
70    }
71
72    @Override
73    public final HarvestJob cancelJob(long id) throws HarvesterException {
74        HarvestJob job = doFindJob(id);
75        if (job != null) {
76            job.cancel();
77        }
78        return job;
79    }
80
81    @Override
82    public final int getMaxNetworkRetryCount() {
83        return maxNetworkRetryCount;
84    }
85   
86    @Override
87    public final void setMaxNetworkRetryCount(int maxNetworkRetryCount) {
88        if (maxNetworkRetryCount < 1) {
89            throw new IllegalArgumentException(
90                    "invalid value for maxNetworkRetryCount: " +
91                            maxNetworkRetryCount);
92        }
93        this.maxNetworkRetryCount = maxNetworkRetryCount;
94    }
95
96    abstract void doRunJob(HarvestJobImpl job) throws HarvesterException;
97
98    abstract void doCancelJob(HarvestJobImpl job) throws HarvesterException;
99
100    protected abstract HarvestJob doFindJob(long id)
101        throws HarvesterException;
102
103    protected final XMLStreamReader createReader(InputStream in)
104            throws XMLStreamException {
105        XMLStreamReader2 reader =
106            (XMLStreamReader2) factory.createXMLStreamReader(in);
107        // reader.validateAgainst(schema);
108        return reader;
109    }
110
111} // abstract class AbstractHarvester
Note: See TracBrowser for help on using the repository browser.