Date: Thu, 28 Mar 2024 07:23:07 -0400 (EDT) Message-ID: <519403960.27483.1711624987639@lyrasis1-roc-mp1> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_27482_624469155.1711624987639" ------=_Part_27482_624469155.1711624987639 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Together with the Item Level Versioning an Identifier Service was introduced that ma= ke it possible to integrate new Identifiers. Currently the Identifier Servi= ce is used for Items only, but this may be changed in future versions of DS= pace. Identifiers used for different versions are an very important point a= s part of an versioning strategy. The following documentation describes the= Identifier Service in the context of Item Level Versioning, nevertheless t= he Identifier Service is also used for Items when the Item Level Versioning= is switched off.
DSpace Item Versioning is encapsulated as an Extensible Service that may= be reimplemented by the local repository maintainers to produce alternate = versioning behaviors and Identifier Schemes. Versioning Services layer= on top of IdentifierServices dedicated to Encoding, Resolution, Minting an= d Registration of Identifiers for specific DSpace Items. It is through this= highly extensible layering of functionality where local dev= elopers can alter the versioning behavior and introduce their own local enh= ancements. The DSpace Service Manager, based on the Spring Framework,= provides the key leverage for this flexibility.
=
The Versioning Service will be responsible for the replication = of one or more Items when a new version is requested. The new version= will not yet be preserved in the Repository, it will be preserved when the= databases transactional window is completed, thus when errors arise in the= versioning process, the database will be properly kept in its ori= ginal state and the application will alert that an exception has occur= red that is in need of correction.
The Versioning Service will rely on a gener= ic IdentifierService that is described below for minting and regis= tering any identifiers that are required to track the revision hi= story of the Items.
public = interface VersioningService { Version createNewVersion(Context c, int itemId); Version createNewVersion(Context c, int itemId, String summary); void removeVersion(Context c, int versionID); void removeVersion(Context c, Item item); Version getVersion(Context c, int versionID); Version restoreVersion(Context c, int versionID); Version restoreVersion(Context c, int versionID, String summary); VersionHistory findVersionHistory(Context c, int itemId); Version updateVersion(Context c, int itemId, String summary); Version getVersion(Context c, Item item); }
The Identifier Service maintains an extensible set of IdentifierProv= ider services that are responsible for two important activities in Ide= ntifier management:
Registering: Registering is the act of recording the existence of a = minted identifier with an external persistent reso= lver service. These services may reside on the local machine (HandleM= anager) or exist as external services (PURL or EZID DOI registration servic= es)
public = interface IdentifierService { /** * * @param context * @param dso * @param identifier * @return */ String lookup(Context context, DSpaceObject dso, Class<? extends Ide= ntifier> identifier); /** * * This will resolve a DSpaceObject based on a provided Identifier. Th= e Service will interrogate the providers in * no particular order and return the first successful result discovere= d. 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 Identif= ierNotFoundException, 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 AuthorizeExcepti= on, SQLException, IdentifierException; /** * * Used to Reserve a Specific Identifier (for example a Handle, hdl:12= 34.5/6) The provider is responsible for * Detecting and Processing the appropriate identifier, all Providers a= re 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) thro= ws 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 AuthorizeExcept= ion, SQLException, IdentifierException; /** * * Used to Register a Specific Identifier (for example a Handle, hdl:1= 234.5/6) The provider is responsible for * Detecting and Processing the appropriate identifier, all Providers a= re 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) thr= ows AuthorizeException, SQLException, IdentifierException; /** * Delete (Unbind) all identifiers registered for a specific DSpace ite= m. 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 AuthorizeExceptio= n, SQLException, IdentifierException; /** * Used to Delete a Specific Identifier (for example a Handle, hdl:123= 4.5/6) The provider is responsible for * Detecting and Processing the appropriate identifier, all Providers a= re 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) throw= s AuthorizeException, SQLException, IdentifierException; }