package com.k_int.discover.service.dtoHandler;

import java.util.List;

import com.k_int.aggregator.core.DepositResult;
import com.k_int.aggregator.dto.AggregatorCollectionDTO;
import com.k_int.aggregator.dto.AggregatorSourceDTO;

public interface DTODocumentHandlerPlugin {

  public DTOProcessingResult process(com.k_int.aggregator.core.DepositResult deposit_result,
          Object 						objectDTO,
          String 						depositor_id,    	// The user / system making the deposit	
          AggregatorSourceDTO 			source_dto,        	// The actual owner this deposit is on behalf of
          String 						root_namespace, 	// Namespace of the root element
          Boolean 						authoritative,
          long 							options,			// Options to drive the handler - whether to cache thumbnails, compute checksums, etc.
  		  List<AggregatorCollectionDTO> collectionList, 	// The list of collections that the resource is in
  		  Long 							resourceId);

	public DTOProcessingResult process(DepositResult deposit_result,
            Object resourceDTO,
            String depositor_id,
            AggregatorSourceDTO source_dto,
            String root_namespace,
            Boolean authoritative,
            long options,
            List<AggregatorCollectionDTO> collectionList,
            Long resourceId,
            String itemStoreURL);
	/**
	 * Identify the type of dto handler being used
	 * @return The type of dto handler being used
	 */
	public String identify();
	
	/**
	 * Retrieve the list of supported content types
	 * @return The list of supported content types
	 */
	public String[] getSupportedContentTypes();

}
