/**
* 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.sword;
import org.dspace.content.DSpaceObject;
import org.purl.sword.base.Deposit;
import org.purl.sword.base.SWORDErrorException;
/**
* @author Richard Jones
*
* Abstract class for depositing content into the archive.
*/
public abstract class Depositor
{
/**
* The SWORD service implementation
*/
protected SWORDService swordService;
/**
* Construct a new Depositor with the given SWORD service on the given
* dspace object. It is anticipated that extensions of this class will
* specialise in certain kinds of dspace object
*
* @param swordService
* SWORD service
* @param dso
* DSpace object
*/
public Depositor(SWORDService swordService, DSpaceObject dso)
{
this.swordService = swordService;
}
/**
* Execute the deposit process with the given SWORD deposit.
*
* @param deposit
* deposit request
* @return deposit result
* @throws SWORDErrorException on generic SWORD exception
* @throws DSpaceSWORDException
* can be thrown by the internals of the DSpace SWORD implementation
*/
public abstract DepositResult doDeposit(Deposit deposit)
throws SWORDErrorException, DSpaceSWORDException;
/**
* Undo any changes to the archive effected by the deposit
*
* @param result
* deposit result
* @throws DSpaceSWORDException
* can be thrown by the internals of the DSpace SWORD implementation
*/
public abstract void undoDeposit(DepositResult result)
throws DSpaceSWORDException;
}