Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

[DS-1834] Collection content source harvesting test does not check sets properly #430

Merged
merged 1 commit into from

2 participants

@KevinVdV
Owner

Had to change the way that sets are checked since the "ListSets" class does not support a constructor with a resumption token.
We may need to alter this code again once a new version of the "oclc-harvester2" is released. The latest version of the ListSets class does support the resumptionToken (http://oaiharvester2.googlecode.com/svn/trunk/src/ORG/oclc/oai/harvester2/verb/ListSets.java), but has not been released.

@helix84
Owner

Tested using the "Test settings" button. Before the fix the response was "The OAI server does not have a set with the specified setSpec". After the fix, it replied that the settings are correct. I didn't test actual harvesting.

@helix84 helix84 merged commit c160a6e into from
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Dec 11, 2013
  1. @KevinVdV
This page is out of date. Refresh to see the latest.
Showing with 5 additions and 18 deletions.
  1. +5 −18 dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java
View
23 dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java
@@ -29,6 +29,7 @@
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
+import ORG.oclc.oai.harvester2.verb.*;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.dspace.authorize.AuthorizeException;
@@ -64,12 +65,6 @@
import org.jdom.output.XMLOutputter;
import org.xml.sax.SAXException;
-import ORG.oclc.oai.harvester2.verb.GetRecord;
-import ORG.oclc.oai.harvester2.verb.Identify;
-import ORG.oclc.oai.harvester2.verb.ListMetadataFormats;
-import ORG.oclc.oai.harvester2.verb.ListRecords;
-import ORG.oclc.oai.harvester2.verb.ListSets;
-
/**
* This class handles OAI harvesting of externally located records into this repository.
@@ -958,29 +953,21 @@ private void alertAdmin(int status, Exception ex)
try {
//If we do not want to harvest from one set, then skip this.
if(!"all".equals(oaiSetId)){
- ListSets ls = new ListSets(oaiSource);
+ ListIdentifiers ls = new ListIdentifiers(oaiSource, null, null, oaiSetId, DMDOAIPrefix);
// The only error we can really get here is "noSetHierarchy"
if (ls.getErrors() != null && ls.getErrors().getLength() > 0) {
for (int i=0; i<ls.getErrors().getLength(); i++) {
String errorCode = ls.getErrors().item(i).getAttributes().getNamedItem("code").getTextContent();
- errorSet.add(errorCode);
+ errorSet.add(OAI_SET_ERROR + ": The OAI server does not have a set with the specified setSpec (" + errorCode + ")");
}
}
else {
// Drilling down to /OAI-PMH/ListSets/set
Document reply = db.build(ls.getDocument());
Element root = reply.getRootElement();
- List<Element> sets= root.getChild("ListSets",OAI_NS).getChildren("set",OAI_NS);
-
- for (Element set : sets)
- {
- String setSpec = set.getChildText("setSpec", OAI_NS);
- if (setSpec.equals(oaiSetId)) {
- foundSet = true;
- break;
- }
- }
+ //Check if we can find items, if so this indicates that we have children and our sets exist
+ foundSet = 0 < root.getChild("ListIdentifiers",OAI_NS).getChildren().size();
if (!foundSet) {
errorSet.add(OAI_SET_ERROR + ": The OAI server does not have a set with the specified setSpec");
Something went wrong with that request. Please try again.