Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Resolution: IdentifierService act in a manner similar to the exisitng existing HandleManager in DSpace, allowing for resolution of DSpace Items from provided identifiers.
  2. Minting: Minting is the act of reserving and returning an identifier that may be used with a specific DSpaceObject.
  3. Registering: Registering is the act of recording the existence of a minted identifier with an external persistent resolver service, these services may reside on the local machine (HandleManager) or exist as external services (PURL or DEZID DOI registrations services)

    Code Block
    public interface IdentifierService {
    
        /**
         *
         * @param context
         * @param dso
         * @param identifier
         * @return
         */
        String lookup(Context context, DSpaceObject dso, Class<? extends Identifier> identifier);
    
        /**
         *
         * This will resolve a DSpaceObject based on a provided Identifier.  The Service will interrogate the providers in
         * no particular order and return the first successful result discovered.  If no resolution is successful,
         * the method will return null if no object is found.
         *
         * TODO: Verify null is returned.
         *
         * @param context
         * @param identifier
         * @return
         * @throws IdentifierNotFoundException
         * @throws IdentifierNotResolvableException
         */
        DSpaceObject resolve(Context context, String identifier) throws IdentifierNotFoundException, IdentifierNotResolvableException;
    
        /**
         *
         * Reserves any identifiers necessary based on the capabilities of all providers in the service.
         *
         * @param context
         * @param dso
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void reserve(Context context, DSpaceObject dso) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         *
         * Used to Reserve a Specific Identifier (for example a Handle,  hdl:1234.5/6) The provider is responsible for
         * Detecting and Processing the appropriate identifier, all Providers are interrogated, multiple providers
         * can process the same identifier.
         *
         * @param context
         * @param dso
         * @param identifier
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void reserve(Context context, DSpaceObject dso, String identifier) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         *
         * @param context
         * @param dso
         * @return
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void register(Context context, DSpaceObject dso) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         *
         * Used to Register a Specific Identifier (for example a Handle,  hdl:1234.5/6) The provider is responsible for
         * Detecting and Processing the appropriate identifier, all Providers are interrogated, multiple providers
         * can process the same identifier.
         *
         * @param context
         * @param dso
         * @param identifier
         * @return
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void register(Context context, DSpaceObject dso, String identifier) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         * Delete (Unbind) all identifiers registered for a specific DSpace item. Identifiers are "unbound" across
         * all providers in no particular order.
         *
         * @param context
         * @param dso
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void delete(Context context, DSpaceObject dso) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         * Used to Delete a Specific Identifier (for example a Handle,  hdl:1234.5/6) The provider is responsible for
         * Detecting and Processing the appropriate identifier, all Providers are interrogated, multiple providers
         * can process the same identifier.
         *
         * @param context
         * @param dso
         * @param identifier
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void delete(Context context, DSpaceObject dso, String identifier) throws AuthorizeException, SQLException, IdentifierException;
    
    }

...