Add location metadata so that the DOI actually resolves properly.

This commit is contained in:
Mark H. Wood
2015-03-18 14:40:33 -04:00
parent 0c77f7be91
commit ae11c1c795

View File

@@ -561,7 +561,7 @@ public class EZIDIdentifierProvider
/** /**
* Map selected DSpace metadata to fields recognized by DataCite. * Map selected DSpace metadata to fields recognized by DataCite.
*/ */
private Map<String, String> crosswalkMetadata(DSpaceObject dso) Map<String, String> crosswalkMetadata(DSpaceObject dso)
{ {
if ((null == dso) || !(dso instanceof Item)) if ((null == dso) || !(dso instanceof Item))
{ {
@@ -632,18 +632,42 @@ public class EZIDIdentifierProvider
mapped.put(DATACITE_PUBLICATION_YEAR, year); mapped.put(DATACITE_PUBLICATION_YEAR, year);
} }
// TODO find a way to get a current direct URL to the object and set _target // Supply _target link back to this object
// mapped.put("_target", url); String handle = dso.getHandle();
if (null == handle)
{
log.warn("{} #{} has no handle -- location not set.",
dso.getTypeText(), dso.getID());
}
else
{
String url = configurationService.getProperty("dspace.url")
+ "/handle/" + item.getHandle();
log.info("Supplying location: {}", url);
mapped.put("_target", url);
}
return mapped; return mapped;
} }
/**
* Provide a map from DSO metadata keys to EZID keys. This will drive the
* generation of EZID metadata for the minting of new identifiers.
*
* @param aCrosswalk
*/
@Required @Required
public void setCrosswalk(Map<String, String> aCrosswalk) public void setCrosswalk(Map<String, String> aCrosswalk)
{ {
crosswalk = aCrosswalk; crosswalk = aCrosswalk;
} }
/**
* Provide a map from DSO metadata keys to classes which can transform their
* values to something acceptable to EZID.
*
* @param transformMap
*/
public void setCrosswalkTransform(Map<String, Transform> transformMap) public void setCrosswalkTransform(Map<String, Transform> transformMap)
{ {
transforms = transformMap; transforms = transformMap;