Class EmbargoServiceImpl

  • All Implemented Interfaces:
    EmbargoService

    public class EmbargoServiceImpl
    extends Object
    implements EmbargoService
    Public interface to the embargo subsystem.

    Configuration properties: (with examples) # DC metadata field to hold the user-supplied embargo terms embargo.field.terms = dc.embargo.terms # DC metadata field to hold computed "lift date" of embargo embargo.field.lift = dc.date.available # String to indicate indefinite (forever) embargo in terms embargo.terms.open = Indefinite # implementation of embargo setter plugin plugin.single.org.dspace.embargo.EmbargoSetter = edu.my.Setter # implementation of embargo lifter plugin plugin.single.org.dspace.embargo.EmbargoLifter = edu.my.Lifter

    Author:
    Larry Stone, Richard Rodgers
    • Field Detail

      • terms_schema

        protected String terms_schema
      • terms_element

        protected String terms_element
      • terms_qualifier

        protected String terms_qualifier
      • lift_schema

        protected String lift_schema
      • lift_element

        protected String lift_element
      • lift_qualifier

        protected String lift_qualifier
      • itemService

        @Autowired(required=true)
        protected ItemService itemService
      • configurationService

        @Autowired(required=true)
        protected ConfigurationService configurationService
      • pluginService

        @Autowired(required=true)
        protected PluginService pluginService
    • Constructor Detail

      • EmbargoServiceImpl

        protected EmbargoServiceImpl()
    • Method Detail

      • setEmbargo

        public void setEmbargo​(Context context,
                               Item item)
                        throws SQLException,
                               AuthorizeException
        Description copied from interface: EmbargoService
        Put an Item under embargo until the specified lift date. Calls EmbargoSetter plugin to adjust Item access control policies.
        Specified by:
        setEmbargo in interface EmbargoService
        Parameters:
        context - the DSpace context
        item - the item to embargo
        Throws:
        SQLException - An exception that provides information on a database access error or other errors.
        AuthorizeException - Exception indicating the current user of the context does not have permission to perform a particular action.
      • getEmbargoTermsAsDate

        public DCDate getEmbargoTermsAsDate​(Context context,
                                            Item item)
                                     throws SQLException,
                                            AuthorizeException
        Description copied from interface: EmbargoService
        Get the embargo lift date for an Item, if any. This looks for the metadata field configured to hold embargo terms, and gives it to the EmbargoSetter plugin's method to interpret it into an absolute timestamp. This is intended to be called at the time the Item is installed into the archive.

        Note that the plugin is *always* called, in case it gets its cue for the embargo date from sources other than, or in addition to, the specified field.

        Specified by:
        getEmbargoTermsAsDate in interface EmbargoService
        Parameters:
        context - the DSpace context
        item - the item to embargo
        Returns:
        lift date on which the embargo is to be lifted, or null if none
        Throws:
        SQLException - An exception that provides information on a database access error or other errors.
        AuthorizeException - Exception indicating the current user of the context does not have permission to perform a particular action.
      • liftEmbargo

        public void liftEmbargo​(Context context,
                                Item item)
                         throws SQLException,
                                AuthorizeException,
                                IOException
        Description copied from interface: EmbargoService
        Lift the embargo on an item which is assumed to be under embargo. Call the plugin to manage permissions in its own way, then delete the administrative metadata fields that dictated embargo date.
        Specified by:
        liftEmbargo in interface EmbargoService
        Parameters:
        context - the DSpace context
        item - the item on which to lift the embargo
        Throws:
        SQLException - An exception that provides information on a database access error or other errors.
        AuthorizeException - Exception indicating the current user of the context does not have permission to perform a particular action.
        IOException - A general class of exceptions produced by failed or interrupted I/O operations.
      • init

        public void init()
                  throws Exception
        Initialize the bean (after dependency injection has already taken place). Ensures the configurationService is injected, so that we can get plugins and MD field settings from config. Called by "init-method" in Spring config.
        Throws:
        Exception - on generic exception
      • getSchemaOf

        protected String getSchemaOf​(String field)
      • getElementOf

        protected String getElementOf​(String field)
      • getQualifierOf

        protected String getQualifierOf​(String field)
      • recoverEmbargoDate

        protected DCDate recoverEmbargoDate​(Item item)