/**
 * 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.sword2;

import org.dspace.content.Bitstream;
import org.dspace.content.Collection;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.swordapp.server.Deposit;
import org.swordapp.server.SwordError;

public interface WorkflowManager
{
	public void retrieveServiceDoc(Context context) throws SwordError, DSpaceSwordException;

	public void listCollectionContents(Context context, Collection collection) throws SwordError, DSpaceSwordException;

	public void createResource(Context context, Collection collection) throws SwordError, DSpaceSwordException;

	public void retrieveContent(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void retrieveBitstream(Context context, Bitstream bitstream) throws SwordError, DSpaceSwordException;

	public void replaceResourceContent(Context context, Item item) throws SwordError, DSpaceSwordException;

    public void replaceBitstream(Context context, Bitstream bitstream) throws SwordError, DSpaceSwordException;

	public void replaceMetadata(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void replaceMetadataAndMediaResource(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void deleteMediaResource(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void deleteBitstream(Context context, Bitstream bitstream) throws SwordError, DSpaceSwordException;

	public void addResourceContent(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void addMetadata(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void deleteItem(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void retrieveStatement(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void modifyState(Context context, Item item) throws SwordError, DSpaceSwordException;

	public void resolveState(Context context, Deposit deposit, DepositResult result, VerboseDescription verboseDescription)
            throws DSpaceSwordException;

	public void resolveState(Context context, Deposit deposit, DepositResult result, VerboseDescription verboseDescription, boolean containerOperation)
            throws DSpaceSwordException;

	
}
