/**
 * IPartnerManagement.java
 * Created on May 13, 2008
 * (C) Copyright TANDBERG Television Ltd.
 */
package com.tandbergtv.watchpoint.pmm.partner;

import java.util.List;
import java.util.Set;

import com.tandbergtv.watchpoint.pmm.entities.Partner;
import com.tandbergtv.watchpoint.pmm.util.DataOperationException;
import com.tandbergtv.workflow.util.SearchCriteria;

/**
 * @author Vlada Jakobac
 * 
 */
public interface IPartnerManagement {

	/**
	 * Method to get all the matched Partners for the given criteria
	 * 
	 * @param searchCriteria
	 *            The SearchCriteria used to sort and filter the list of Partners
	 * 
	 * @return The list of Partners
	 * 
	 */
	List<Partner> getPartnersBySearchCriteria(SearchCriteria searchCriteria);

	Partner createPartner(Partner partner);

	Partner getPartner(long partnerId);

	boolean deletePartner(long partnerId) throws DataOperationException;
	
	List<Partner> getAllActivePartners();

	Partner updatePartner(Partner partner);
	
	Partner getSourcePartner(String providerId);
	
	Set<Partner> getAllPartnersAssociatedWithService(long contextId);

	int getTotalActivePartnerCount();
}
