public class QDCCrosswalk extends SelfNamedPlugin implements DisseminationCrosswalk, IngestionCrosswalk
This class supports multiple dissemination crosswalks from DSpace internal data to the Qualified Dublin Core XML format (see http://dublincore.org/
It registers multiple Plugin names, which it reads from the DSpace configuration as follows:
"crosswalk.qdc.properties." describes a
QDC crosswalk. Everything after the last period is the plugin instance,
and the value is the pathname (relative to dspace.dir/config)
of the crosswalk configuration file.
You can have two aliases point to the same crosswalk, just add two configuration entries with the same value, e.g.
crosswalk.qdc.properties.QDC = xwalk/qdc.properties
crosswalk.qdc.properties.default = xwalk/qdc.properties
The first line creates a plugin with the name "QDC"
which is configured from the file dspace-dir/xwalk/qdc.properties.
Since there is significant overhead in reading the properties file to configure the crosswalk, and a crosswalk instance may be used any number of times, we recommend caching one instance of the crosswalk for each alias and simply reusing those instances. The PluginManager does this by default.
Each named crosswalk has two other types of configuration lines:
XML Namespaces: all XML namespace prefixes used in the XML fragments below must be defined in the configuration as follows. Add a line of the form:
crosswalk.qdc.namespace.{NAME}.{prefix} = {namespace-URI}
e.g. for the namespaces dc and dcterms
in the plugin named QDC, add these lines:
crosswalk.qdc.namespace.QDC.dc = http://purl.org/dc/elements/1.1/ crosswalk.qdc.namespace.QDC.dcterms = http://purl.org/dc/terms/
Finally, you need to declare an XML Schema URI for the plugin, with a line of the form
crosswalk.qdc.schema.{NAME} = {schema-URI}
for example,
crosswalk.qdc.schemaLocation.QDC = \ http://purl.org/dc/terms/ \ http://dublincore.org/schemas/xmls/qdc/2003/04/02/qualifieddc.xsd
XSI_NS| Constructor and Description |
|---|
QDCCrosswalk() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canDisseminate(DSpaceObject dso)
Predicate: Can this disseminator crosswalk the given object.
|
org.jdom.Element |
disseminateElement(DSpaceObject dso)
Execute crosswalk, returning one XML root element as
a JDOM
Element object. |
java.util.List<org.jdom.Element> |
disseminateList(DSpaceObject dso)
Returns object's metadata in MODS format, as XML structure node.
|
org.jdom.Namespace[] |
getNamespaces()
Get XML namespaces of the elements this crosswalk may return.
|
static java.lang.String[] |
getPluginNames() |
java.lang.String |
getSchemaLocation()
Get the XML Schema location(s) of the target metadata format.
|
void |
ingest(Context context,
DSpaceObject dso,
org.jdom.Element root)
Crosswalk metadata from external XML representation to DSpace
internal representations.
|
void |
ingest(Context context,
DSpaceObject dso,
java.util.List<org.jdom.Element> ml)
Crosswalk metadata from external XML representation to DSpace
internal representations.
|
boolean |
preferList()
Predicate: Does this disseminator prefer to return a list of Elements,
rather than a single root Element?
|
getPluginInstanceName, setPluginInstanceNamepublic static java.lang.String[] getPluginNames()
public org.jdom.Namespace[] getNamespaces()
DisseminationCrosswalkgetNamespaces in interface DisseminationCrosswalkpublic java.lang.String getSchemaLocation()
DisseminationCrosswalkxsi:schemaLocation
attribute that should be applied to the generated XML.
It may return the empty string if no schema is known, but crosswalk authors are strongly encouraged to implement this call so their output XML can be validated correctly.
getSchemaLocation in interface DisseminationCrosswalkpublic java.util.List<org.jdom.Element> disseminateList(DSpaceObject dso) throws CrosswalkException, java.io.IOException, java.sql.SQLException, AuthorizeException
disseminateList in interface DisseminationCrosswalkdso - the DSpace Object whose metadata to export.CrosswalkInternalException - (CrosswalkException) failure of the crosswalk itself.CrosswalkObjectNotSupported - (CrosswalkException) Cannot crosswalk this kind of DSpace object.java.io.IOException - I/O failure in services this callsjava.sql.SQLException - Database failure in services this callsAuthorizeException - current user not authorized for this operation.CrosswalkExceptionpublic org.jdom.Element disseminateElement(DSpaceObject dso) throws CrosswalkException, java.io.IOException, java.sql.SQLException, AuthorizeException
DisseminationCrosswalkElement object.
This is typically the root element of a document.
disseminateElement in interface DisseminationCrosswalkdso - the DSpace Object whose metadata to export.nullCrosswalkInternalException - (CrosswalkException) failure of the crosswalk itself.CrosswalkObjectNotSupported - (CrosswalkException) Cannot crosswalk this kind of DSpace object.java.io.IOException - I/O failure in services this callsjava.sql.SQLException - Database failure in services this callsAuthorizeException - current user not authorized for this operation.CrosswalkExceptionpublic boolean canDisseminate(DSpaceObject dso)
DisseminationCrosswalkcanDisseminate in interface DisseminationCrosswalkdso - dspace object, e.g. an Item.public void ingest(Context context, DSpaceObject dso, org.jdom.Element root) throws CrosswalkException, java.io.IOException, java.sql.SQLException, AuthorizeException
IngestionCrosswalk
It is otherwise just like the List form of
ingest() above.
ingest in interface IngestionCrosswalkcontext - DSpace context.dso - DSpace Object (usually an Item) to which new metadata gets attached.root - root Element of metadata document.CrosswalkInternalException - (CrosswalkException) failure of the crosswalk itself.CrosswalkObjectNotSupported - (CrosswalkException) Cannot crosswalk into this kind of DSpace object.MetadataValidationException - (CrosswalkException) metadata format was not acceptable or missing required elements.java.io.IOException - I/O failure in services this callsjava.sql.SQLException - Database failure in services this callsAuthorizeException - current user not authorized for this operation.CrosswalkExceptionpublic void ingest(Context context, DSpaceObject dso, java.util.List<org.jdom.Element> ml) throws CrosswalkException, java.io.IOException, java.sql.SQLException, AuthorizeException
IngestionCrosswalkList of JDOM XML elements. It interprets the
contents of each element and adds the appropriate values to the
DSpace Object's internal metadata represenation.
Note that this method may be called several times for the same target Item, if the metadata comes as several lists of elements, so it should not add fixed metadata values on each or they may appear multiples times.
NOTE:
Most XML metadata standards (e.g. MODS) are defined as a "root"
element which contains a sequence of "fields" that have the
descriptive information. Some metadata containers have a
"disembodied" list of fields, rather than the root element, so
this ingest method is intended to accept that bare
list of fields. However, it must also accept a list containing
only the "root" element for the metadata structure (e.g. the
"mods:mods" wrapper in a MODS expression) as a member of the
list. It can handle this case by calling the single-element
version of ingest() on the "root" element.
Some callers of the crosswalk plugin may not be careful about (or capable of) choosing whether the list or element version should be called.
ingest in interface IngestionCrosswalkcontext - DSpace context.dso - DSpace Object (Item, Bitstream, etc) to which new metadata gets attached.ml - List of XML Elements of metadataCrosswalkInternalException - (CrosswalkException) failure of the crosswalk itself.CrosswalkObjectNotSupported - (CrosswalkException) Cannot crosswalk into this kind of DSpace object.MetadataValidationException - (CrosswalkException) metadata format was not acceptable or missing required elements.java.io.IOException - I/O failure in services this callsjava.sql.SQLException - Database failure in services this callsAuthorizeException - current user not authorized for this operation.CrosswalkExceptionpublic boolean preferList()
DisseminationCrosswalk
Some metadata formats have an XML schema without a root element,
for example, the Dublin Core and Qualified Dublin Core formats.
This would be true for a crosswalk into QDC, since
it would "prefer" to return a list, since any root element it has
to produce would have to be part of a nonstandard schema. In
most cases your implementation will want to return
false
preferList in interface DisseminationCrosswalkCopyright © 2013 DuraSpace. All Rights Reserved.