public abstract class AbstractMETSDisseminator extends AbstractPackageDisseminator
This is a generic packager framework intended to be subclassed to create packagers for more specific METS "profiles". METS is an abstract and flexible framework that can encompass many different kinds of metadata and inner package structures.
Package Parameters:
manifestOnly -- if true, generate a standalone XML
document of the METS manifest instead of a complete package. Any
other metadata (such as licenses) will be encoded inline.
Default is false.unauthorized -- this determines what is done when the
packager encounters a Bundle or Bitstream it is not authorized to
read. By default, it just quits with an AuthorizeException.
If this option is present, it must be one of the following values:
skip -- simply exclude unreadable content from package.zero -- include unreadable bitstreams as 0-length files;
unreadable Bundles will still cause authorize errors.| Modifier and Type | Class and Description |
|---|---|
protected static class |
AbstractMETSDisseminator.MdStreamCache
Wrapper for a table of streams to add to the package, such as
mdRef'd metadata.
|
| Modifier and Type | Field and Description |
|---|---|
protected static String |
TEMPLATE_TYPE_SUFFIX
Suffix for Template objects (e.g.
|
| Constructor and Description |
|---|
AbstractMETSDisseminator() |
| Modifier and Type | Method and Description |
|---|---|
protected String |
addAmdSec(Context context,
DSpaceObject dso,
PackageParameters params,
edu.harvard.hul.ois.mets.Mets mets,
AbstractMETSDisseminator.MdStreamCache extraStreams) |
protected void |
addBitstreamsToZip(Context context,
DSpaceObject dso,
PackageParameters params,
ZipOutputStream zip)
Add Bitstreams associated with a given DSpace Object into an
existing ZipOutputStream
|
protected void |
addLogoBitstream(Bitstream logoBs,
edu.harvard.hul.ois.mets.FileSec fileSec,
edu.harvard.hul.ois.mets.Div div0,
PackageParameters params) |
abstract void |
addStructMap(Context context,
DSpaceObject dso,
PackageParameters params,
edu.harvard.hul.ois.mets.Mets mets)
Add any additional
structMap elements to the
METS document, as required by this subclass. |
protected void |
addToAmdSec(edu.harvard.hul.ois.mets.AmdSec fAmdSec,
String[] mdTypes,
Class mdSecClass,
Context context,
DSpaceObject dso,
PackageParameters params,
AbstractMETSDisseminator.MdStreamCache extraStreams) |
abstract String |
bundleToFileGrp(String bname)
Returns fileGrp's USE attribute value corresponding to a DSpace bundle name.
|
void |
disseminate(Context context,
DSpaceObject dso,
PackageParameters params,
File pkgFile)
Export the object (Item, Collection, or Community) as a
"package" on the indicated OutputStream.
|
protected static Bitstream |
findOriginalBitstream(Item item,
Bitstream derived)
For a bitstream that's a thumbnail or extracted text, find the
corresponding bitstream it was derived from, in the ORIGINAL bundle.
|
protected String |
gensym(String prefix)
Make a new unique ID symbol with specified prefix.
|
abstract String[] |
getDigiprovMdTypes(Context context,
DSpaceObject dso,
PackageParameters params)
Get the type string of the "digiprov" (digital provenance)
metadata to create for each object and each Bitstream in an Item.
|
abstract String[] |
getDmdTypes(Context context,
DSpaceObject dso,
PackageParameters params)
Get the types of Item-wide DMD to include in package.
|
protected String |
getHandleURN(String handle) |
String |
getMIMEType(PackageParameters params)
Identifies the MIME-type of this package, e.g.
|
String |
getObjectTypeString(DSpaceObject dso)
Build a string which will be used as the "Type" of this object in
the METS manifest.
|
String |
getParameterHelp()
Returns a user help string which should describe the
additional valid command-line options that this packager
implementation will accept when using the
-o or
--option flags with the Packager script. |
abstract String |
getProfile()
Returns name of METS profile to which this package conforms, e.g.
|
abstract String[] |
getRightsMdTypes(Context context,
DSpaceObject dso,
PackageParameters params)
Get the type string of the "rights" (permission and/or license)
metadata to create for each object and each Bitstream in an Item.
|
abstract String[] |
getSourceMdTypes(Context context,
DSpaceObject dso,
PackageParameters params)
Get the type string of the source metadata to create for each
object and each Bitstream in an Item.
|
abstract String[] |
getTechMdTypes(Context context,
DSpaceObject dso,
PackageParameters params)
Get the type string of the technical metadata to create for each
object and each Bitstream in an Item.
|
abstract boolean |
includeBundle(Bundle bundle) |
protected void |
linkLicenseRefsToBitstreams(Context context,
PackageParameters params,
DSpaceObject dso,
edu.harvard.hul.ois.mets.MdRef mdRef)
Cleanup our license file reference links, as Deposit Licenses & CC Licenses can be
added two ways (and we only want to add them to zip package *once*):
(1) Added as a normal Bitstream (assuming LICENSE and CC_LICENSE bundles will be included in pkg)
(2) Added via a 'rightsMD' crosswalk (as they are rights information/metadata on an Item)
|
String |
makeBitstreamURL(Bitstream bitstream,
PackageParameters params)
Get the URL by which the METS manifest refers to a Bitstream
member within the same package.
|
protected edu.harvard.hul.ois.mets.Div |
makeChildDiv(String type,
DSpaceObject dso,
PackageParameters params)
Create a element with
|
protected edu.harvard.hul.ois.mets.Div |
makeFileDiv(String fileID,
String type) |
protected edu.harvard.hul.ois.mets.Mets |
makeManifest(Context context,
DSpaceObject dso,
PackageParameters params,
AbstractMETSDisseminator.MdStreamCache extraStreams)
Write out a METS manifest.
|
protected edu.harvard.hul.ois.mets.helper.MdSec |
makeMdSec(Context context,
DSpaceObject dso,
Class mdSecClass,
String typeSpec,
PackageParameters params,
AbstractMETSDisseminator.MdStreamCache extraStreams)
Create an element wrapped around a metadata reference (either mdWrap
or mdRef); i.e.
|
abstract edu.harvard.hul.ois.mets.MetsHdr |
makeMetsHdr(Context context,
DSpaceObject dso,
PackageParameters params)
Create metsHdr element - separate so subclasses can override.
|
protected String |
makePersistentID(DSpaceObject dso) |
protected void |
resetCounter()
Resets the unique ID counter used by gensym() method to
determine the @ID values of METS tags.
|
protected void |
setMdType(edu.harvard.hul.ois.mets.MdRef mdRef,
String mdtype) |
protected void |
setMdType(edu.harvard.hul.ois.mets.MdWrap mdWrap,
String mdtype) |
protected void |
writeZipPackage(Context context,
DSpaceObject dso,
PackageParameters params,
OutputStream pkg)
Make a Zipped up METS package for the given DSpace Object
|
addToPackageList, disseminateAll, getPackageListprotected static final String TEMPLATE_TYPE_SUFFIX
protected String gensym(String prefix)
prefix - the prefix of the identifier, constrained to XML ID schemaprotected void resetCounter()
public String getMIMEType(PackageParameters params)
PackageDisseminator"application/zip".
Required when sending the package via HTTP, to
provide the Content-Type header.public void disseminate(Context context, DSpaceObject dso, PackageParameters params, File pkgFile) throws PackageValidationException, CrosswalkException, AuthorizeException, SQLException, IOException
Use the params parameter list to adjust the way the
package is made, e.g. including a "metadataOnly"
parameter might make the package a bare manifest in XML
instead of a Zip file including manifest and contents.
Throws an exception of the chosen object is not acceptable or there is a failure creating the package.
context - DSpace context.dso - DSpace object (item, collection, etc)params - Properties-style list of options specific to this packagerpkgFile - File where export package should be writtenPackageValidationException - if package cannot be created or there
is a fatal error in creating it.CrosswalkExceptionAuthorizeExceptionSQLExceptionIOExceptionprotected void writeZipPackage(Context context, DSpaceObject dso, PackageParameters params, OutputStream pkg) throws PackageValidationException, CrosswalkException, edu.harvard.hul.ois.mets.helper.MetsException, AuthorizeException, SQLException, IOException
context - DSpace Contextdso - The DSpace Objectparams - Parameters to the Packager scriptpkg - Package output streamPackageValidationExceptionAuthorizeExceptionSQLExceptionIOExceptionCrosswalkExceptionedu.harvard.hul.ois.mets.helper.MetsExceptionprotected void addBitstreamsToZip(Context context, DSpaceObject dso, PackageParameters params, ZipOutputStream zip) throws PackageValidationException, AuthorizeException, SQLException, IOException
context - DSpace Contextdso - The DSpace Objectparams - Parameters to the Packager scriptzip - Zip outputPackageValidationExceptionAuthorizeExceptionSQLExceptionIOExceptionprotected void setMdType(edu.harvard.hul.ois.mets.MdWrap mdWrap,
String mdtype)
protected void setMdType(edu.harvard.hul.ois.mets.MdRef mdRef,
String mdtype)
protected edu.harvard.hul.ois.mets.helper.MdSec makeMdSec(Context context, DSpaceObject dso, Class mdSecClass, String typeSpec, PackageParameters params, AbstractMETSDisseminator.MdStreamCache extraStreams) throws SQLException, PackageValidationException, CrosswalkException, IOException, AuthorizeException
context - DSpace Contextdso - DSpace Object we are generating METS manifest formdSecClass - class of mdSec (TechMD, RightsMD, DigiProvMD, etc)typeSpec - Type of metadata going into this mdSec (e.g. MODS, DC, PREMIS, etc)params - the PackageParametersextraStreams - list of extra files which need to be added to final dissemination packageSQLExceptionPackageValidationExceptionCrosswalkExceptionIOExceptionAuthorizeExceptionprotected void addToAmdSec(edu.harvard.hul.ois.mets.AmdSec fAmdSec,
String[] mdTypes,
Class mdSecClass,
Context context,
DSpaceObject dso,
PackageParameters params,
AbstractMETSDisseminator.MdStreamCache extraStreams)
throws SQLException,
PackageValidationException,
CrosswalkException,
IOException,
AuthorizeException
protected String addAmdSec(Context context, DSpaceObject dso, PackageParameters params, edu.harvard.hul.ois.mets.Mets mets, AbstractMETSDisseminator.MdStreamCache extraStreams) throws SQLException, PackageValidationException, CrosswalkException, IOException, AuthorizeException
protected String makePersistentID(DSpaceObject dso)
protected edu.harvard.hul.ois.mets.Mets makeManifest(Context context, DSpaceObject dso, PackageParameters params, AbstractMETSDisseminator.MdStreamCache extraStreams) throws edu.harvard.hul.ois.mets.helper.MetsException, PackageValidationException, CrosswalkException, AuthorizeException, SQLException, IOException
edu.harvard.hul.ois.mets.helper.MetsExceptionPackageValidationExceptionCrosswalkExceptionAuthorizeExceptionSQLExceptionIOExceptionprotected void addLogoBitstream(Bitstream logoBs, edu.harvard.hul.ois.mets.FileSec fileSec, edu.harvard.hul.ois.mets.Div div0, PackageParameters params)
protected edu.harvard.hul.ois.mets.Div makeChildDiv(String type, DSpaceObject dso, PackageParameters params)
type - - type attr value for the dso - - object for which to create the divparams - Div with dso as child.protected static Bitstream findOriginalBitstream(Item item, Bitstream derived) throws SQLException
item - the item we're dealing withderived - the derived bitstreamSQLExceptionprotected void linkLicenseRefsToBitstreams(Context context, PackageParameters params, DSpaceObject dso, edu.harvard.hul.ois.mets.MdRef mdRef) throws SQLException, IOException, AuthorizeException
So, if they are being added by *both*, then we want to just link the rightsMD
context - current DSpace Contextparams - current Packager Parametersdso - current DSpace ObjectmdRef - the rightsMD SQLExceptionIOExceptionAuthorizeExceptionpublic String getObjectTypeString(DSpaceObject dso)
Default format is "DSpace [Type-as-string]".
dso - DSpaceObject to create type-string forConstantspublic String getParameterHelp()
-o or
--option flags with the Packager script.public String makeBitstreamURL(Bitstream bitstream, PackageParameters params)
For a manifest-only METS, this is a reference to an HTTP URL where the bitstream should be able to be downloaded from.
bitstream - the Bitstreamparams - Packager Parameterspublic abstract edu.harvard.hul.ois.mets.MetsHdr makeMetsHdr(Context context, DSpaceObject dso, PackageParameters params)
public abstract String getProfile()
public abstract String bundleToFileGrp(String bname)
bname - name of DSpace bundle.public abstract String[] getDmdTypes(Context context, DSpaceObject dso, PackageParameters params) throws SQLException, IOException, AuthorizeException
"DC:qualifiedDublinCore" tells it to
create a METS section with MDTYPE="DC" and use the plugin
named "qualifiedDublinCore" to obtain the data.params - the PackageParameters passed to the disseminator.SQLExceptionIOExceptionAuthorizeExceptionpublic abstract String[] getTechMdTypes(Context context, DSpaceObject dso, PackageParameters params) throws SQLException, IOException, AuthorizeException
getDmdTypes() above.params - the PackageParameters passed to the disseminator.SQLExceptionIOExceptionAuthorizeExceptionpublic abstract String[] getSourceMdTypes(Context context, DSpaceObject dso, PackageParameters params) throws SQLException, IOException, AuthorizeException
getDmdTypes() above.params - the PackageParameters passed to the disseminator.SQLExceptionIOExceptionAuthorizeExceptionpublic abstract String[] getDigiprovMdTypes(Context context, DSpaceObject dso, PackageParameters params) throws SQLException, IOException, AuthorizeException
getDmdTypes() above.params - the PackageParameters passed to the disseminator.SQLExceptionIOExceptionAuthorizeExceptionpublic abstract String[] getRightsMdTypes(Context context, DSpaceObject dso, PackageParameters params) throws SQLException, IOException, AuthorizeException
getDmdTypes() above.params - the PackageParameters passed to the disseminator.SQLExceptionIOExceptionAuthorizeExceptionpublic abstract void addStructMap(Context context, DSpaceObject dso, PackageParameters params, edu.harvard.hul.ois.mets.Mets mets) throws SQLException, IOException, AuthorizeException, edu.harvard.hul.ois.mets.helper.MetsException
structMap elements to the
METS document, as required by this subclass. A simple default
structure map which fulfills the minimal DSpace METS DIP/SIP
requirements is already present, so this does not need to do anything.mets - the METS document to which to add structMapsSQLExceptionIOExceptionAuthorizeExceptionedu.harvard.hul.ois.mets.helper.MetsExceptionpublic abstract boolean includeBundle(Bundle bundle)
Copyright © 2013 DuraSpace. All Rights Reserved.