diff --git a/oaipmh-core/pom.xml b/oaipmh-core/pom.xml index b90a4d056d99aebbb8ca9f64d968edec30829b74..5355a4255499730f18237fbf5351d415f105633a 100644 --- a/oaipmh-core/pom.xml +++ b/oaipmh-core/pom.xml @@ -28,6 +28,11 @@ <artifactId>httpclients</artifactId> <version>${common.version}</version> </dependency> + <dependency> + <groupId>info.textgrid.middleware</groupId> + <artifactId>ltputils</artifactId> + <version>${common.version}</version> + </dependency> <dependency> <groupId>info.textgrid.middleware.clients</groupId> <artifactId>textgrid-clients</artifactId> diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java index 57b8d513132dc76075a2179986046afc61d19fae..c0065126f955784f5cd14557b25a112ca5bbb1d9 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java @@ -11,6 +11,8 @@ import org.apache.commons.logging.LogFactory; import org.elasticsearch.common.Strings; import org.json.JSONObject; import org.springframework.stereotype.Component; +import info.textgrid.middleware.common.LTPUtils; +import info.textgrid.middleware.common.RDFConstants; import info.textgrid.middleware.common.TextGridMimetypes; import info.textgrid.middleware.oaipmh.ContributorType; import info.textgrid.middleware.oaipmh.DateType; @@ -343,7 +345,7 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { else if (this.dariah) { - System.out.println(" ## oarFormatFields: " + this.oarFormatFields.length); + log.debug("oarFormatFields: " + this.oarFormatFields.length); for (String format : this.oarFormatFields) { // Only the first value is taken here! We do not need to create a list! @@ -351,7 +353,7 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { // method! String resourceValue = OAIPMHUtilities.fieldLoader(this.jsonObj, format); - System.out.println(" ## resourceType: " + format + " --> " + resourceValue); + log.debug("resourceType/value: " + format + "/" + resourceValue); resourceType.setValue(resourceValue); // Set collection for DARIAH collection type here, data object for everything else. @@ -444,11 +446,12 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { log.debug("i: " + i); RelatedIdentifier relatedID = new RelatedIdentifier(); - relatedID.setValue(i); - if (i.startsWith("hdl:")) { + if (i.startsWith(RDFConstants.HDL_PREFIX)) { relatedID.setRelatedIdentifierType(RelatedIdentifierType.HANDLE); - } else if (i.startsWith("doi:")) { + relatedID.setValue(LTPUtils.omitHdlPrefix(i)); + } else if (i.startsWith(RDFConstants.DOI_PREFIX)) { relatedID.setRelatedIdentifierType(RelatedIdentifierType.DOI); + relatedID.setValue(LTPUtils.omitDoiPrefix(i)); } else if (i.startsWith("http")) { relatedID.setRelatedIdentifierType(RelatedIdentifierType.URL); } @@ -457,6 +460,7 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { // TODO No type OTHER existing! Value is mandatory, so we chose URL, what else can we // do? relatedID.setRelatedIdentifierType(RelatedIdentifierType.URL); + relatedID.setValue(i); } // Relation type is REFERENCES for the time being (coming from dc:relation at the moment). relatedID.setRelationType(RelationType.REFERENCES); @@ -630,13 +634,15 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { OAIPMHUtilities.fieldLoader(this.jsonObj, new String[] {alternateIdentifierField}); for (String i : alternateIdentifierList) { AlternateIdentifier alternateID = new AlternateIdentifier(); - alternateID.setValue(i); - if (alternateID.getValue().startsWith("hdl:")) { + if (i.startsWith(RDFConstants.HDL_PREFIX)) { alternateID.setAlternateIdentifierType("HANDLE"); - } else if (alternateID.getValue().startsWith("doi:")) { + alternateID.setValue(LTPUtils.omitHdlPrefix(i)); + } else if (i.startsWith(RDFConstants.DOI_PREFIX)) { alternateID.setAlternateIdentifierType("DOI"); + alternateID.setValue(LTPUtils.omitDoiPrefix(i)); } else { alternateID.setAlternateIdentifierType("OTHER"); + alternateID.setValue(i); } alternateIdentifiers.getAlternateIdentifier().add(alternateID); } @@ -780,7 +786,7 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { // Datacite schema validation! // TODO Please check some time! identifier.setIdentifierType("Handle"); - identifier.setValue(idValue); + identifier.setValue(LTPUtils.omitHdlPrefix(idValue)); } // ** @@ -790,7 +796,7 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract { else if (this.dariah) { // We set DOI for DH, 'cause we HAVE it! :-D identifier.setIdentifierType("DOI"); - identifier.setValue(idValue); + identifier.setValue(LTPUtils.omitDoiPrefix(idValue)); } return identifier;