All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dspace.content.service.ItemService Maven / Gradle / Ivy

The newest version!
/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 * http://www.dspace.org/license/
 */
package org.dspace.content.service;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.time.Instant;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;

import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.ResourcePolicy;
import org.dspace.content.Bitstream;
import org.dspace.content.Bundle;
import org.dspace.content.Collection;
import org.dspace.content.Community;
import org.dspace.content.EntityType;
import org.dspace.content.Item;
import org.dspace.content.MetadataValue;
import org.dspace.content.Thumbnail;
import org.dspace.content.WorkspaceItem;
import org.dspace.contentreport.QueryPredicate;
import org.dspace.core.Context;
import org.dspace.discovery.SearchServiceException;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.Group;

/**
 * Service interface class for the Item object.
 * The implementation of this class is responsible for all business logic calls for the Item object and is autowired
 * by spring
 *
 * @author kevinvandevelde at atmire.com
 */
public interface ItemService
        extends DSpaceObjectService, DSpaceObjectLegacySupportService {

    Thumbnail getThumbnail(Context context, Item item, boolean requireOriginal) throws SQLException;

    /**
     * Create a new item, with a new internal ID. Authorization is done
     * inside of this method.
     *
     * @param context       DSpace context object
     * @param workspaceItem in progress workspace item
     * @return the newly created item
     * @throws SQLException       if database error
     * @throws AuthorizeException if authorization error
     */
    Item create(Context context, WorkspaceItem workspaceItem) throws SQLException, AuthorizeException;

    /**
     * Create a new item, with a provided ID. Authorisation is done
     * inside of this method.
     *
     * @param context DSpace context object
     * @param workspaceItem in progress workspace item
     * @param uuid the pre-determined UUID to assign to the new item
     * @return the newly created item
     * @throws SQLException if database error
     * @throws AuthorizeException if authorization error
     */
    Item create(Context context, WorkspaceItem workspaceItem, UUID uuid) throws SQLException, AuthorizeException;

    /**
     * Create an empty template item for this collection. If one already exists,
     * no action is taken. Caution: Make sure you call update on
     * the collection after doing this, or the item will have been created but
     * the collection record will not refer to it.
     *
     * @param context    DSpace context object
     * @param collection Collection (parent)
     * @return empty template item for this collection
     * @throws SQLException       if database error
     * @throws AuthorizeException if authorization error
     */
    Item createTemplateItem(Context context, Collection collection) throws SQLException, AuthorizeException;

    /**
     * Populate the given item with all template item specified metadata.
     *
     * @param context    DSpace context object
     * @param collection Collection (parent)
     * @param template   if true, the item inherits all collection's template item metadata
     * @param item    item to populate with template item specified metadata
     * @throws SQLException       if database error
     */
    public void populateWithTemplateItemMetadata (Context context, Collection collection, boolean template, Item item)
        throws SQLException;

    /**
     * Get all the items in the archive. Only items with the "in archive" flag
     * set are included. The order of the list is indeterminate.
     *
     * @param context DSpace context object
     * @return an iterator over the items in the archive.
     * @throws SQLException if database error
     */
    Iterator findAll(Context context) throws SQLException;

    /**
     * Get all the items in the archive. Only items with the "in archive" flag
     * set are included. The order of the list is indeterminate.
     *
     * @param context DSpace context object
     * @param limit   limit
     * @param offset  offset
     * @return an iterator over the items in the archive.
     * @throws SQLException if database error
     */
    Iterator findAll(Context context, Integer limit, Integer offset) throws SQLException;

    /**
     * Get all "final" items in the archive, both archived ("in archive" flag) or
     * withdrawn items are included. The order of the list is indeterminate.
     *
     * @param context DSpace context object
     * @return an iterator over the items in the archive.
     * @throws SQLException if database error
     */
    @Deprecated Iterator findAllUnfiltered(Context context) throws SQLException;

    /**
     * Find all items that are:
     * - NOT in the workspace
     * - NOT in the workflow
     * - NOT a template item for e.g. a collection
     *
     * This implies that the result also contains older versions of items and withdrawn items.
     * @param context the DSpace context.
     * @return iterator over all regular items.
     * @throws SQLException if database error.
     */
    Iterator findAllRegularItems(Context context) throws SQLException;

    /**
     * Find all the items in the archive by a given submitter. The order is
     * indeterminate. Only items with the "in archive" flag set are included.
     *
     * @param context DSpace context object
     * @param eperson the submitter
     * @return an iterator over the items submitted by eperson
     * @throws SQLException if database error
     */
    Iterator findBySubmitter(Context context, EPerson eperson)
        throws SQLException;

    /**
     * Find all the items by a given submitter. The order is
     * indeterminate. All items are included.
     *
     * @param context DSpace context object
     * @param eperson the submitter
     * @param retrieveAllItems flag to determine if all items should be returned or only archived items.
     *                         If true, all items (regardless of status) are returned.
     *                         If false, only archived items will be returned.
     * @return an iterator over the items submitted by eperson
     * @throws SQLException if database error
     */
    Iterator findBySubmitter(Context context, EPerson eperson, boolean retrieveAllItems)
            throws SQLException;

    /**
     * Retrieve the list of items submitted by eperson, ordered by recently submitted, optionally limitable
     *
     * @param context DSpace context object
     * @param eperson the submitter
     * @param limit   a positive integer to limit, -1 or null for unlimited
     * @return an iterator over the items submitted by eperson
     * @throws SQLException if database error
     */
    Iterator findBySubmitterDateSorted(Context context, EPerson eperson, Integer limit)
        throws SQLException;

    /**
     * Get all the archived items in this collection. The order is indeterminate.
     *
     * @param context    DSpace context object
     * @param collection Collection (parent)
     * @return an iterator over the items in the collection.
     * @throws SQLException if database error
     */
    Iterator findByCollection(Context context, Collection collection) throws SQLException;

    /**
     * Get all the archived items in this collection. The order is indeterminate.
     *
     * @param context    DSpace context object
     * @param collection Collection (parent)
     * @param limit      limited number of items
     * @param offset     offset value
     * @return an iterator over the items in the collection.
     * @throws SQLException if database error
     */
    Iterator findByCollection(Context context, Collection collection, Integer limit, Integer offset)
        throws SQLException;

    /**
     * Get all the archived items mapped to this collection (excludes owning collection). The order is indeterminate.
     *
     * @param context    DSpace context object
     * @param collection Collection (parent)
     * @param limit      limited number of items
     * @param offset     offset value
     * @return an iterator over the items in the collection.
     * @throws SQLException if database error
     */
    Iterator findByCollectionMapping(Context context, Collection collection, Integer limit, Integer offset)
            throws SQLException;

    /**
     * Count all the archived items mapped to this collection (excludes owning collection). The order is indeterminate.
     *
     * @param context    DSpace context object
     * @param collection Collection (parent)
     * @return an iterator over the items in the collection.
     * @throws SQLException if database error
     */
    int countByCollectionMapping(Context context, Collection collection) throws SQLException;

    /**
     * Get all the items (including private and withdrawn) in this collection. The order is indeterminate.
     *
     * @param context DSpace context object
     * @param collection Collection (parent)
     * @return an iterator over the items in the collection.
     * @param limit limited number of items
     * @param offset offset value
     * @throws SQLException if database error
     */
    Iterator findAllByCollection(Context context, Collection collection, Integer limit, Integer offset)
        throws SQLException;

    /**
     * Get all Items installed or withdrawn, discoverable, and modified since a Date.
     *
     * @param context DSpace context object
     * @param since   earliest interesting last-modified date, or null for no date test.
     * @return an iterator over the items in the collection.
     * @throws SQLException if database error
     */
    Iterator findInArchiveOrWithdrawnDiscoverableModifiedSince(Context context, Instant since)
        throws SQLException;

    /**
     * Get all Items installed or withdrawn, NON-discoverable, and modified since a Date.
     * @param context context
     * @param since earliest interesting last-modified date, or null for no date test.
     * @return an iterator over the items in the collection.
     * @throws SQLException if database error
     */
    Iterator findInArchiveOrWithdrawnNonDiscoverableModifiedSince(Context context, Instant since)
        throws SQLException;

    /**
     * Get all the items (including private and withdrawn) in this collection. The order is indeterminate.
     *
     * @param context    DSpace context object
     * @param collection Collection (parent)
     * @return an iterator over the items in the collection.
     * @throws SQLException if database error
     */
    Iterator findAllByCollection(Context context, Collection collection) throws SQLException;

    /**
     * See whether this Item is contained by a given Collection.
     *
     * @param item       item to check
     * @param collection Collection (parent
     * @return true if {@code collection} contains this Item.
     * @throws SQLException if database error
     */
    boolean isIn(Item item, Collection collection) throws SQLException;

    /**
     * Get the communities this item is in. Returns an unordered array of the
     * communities that house the collections this item is in, including parent
     * communities of the owning collections.
     *
     * @param context DSpace context object
     * @param item    item to check
     * @return the communities this item is in.
     * @throws SQLException if database error
     */
    List getCommunities(Context context, Item item) throws SQLException;


    /**
     * Get the bundles matching a bundle name (name corresponds roughly to type)
     *
     * @param item item to check
     * @param name name of bundle (ORIGINAL/TEXT/THUMBNAIL)
     * @return the bundles in an unordered array
     * @throws SQLException if database error
     */
    List getBundles(Item item, String name) throws SQLException;

    /**
     * Add an existing bundle to this item. This has immediate effect.
     *
     * @param context DSpace context object
     * @param item    item to add the bundle to
     * @param bundle  the bundle to add
     * @throws SQLException       if database error
     * @throws AuthorizeException if authorization error
     */
    void addBundle(Context context, Item item, Bundle bundle) throws SQLException, AuthorizeException;

    /**
     * Remove a bundle. This may result in the bundle being deleted, if the
     * bundle is orphaned.
     *
     * @param context DSpace context object
     * @param item    Item
     * @param bundle  the bundle to remove
     * @throws SQLException       if database error
     * @throws AuthorizeException if authorization error
     * @throws IOException        if IO error
     */
    void removeBundle(Context context, Item item, Bundle bundle) throws SQLException, AuthorizeException,
        IOException;

    /**
     * Remove all bundles linked to this item. This may result in the bundle being deleted, if the
     * bundle is orphaned.
     *
     * @param context DSpace context object
     * @param item    the item from which to remove all bundles
     * @throws SQLException       if database error
     * @throws AuthorizeException if authorization error
     * @throws IOException        if IO error
     */
    void removeAllBundles(Context context, Item item) throws AuthorizeException, SQLException, IOException;

    /**
     * Create a single bitstream in a new bundle. Provided as a convenience
     * method for the most common use.
     *
     * @param context DSpace context object
     * @param item    item to create bitstream on
     * @param is      the stream to create the new bitstream from
     * @param name    is the name of the bundle (ORIGINAL, TEXT, THUMBNAIL)
     * @return Bitstream that is created
     * @throws AuthorizeException if authorization error
     * @throws IOException        if IO error
     * @throws SQLException       if database error
     */
    Bitstream createSingleBitstream(Context context, InputStream is, Item item, String name)
        throws AuthorizeException, IOException, SQLException;

    /**
     * Convenience method, calls createSingleBitstream() with name "ORIGINAL"
     *
     * @param context DSpace context object
     * @param item    item to create bitstream on
     * @param is      InputStream
     * @return created bitstream
     * @throws AuthorizeException if authorization error
     * @throws IOException        if IO error
     * @throws SQLException       if database error
     */
    Bitstream createSingleBitstream(Context context, InputStream is, Item item)
        throws AuthorizeException, IOException, SQLException;

    /**
     * Get all non-internal bitstreams in the item. This is mainly used for
     * auditing for provenance messages and adding format.* DC values. The order
     * is indeterminate.
     *
     * @param context DSpace context object
     * @param item    item to check
     * @return non-internal bitstreams.
     * @throws SQLException if database error
     */
    List getNonInternalBitstreams(Context context, Item item) throws SQLException;

    /**
     * Remove just the DSpace license from an item This is useful to update the
     * current DSpace license, in case the user must accept the DSpace license
     * again (either the item was rejected, or resumed after saving)
     * 

* This method is used by the org.dspace.submit.step.LicenseStep class * * @param context DSpace context object * @param item item to remove DSpace license from * @throws SQLException if database error * @throws AuthorizeException if authorization error * @throws IOException if IO error */ void removeDSpaceLicense(Context context, Item item) throws SQLException, AuthorizeException, IOException; /** * Remove all licenses from an item - it was rejected * * @param context DSpace context object * @param item item to remove all licenses from * @throws SQLException if database error * @throws AuthorizeException if authorization error * @throws IOException if IO error */ void removeLicenses(Context context, Item item) throws SQLException, AuthorizeException, IOException; /** * Withdraw the item from the archive. It is kept in place, and the content * and metadata are not deleted, but it is not publicly accessible. * * @param context DSpace context object * @param item item to withdraw * @throws SQLException if database error * @throws AuthorizeException if authorization error */ void withdraw(Context context, Item item) throws SQLException, AuthorizeException; /** * Reinstate a withdrawn item * * @param context DSpace context object * @param item withdrawn item to reinstate * @throws SQLException if database error * @throws AuthorizeException if authorization error */ void reinstate(Context context, Item item) throws SQLException, AuthorizeException; /** * Return true if this Collection 'owns' this item * * @param item item to check * @param collection Collection * @return true if this Collection owns this item */ boolean isOwningCollection(Item item, Collection collection); /** * remove all of the policies for item and replace them with a new list of * policies * * @param context DSpace context object * @param item item to replace policies on * @param newpolicies - * this will be all of the new policies for the item and its * contents * @throws SQLException if database error * @throws AuthorizeException if authorization error */ void replaceAllItemPolicies(Context context, Item item, List newpolicies) throws SQLException, AuthorizeException; /** * remove all of the policies for item's bitstreams and bundles and replace * them with a new list of policies * * @param context DSpace context object * @param item item to replace policies on * @param newpolicies - * this will be all of the new policies for the bundle and * bitstream contents * @throws SQLException if database error * @throws AuthorizeException if authorization error */ void replaceAllBitstreamPolicies(Context context, Item item, List newpolicies) throws SQLException, AuthorizeException; /** * remove all of the policies for item's bitstreams and bundles that belong * to a given Group * * @param context DSpace context object * @param item item to remove group policies from * @param group Group referenced by policies that needs to be removed * @throws SQLException if database error * @throws AuthorizeException if authorization error */ void removeGroupPolicies(Context context, Item item, Group group) throws SQLException, AuthorizeException; /** * Remove all policies on an item and its contents, and replace them with * the DEFAULT_ITEM_READ and DEFAULT_BITSTREAM_READ policies belonging to * the collection. * * @param context DSpace context object * @param item item to reset policies on * @param collection Collection * @throws SQLException if database error * if an SQL error or if no default policies found. It's a bit * draconian, but default policies must be enforced. * @throws AuthorizeException if authorization error */ void inheritCollectionDefaultPolicies(Context context, Item item, Collection collection) throws java.sql.SQLException, AuthorizeException; /** * Remove all submission and workflow policies on an item and its contents, and add * default collection policies which are not yet already in place. * If overrideItemReadPolicies is true, then all read policies on the item are replaced (but only if the * collection has a default read policy). * * @param context DSpace context object * @param item item to reset policies on * @param collection Collection * @param overrideItemReadPolicies if true, all read policies on the item are replaced (but only if the * collection has a default read policy) * @throws SQLException if database error * if an SQL error or if no default policies found. It's a bit * draconian, but default policies must be enforced. * @throws AuthorizeException if authorization error */ void inheritCollectionDefaultPolicies(Context context, Item item, Collection collection, boolean overrideItemReadPolicies) throws java.sql.SQLException, AuthorizeException; /** * Adjust the Bundle and Bitstream policies to reflect what have been defined * during the submission/workflow. The temporary SUBMISSION and WORKFLOW * policies are removed and the policies defined at the item and collection * level are copied and inherited as appropriate. Custom selected Item policies * are copied to the bundle/bitstream only if no explicit custom policies were * already applied to the bundle/bitstream. Collection's policies are inherited * if there are no other policies defined or if the append mode is defined by * the configuration via the core.authorization.installitem.inheritance-read.append-mode property * * @param context DSpace context object * @param item Item to adjust policies on * @param collection Collection * @throws SQLException If database error * @throws AuthorizeException If authorization error */ void adjustBundleBitstreamPolicies(Context context, Item item, Collection collection) throws SQLException, AuthorizeException; /** * Adjust the Bundle and Bitstream policies to reflect what have been defined * during the submission/workflow. The temporary SUBMISSION and WORKFLOW * policies are removed and the policies defined at the item and collection * level are copied and inherited as appropriate. Custom selected Item policies * are copied to the bundle/bitstream only if no explicit custom policies were * already applied to the bundle/bitstream. Collection's policies are inherited * if there are no other policies defined or if the append mode is defined by * the configuration via the core.authorization.installitem.inheritance-read.append-mode property * * @param context DSpace context object * @param item Item to adjust policies on * @param collection Collection * @param replaceReadRPWithCollectionRP if true, all read policies on the item are replaced (but only if the * collection has a default read policy) * @throws SQLException If database error * @throws AuthorizeException If authorization error */ void adjustBundleBitstreamPolicies(Context context, Item item, Collection collection, boolean replaceReadRPWithCollectionRP) throws SQLException, AuthorizeException; /** * Adjust the Bitstream policies to reflect what have been defined * during the submission/workflow. The temporary SUBMISSION and WORKFLOW * policies are removed and the policies defined at the item and collection * level are copied and inherited as appropriate. Custom selected Item policies * are copied to the bitstream only if no explicit custom policies were * already applied to the bitstream. Collection's policies are inherited * if there are no other policies defined or if the append mode is defined by * the configuration via the core.authorization.installitem.inheritance-read.append-mode property * * @param context DSpace context object * @param item Item to adjust policies on * @param collection Collection * @param bitstream Bitstream to adjust policies on * @throws SQLException If database error * @throws AuthorizeException If authorization error */ void adjustBitstreamPolicies(Context context, Item item, Collection collection, Bitstream bitstream) throws SQLException, AuthorizeException; /** * Adjust the Bitstream policies to reflect what have been defined * during the submission/workflow. The temporary SUBMISSION and WORKFLOW * policies are removed and the policies defined at the item and collection * level are copied and inherited as appropriate. Custom selected Item policies * are copied to the bitstream only if no explicit custom policies were * already applied to the bitstream. Collection's policies are inherited * if there are no other policies defined or if the append mode is defined by * the configuration via the core.authorization.installitem.inheritance-read.append-mode property * * @param context DSpace context object * @param item Item to adjust policies on * @param collection Collection * @param bitstream Bitstream to adjust policies on * @param replaceReadRPWithCollectionRP If true, all read policies on the bitstream are replaced (but only if the * collection has a default read policy) * @throws SQLException If database error * @throws AuthorizeException If authorization error */ void adjustBitstreamPolicies(Context context, Item item, Collection collection, Bitstream bitstream, boolean replaceReadRPWithCollectionRP) throws SQLException, AuthorizeException; /** * Adjust the Item's policies to reflect what have been defined during the * submission/workflow. The temporary SUBMISSION and WORKFLOW policies are * removed and the default policies defined at the collection level are * inherited as appropriate. Collection's policies are inherited if there are no * other policies defined or if the append mode is defined by the configuration * via the core.authorization.installitem.inheritance-read.append-mode property * * @param context DSpace context object * @param item Item to adjust policies on * @param collection Collection * @throws SQLException If database error * @throws AuthorizeException If authorization error */ void adjustItemPolicies(Context context, Item item, Collection collection) throws SQLException, AuthorizeException; /** * Adjust the Item's policies to reflect what have been defined during the * submission/workflow. The temporary SUBMISSION and WORKFLOW policies are * removed and the default policies defined at the collection level are * inherited as appropriate. Collection's policies are inherited if there are no * other policies defined or if the append mode is defined by the configuration * via the core.authorization.installitem.inheritance-read.append-mode property * * @param context DSpace context object * @param item Item to adjust policies on * @param collection Collection * @param replaceReadRPWithCollectionRP If true, all read policies on the item are replaced (but only if the * collection has a default read policy) * @throws SQLException If database error * @throws AuthorizeException If authorization error */ void adjustItemPolicies(Context context, Item item, Collection collection, boolean replaceReadRPWithCollectionRP) throws SQLException, AuthorizeException; /** * Moves the item from one collection to another one * * @param context DSpace context object * @param item item to move * @param from Collection to move from * @param to Collection to move to * @throws SQLException if database error * @throws AuthorizeException if authorization error * @throws IOException if IO error */ void move(Context context, Item item, Collection from, Collection to) throws SQLException, AuthorizeException, IOException; /** * Moves the item from one collection to another one * * @param context DSpace context object * @param item item to move * @param from Collection to move from * @param to Collection to move to * @param inheritDefaultPolicies whether to inherit policies from new collection * @throws SQLException if database error * @throws AuthorizeException if authorization error * @throws IOException if IO error */ void move(Context context, Item item, Collection from, Collection to, boolean inheritDefaultPolicies) throws SQLException, AuthorizeException, IOException; /** * Check the bundle ORIGINAL to see if there are any uploaded files * * @param item item to check * @return true if there is a bundle named ORIGINAL with one or more * bitstreams inside * @throws SQLException if database error */ boolean hasUploadedFiles(Item item) throws SQLException; /** * Get the collections this item is not in. * * @param context DSpace context object * @param item item to check * @return the collections this item is not in, if any. * @throws SQLException if database error */ List getCollectionsNotLinked(Context context, Item item) throws SQLException; /** * return TRUE if context's user can edit item, false otherwise * * @param context DSpace context object * @param item item to check * @return boolean true = current user can edit item * @throws SQLException if database error */ boolean canEdit(Context context, Item item) throws java.sql.SQLException; /** * return TRUE if context's user can create new version of the item, false * otherwise. * * @param context DSpace context object * @param item item to check * @return boolean true = current user can create new version of the item * @throws SQLException if database error */ boolean canCreateNewVersion(Context context, Item item) throws SQLException; /** * Returns an iterator of in archive items possessing the passed metadata field, or only * those matching the passed value, if value is not Item.ANY * * @param context DSpace context object * @param schema metadata field schema * @param element metadata field element * @param qualifier metadata field qualifier * @param value field value or Item.ANY to match any value * @return an iterator over the items matching that authority value * @throws SQLException if database error * @throws AuthorizeException if authorization error */ Iterator findArchivedByMetadataField(Context context, String schema, String element, String qualifier, String value) throws SQLException, AuthorizeException; /** * Returns an iterator of in archive items possessing the passed metadata field, or only * those matching the passed value, if value is not Item.ANY * * @param context DSpace context object * @param metadataField metadata * @param value field value or Item.ANY to match any value * @return an iterator over the items matching that authority value * @throws SQLException if database error * @throws AuthorizeException if authorization error */ Iterator findArchivedByMetadataField(Context context, String metadataField, String value) throws SQLException, AuthorizeException; /** * Returns an iterator of Items possessing the passed metadata field, or only * those matching the passed value, if value is not Item.ANY * * @param context DSpace context object * @param schema metadata field schema * @param element metadata field element * @param qualifier metadata field qualifier * @param value field value or Item.ANY to match any value * @return an iterator over the items matching that authority value * @throws SQLException if database error * @throws AuthorizeException if authorization error * @throws IOException if IO error */ Iterator findByMetadataField(Context context, String schema, String element, String qualifier, String value) throws SQLException, AuthorizeException, IOException; /** * Returns a list of items that match the given predicates, within the * specified collections, if any. This querying method is used by the * Filtered Items report functionality. * @param context DSpace context object * @param queryPredicates metadata field predicates * @param collectionUuids UUIDs of the collections to search * @param offset position in the list to start returning items * @param limit maximum number of items to return * @return a list of matching items in the specified collections, * or in any collection if no collection UUIDs are provided * @throws SQLException if a database error occurs */ List findByMetadataQuery(Context context, List queryPredicates, List collectionUuids, long offset, int limit) throws SQLException; /** * Returns the total number of items that match the given predicates, within the * specified collections, if any. This querying method is used for pagination by the * Filtered Items report functionality. * @param context DSpace context object * @param queryPredicates metadata field predicates * @param collectionUuids UUIDs of the collections to search * @return the total number of matching items in the specified collections, * or in any collection if no collection UUIDs are provided * @throws SQLException if a database error occurs */ long countForMetadataQuery(Context context, List queryPredicates, List collectionUuids) throws SQLException; /** * Find all the items in the archive with a given authority key value * in the indicated metadata field. * * @param context DSpace context object * @param schema metadata field schema * @param element metadata field element * @param qualifier metadata field qualifier * @param value the value of authority key to look for * @return an iterator over the items matching that authority value * @throws SQLException if database error * @throws AuthorizeException if authorization error * @throws IOException if IO error */ Iterator findByAuthorityValue(Context context, String schema, String element, String qualifier, String value) throws SQLException, AuthorizeException; Iterator findByMetadataFieldAuthority(Context context, String mdString, String authority) throws SQLException, AuthorizeException; /** * Service method for knowing if this Item should be visible in the item list. * Items only show up in the "item list" if the user has READ permission * and if the Item isn't flagged as unlisted. * * @param context DSpace context object * @param item item * @return true or false */ boolean isItemListedForUser(Context context, Item item); /** * counts items in the given collection * * @param context DSpace context object * @param collection Collection * @return total items * @throws SQLException if database error */ int countItems(Context context, Collection collection) throws SQLException; /** * counts all items in the given collection including withdrawn items * * @param context DSpace context object * @param collection Collection * @return total items * @throws SQLException if database error */ int countAllItems(Context context, Collection collection) throws SQLException; /** * Find all Items modified since a Date. * * @param context DSpace context object * @param last Earliest interesting last-modified date. * @return iterator over items * @throws SQLException if database error */ Iterator findByLastModifiedSince(Context context, Instant last) throws SQLException; /** * counts items in the given community * * @param context DSpace context object * @param community Community * @return total items * @throws SQLException if database error */ int countItems(Context context, Community community) throws SQLException; /** * counts all items in the given community including withdrawn * * @param context DSpace context object * @param community Community * @return total items * @throws SQLException if database error */ int countAllItems(Context context, Community community) throws SQLException; /** * counts all items * * @param context DSpace context object * @return total items * @throws SQLException if database error */ int countTotal(Context context) throws SQLException; /** * counts all items not in archive * * @param context DSpace context object * @return total items NOT in archive * @throws SQLException if database error */ int countNotArchivedItems(Context context) throws SQLException; /** * counts all items in archive * * @param context DSpace context object * @return total items in archive * @throws SQLException if database error */ int countArchivedItems(Context context) throws SQLException; /** * counts all withdrawn items * * @param context DSpace context object * @return total items withdrawn * @throws SQLException if database error */ int countWithdrawnItems(Context context) throws SQLException; /** * finds all items for which the current user has editing rights * @param context DSpace context object * @param offset page offset * @param limit page size limit * @return list of items for which the current user has editing rights * @throws SQLException * @throws SearchServiceException */ List findItemsWithEdit(Context context, int offset, int limit) throws SQLException, SearchServiceException; /** * counts all items for which the current user has editing rights * @param context DSpace context object * @return list of items for which the current user has editing rights * @throws SQLException * @throws SearchServiceException */ int countItemsWithEdit(Context context) throws SQLException, SearchServiceException; /** * Check if the supplied item is an inprogress submission * * @param context DSpace context object * @param item item to check * @return true if the item is linked to a workspaceitem or workflowitem * @throws SQLException if database error */ boolean isInProgressSubmission(Context context, Item item) throws SQLException; /** * Get metadata for the DSpace Object in a chosen schema. * See MetadataSchema for more information about schemas. * Passing in a null value for qualifier * or lang only matches metadata fields where that * qualifier or languages is actually null. * Passing in DSpaceObject.ANY * retrieves all metadata fields with any value for the qualifier or * language, including null *

* Examples: *

* Return values of the unqualified "title" field, in any language. * Qualified title fields (e.g. "title.uniform") are NOT returned: *

* dspaceobject.getMetadataByMetadataString("dc", "title", null, DSpaceObject.ANY ); *

* Return all US English values of the "title" element, with any qualifier * (including unqualified): *

* dspaceobject.getMetadataByMetadataString("dc, "title", DSpaceObject.ANY, "en_US" ); *

* The ordering of values of a particular element/qualifier/language * combination is significant. When retrieving with wildcards, values of a * particular element/qualifier/language combinations will be adjacent, but * the overall ordering of the combinations is indeterminate. * * If enableVirtualMetadata is set to false, the virtual metadata will not be included * * @param item Item * @param schema the schema for the metadata field. Must match * the name of an existing metadata schema. * @param element the element name. DSpaceObject.ANY matches any * element. null doesn't really make sense as all * metadata must have an element. * @param qualifier the qualifier. null means unqualified, and * DSpaceObject.ANY means any qualifier (including * unqualified.) * @param lang the ISO639 language code, optionally followed by an underscore * and the ISO3166 country code. null means only * values with no language are returned, and * DSpaceObject.ANY means values with any country code or * no country code are returned. * @param enableVirtualMetadata * Enables virtual metadata calculation and inclusion from the * relationships. * @return metadata fields that match the parameters */ List getMetadata(Item item, String schema, String element, String qualifier, String lang, boolean enableVirtualMetadata); /** * Retrieve the label of the entity type of the given item. * @param item the item. * @return the label of the entity type, taken from the item metadata, or null if not found. */ String getEntityTypeLabel(Item item); /** * Retrieve the entity type of the given item. * @param context the DSpace context. * @param item the item. * @return the entity type of the given item, or null if not found. */ EntityType getEntityType(Context context, Item item) throws SQLException; /** * Check whether the given item is the latest version. If the latest item cannot * be determined, because either the version history or the latest version is * not present, assume the item is latest. * @param context the DSpace context. * @param item the item that should be checked. * @return true if the item is the latest version, false otherwise. */ public boolean isLatestVersion(Context context, Item item) throws SQLException; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy