org.dspace.content.packager
Class PDFPackager

java.lang.Object
  extended by org.dspace.core.SelfNamedPlugin
      extended by org.dspace.content.packager.PDFPackager
All Implemented Interfaces:
PackageDisseminator, PackageIngester

public class PDFPackager
extends SelfNamedPlugin
implements PackageIngester, PackageDisseminator

Accept a PDF file by itself as a SIP.

This is mainly a proof-of-concept to demonstrate the flexibility of the packager and crosswalk plugins.

To import, open up the PDF and try to extract sufficient metadata from its InfoDict.

Export is a crude hack: if the item has a bitstream containing PDF, send that, otherwise it fails. Do not attempt to insert metadata.

Version:
$Revision: 3761 $
Author:
Larry Stone

Constructor Summary
PDFPackager()
           
 
Method Summary
 void disseminate(Context context, DSpaceObject dso, PackageParameters params, OutputStream out)
          VERY crude dissemination: just look for the first bitstream with the PDF package type, and toss it out.
 String getMIMEType(PackageParameters params)
          Identifies the MIME-type of this package, i.e.
static String[] getPluginNames()
           
 WorkspaceItem ingest(Context context, Collection collection, InputStream pkg, PackageParameters params, String license)
          Create new Item out of the ingested package, in the indicated collection.
 Item replace(Context ctx, Item item, InputStream pckage, PackageParameters params)
          Replace is not implemented.
 
Methods inherited from class org.dspace.core.SelfNamedPlugin
getPluginInstanceName, setPluginInstanceName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PDFPackager

public PDFPackager()
Method Detail

getPluginNames

public static String[] getPluginNames()

ingest

public WorkspaceItem ingest(Context context,
                            Collection collection,
                            InputStream pkg,
                            PackageParameters params,
                            String license)
                     throws PackageValidationException,
                            CrosswalkException,
                            AuthorizeException,
                            SQLException,
                            IOException
Create new Item out of the ingested package, in the indicated collection. It creates a workspace item, which the application can then install if it chooses to bypass Workflow.

This is a VERY crude import of a single Adobe PDF (Portable Document Format) file, using the document's embedded metadata for package metadata. If the PDF file hasn't got the minimal metadata available, it is rejected.

Specified by:
ingest in interface PackageIngester
Parameters:
context - DSpace context.
collection - collection under which to create new item.
pkg - input stream containing package to ingest.
params - package parameters (none recognized)
license - may be null, which takes default license.
Returns:
workspace item created by ingest.
Throws:
PackageException - if package is unacceptable or there is a fatal error turning it into an Item.
PackageValidationException - if package is unacceptable or there is a fatal error turning it into an Item.
CrosswalkException
AuthorizeException
SQLException
IOException

replace

public Item replace(Context ctx,
                    Item item,
                    InputStream pckage,
                    PackageParameters params)
             throws PackageValidationException,
                    CrosswalkException,
                    AuthorizeException,
                    SQLException,
                    IOException,
                    UnsupportedOperationException
Replace is not implemented.

Specified by:
replace in interface PackageIngester
Parameters:
ctx - DSpace context.
item - existing item to be replaced
pckage - input stream containing package to ingest.
params - Properties-style list of options specific to this packager
Returns:
item re-created by ingest.
Throws:
PackageValidationException - if package is unacceptable or there is a fatal error turning it into an Item.
UnsupportedOperationException - if this packager does not implement replace.
CrosswalkException
AuthorizeException
SQLException
IOException

disseminate

public void disseminate(Context context,
                        DSpaceObject dso,
                        PackageParameters params,
                        OutputStream out)
                 throws PackageValidationException,
                        CrosswalkException,
                        AuthorizeException,
                        SQLException,
                        IOException
VERY crude dissemination: just look for the first bitstream with the PDF package type, and toss it out. Works on packages importer with this packager, and maybe some others.

Specified by:
disseminate in interface PackageDisseminator
Parameters:
context - DSpace context.
dso - DSpace object (item, collection, etc)
params - Properties-style list of options specific to this packager
out - output stream on which to write package
Throws:
PackageValidationException - if package cannot be created or there is a fatal error in creating it.
CrosswalkException
AuthorizeException
SQLException
IOException

getMIMEType

public String getMIMEType(PackageParameters params)
Identifies the MIME-type of this package, i.e. "application/pdf".

Specified by:
getMIMEType in interface PackageDisseminator
Returns:
the MIME type (content-type header) of the package to be returned


Copyright © 2010 DuraSpace. All Rights Reserved.